Servlet的学习路线
1、 创建Servlet
2、 Servlet的相关配置
3、 Servlet的生命周期
4、 HttpServletRequest接口
5、 HttpServletResponse接口
6、 HttpSession接口
7、 Filter、Listener接口
Servlet的相关配置
1、 创建Servlet extends HttpServlet
2、 配置Serlvet
第1种配置方式: web.xml,web.xml不仅能配置Servlet信息,还可以配置欢迎页面,错误页面,其他的配置。
第2种配置方式: 注解(Annotation)
@WebServlet( name = "", urlPatterns = {} )
urlPattern的配置规则:
1. 精确路径匹配
[例] /user/register.do
2. 模糊路径匹配
[例] /user/*
3. 扩展名匹配
[例] *.do
4. 默认匹配
[例] /
问: 如果一个Request URL能匹配多个urlPattern, 执行哪个对应的Servlet?
以优先级为依据: 精确路径 > 模糊路径 > 扩展名路径 > 默认路径
Servlet类型层次结构
Servlet对象的常见方法剖析
String getServletName(); 获取Servlet对象的名称
ServletContext getServletContext(); //获取Servlet对象的容器(作用于整个项目)Servlet容器,它的生命周期最长,随着tomcat的启动而产生,关闭而销毁、更新销毁。
setAttribute(key,value); 向容器中存储数据
getAttribute(key); 从容器获取数据
String getInitParameter(String var1); //获取(ServletContenxt容器,全局参数也可以获取)的初始参数值
Enumeration getInitParameterNames(); //获取初始参数的名称
ServletConfig getServletConfig(); //获取配置文件的信息还可以调用父容器
使用HttpServletRequest获取请求信息
getParameter( String parameterName ) : String
getParameterValues( String parameterName ) : String[]
注意: 参数parameterName往往是表单元素的name属性.
中文乱码解决方案:
1. 通过QueryString传递中文数据时
修改tomcat/conf/server.xml ->
或在程序中直接对String进行转码操作
userName = new String(userName.getBytes("ISO-8859-1"), "UTF-8");
2. 通过请求体传递中文数据时
request.setCharacterEncoding("UTF-8");
Servlet生命周期:
自tomcat启动以来, 首次请求某Servlet时:
1. 容器调用构造器实例化该Servlet
2. 调用init()初始化该Servlet
3. 调用该Servlet的service()处理请求
3.1 如果该请求的Method是GET: 调用doGet()
3.2 如果该请求的Method是POST: 调用doPost()
第N(N>=2)次请求该Servlet时,执行上面的第3步
tomcat stop或update时:
4. 调用该Servlet的destroy()销毁实例
最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收。