public class MyFilter implements javax.servlet.Filter { 2 /** 3 * 初始化 4 */ 5 @Override 6 public void init(FilterConfig arg0) throws ServletException { 7 } 8 /** 9 * 销毁 10 */ 11 @Override 12 public void destroy() { 13 } 14 /** 15 * 过滤 16 */ 17 @Override 18 public void doFilter(ServletRequest arg0, ServletResponse arg1, 19 FilterChain arg2) throws IOException, ServletException { 20 arg0.setCharacterEncoding("utf-8"); //设置request对象的字符集格式 21 arg2.doFilter(arg0, arg1); //继续执行 请求 22 } 23 }
这个是Filter实体的代码,在web.xml文件中我们需要对其需要拦截的请求配置监听范围,或者说过滤哪些url。
<filter> 2 <filter-name>myfilter</filter-name> 3 <filter-class>com.mine.test.MyFilter</filter-class> 4 </filter> 5 <filter-mapping> 6 <filter-name>myfilter</filter-name> 7 <url-pattern>/*</url-pattern> <!--配置过滤的范围 后缀符合即过滤 此处为全部过滤--> 8 </filter-mapping>
2. 拦截器 我们使用struts预定义过的拦截器时只需要做相应的配置即可,大多数常用的都会在default中有定义,而在struts.xml中不写就默认使用这个default。当我们自己创建了一个Intercepter对象时我们需要对其进行配置,具体配置的方法这里就不赘述了,戳此处 <a>http://www.blogjava.net/brock/archive/2009/08/20/291919.html</a> 。拦截器中有三个基本的方法对应其生命周期。
a.初始化 b.执行拦截 c.销毁。针对action请求进行处理,脱离了servlet API,不处理一般的url请求。
3. Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。主要是在服务器启动时加载
主要作用是:做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。
package com.lzw.filter.demo; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class InitDataListener implements ServletContextListener { private static ServletContext servletContext; public static ServletContext getServletContext() { return servletContext; } @Override public void contextInitialized(ServletContextEvent contextEvent) { servletContext = contextEvent.getServletContext(); //final ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext); System.out.println("服务器启动完毕!"); System.out.println(servletContext); } @Override public void contextDestroyed(ServletContextEvent sce) {} }web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <listener> <listener-class>com.lzw.filter.demo.InitDataListener</listener-class> </listener> </web-app>
信息: Starting service Catalina 2013-10-31 15:13:55 org.apache.catalina.core.StandardEngine startInternal 信息: Starting Servlet Engine: Apache Tomcat/7.0.42 服务器启动完毕! org.apache.catalina.core.ApplicationContextFacade@7966340c 2013-10-31 15:13:56 org.apache.coyote.AbstractProtocol start 信息: Starting ProtocolHandler ["http-apr-8080"] 2013-10-31 15:13:56 org.apache.coyote.AbstractProtocol start 信息: Starting ProtocolHandler ["ajp-apr-8009"] 2013-10-31 15:13:56 org.apache.catalina.startup.Catalina start 信息: Server startup in 402 ms