1 在web.xml文件中配置Servlet
1.1 在web.xml文件中
1.1.1 必须配置的内容 告诉JSP/Servlet容器, 这个Servlet的名字和类的全名:
[code]
<servlet>
<servlet-name>helloWorld</servlet-name>
<servlet-class>servlet.HelloWorldServlet</servlet-class>
</servlet>
[/code]
1.1.2 可选的配置内容 告诉JSP/Servlet容器, 通过什么样的URI访问这个Servlet 可以映射为任何形式
映射为hello.jsp
[code]
<servlet-mapping>
<servlet-name>helloWorld</servlet-name>
<url-pattern>/hello.jsp</url-pattern>
</servlet-mapping>
//映射为通配符形式
<servlet-mapping>
<servlet-name>helloWorld</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
[/code]
1.1.3 访问:使用在web.xml定义的uri
2 配置Tomcat中的manager:
tomcat目录下conf文件夹下---tomcat-users.xml文件增加:
[code]
<user username="admin" password="admin" roles="manager"/>
[/code]
3 Servlet的状态
[img]http://120.img.pp.sohu.com/images/2007/12/7/20/19/11750c44cab.jpg[/img]
• 未加载状态: Servlet类的字节码未加载到JSP/Servlet容器中;
• 加载状态: Servlet类字节码加载到JSP/Servlet容器中;
• 初始化状态: 加载Servlet后, 执行Servlet的init方法, 仅在加载后执行一次;
• 工作状态: 处理对Servlet的请求, 并生成响应;
• 结束状态: 卸载(返回到未加载状态)Servlet前, 调用Servlet的destroy方法, 仅在卸载前执行一次;
4 Web应用启动时对Servlet初始化
4.1 覆盖Servlet的init方法
4.2 修改web.xml中调用Servlet的优先级
[code]
<servlet>
<servlet-name>helloWorld</servlet-name>
<servlet-class>servlet.HelloWorldServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
[/code]
0的优先级最高
5 Servlet实现MVC
见JSP中实现MVC
6 Filter的应用
6.1 实现javax.servlet.Filter接口
6.2 实现主要方法doFilter
例:
[code]
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("处理Servlet之前运行.");
chain.doFilter(request, response);
System.out.println("处理Servlet之后运行.");
}
[/code]
6.3 其他方法: init和destroy方法, 和Servlet类似, 处理Filter生命周期的初始化和结束状态
6.4 和servlet类似, 必须在web.xml配置方可生效
[code]
<filter>
<filter-name>simpleFilter</filter-name>
<filter-class>filter.SimpleFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>simpleFilter</filter-name>
<url-pattern>/simple_filter_1.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>simpleFilter</filter-name>
<url-pattern>/simple_filter_2.jsp</url-pattern>
</filter-mapping>
[/code]
filter可以配置多个url, 或者也可以使用通配符配置:
6.5 Filter示意图
[img]http://120.img.pp.sohu.com/images/2007/12/7/20/19/11750c440ef.jpg[/img]
一个HTTP请求发出后,首先被Frlter的拦截,执行chain方法前的语句,执行之后执行chain方法,调用JSP页面,当JSP页面响应HTTP请求时,在回传请求过程中,再次被Frlter拦截,并执行chain后语句,然后继续将响应传回浏览器,浏览器接到响应展示给使用者。中间的Filter与浏览器和JSP页面均无响应联系,且浏览器与JSP对Filter的存在毫不知情。
6.6 可用Filter解决编码问题和动态页面缓存问题
例:
[code]
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
httpServletResponse.addHeader("pragma", "no-cache");
httpServletResponse.addHeader("cache-control", "no-cache");
httpServletResponse.addHeader("expires", "0");
[/code]
1.1 在web.xml文件中
1.1.1 必须配置的内容 告诉JSP/Servlet容器, 这个Servlet的名字和类的全名:
[code]
<servlet>
<servlet-name>helloWorld</servlet-name>
<servlet-class>servlet.HelloWorldServlet</servlet-class>
</servlet>
[/code]
1.1.2 可选的配置内容 告诉JSP/Servlet容器, 通过什么样的URI访问这个Servlet 可以映射为任何形式
映射为hello.jsp
[code]
<servlet-mapping>
<servlet-name>helloWorld</servlet-name>
<url-pattern>/hello.jsp</url-pattern>
</servlet-mapping>
//映射为通配符形式
<servlet-mapping>
<servlet-name>helloWorld</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
[/code]
1.1.3 访问:使用在web.xml定义的uri
2 配置Tomcat中的manager:
tomcat目录下conf文件夹下---tomcat-users.xml文件增加:
[code]
<user username="admin" password="admin" roles="manager"/>
[/code]
3 Servlet的状态
[img]http://120.img.pp.sohu.com/images/2007/12/7/20/19/11750c44cab.jpg[/img]
• 未加载状态: Servlet类的字节码未加载到JSP/Servlet容器中;
• 加载状态: Servlet类字节码加载到JSP/Servlet容器中;
• 初始化状态: 加载Servlet后, 执行Servlet的init方法, 仅在加载后执行一次;
• 工作状态: 处理对Servlet的请求, 并生成响应;
• 结束状态: 卸载(返回到未加载状态)Servlet前, 调用Servlet的destroy方法, 仅在卸载前执行一次;
4 Web应用启动时对Servlet初始化
4.1 覆盖Servlet的init方法
4.2 修改web.xml中调用Servlet的优先级
[code]
<servlet>
<servlet-name>helloWorld</servlet-name>
<servlet-class>servlet.HelloWorldServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
[/code]
0的优先级最高
5 Servlet实现MVC
见JSP中实现MVC
6 Filter的应用
6.1 实现javax.servlet.Filter接口
6.2 实现主要方法doFilter
例:
[code]
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("处理Servlet之前运行.");
chain.doFilter(request, response);
System.out.println("处理Servlet之后运行.");
}
[/code]
6.3 其他方法: init和destroy方法, 和Servlet类似, 处理Filter生命周期的初始化和结束状态
6.4 和servlet类似, 必须在web.xml配置方可生效
[code]
<filter>
<filter-name>simpleFilter</filter-name>
<filter-class>filter.SimpleFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>simpleFilter</filter-name>
<url-pattern>/simple_filter_1.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>simpleFilter</filter-name>
<url-pattern>/simple_filter_2.jsp</url-pattern>
</filter-mapping>
[/code]
filter可以配置多个url, 或者也可以使用通配符配置:
6.5 Filter示意图
[img]http://120.img.pp.sohu.com/images/2007/12/7/20/19/11750c440ef.jpg[/img]
一个HTTP请求发出后,首先被Frlter的拦截,执行chain方法前的语句,执行之后执行chain方法,调用JSP页面,当JSP页面响应HTTP请求时,在回传请求过程中,再次被Frlter拦截,并执行chain后语句,然后继续将响应传回浏览器,浏览器接到响应展示给使用者。中间的Filter与浏览器和JSP页面均无响应联系,且浏览器与JSP对Filter的存在毫不知情。
6.6 可用Filter解决编码问题和动态页面缓存问题
例:
[code]
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
httpServletResponse.addHeader("pragma", "no-cache");
httpServletResponse.addHeader("cache-control", "no-cache");
httpServletResponse.addHeader("expires", "0");
[/code]