1.过滤器:顾名思义就是过滤请求内容的,所谓的过滤就是我们可以获得request对象中的值进行一系列的判断或者其他的操作。我们可以使其字符集编码格式改变等。具体的示例代码看下面的例子。
控制台结果:
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