一、JSP是什么
JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术
JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。
二、关于Filter
1、什么是Filter
它使用户可以改变一个 request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在离开 servlet时处理response。
一个Filter包括:
1)、在servlet被调用之前截获;
2)、在servlet被调用之前检查servlet request;
3)、根据需要修改request头和request数据;
2、如何借助Filter实现拦截功能
编写java类实现Filter接口,并实现其doFilter方法。
在web.xml文件中对编写的filter类进行注册,并设置它所能拦截的资源
Filter接口的doFilter方法,当开发人员编写好Filter,并配置对哪个web资源进行拦截后,Web服务器每次在调用web资源的service方法之前,都会先调用一下filter的doFilter方法
3、web.xml配置各节点介绍
<filter> <!-- 指定一个过滤器 -->
<filter-name>TestFilter</filter-name> <!-- 过滤器名字 -->
<filter-class>TestFilter</filter-class> <!-- 指定过滤器的完整的限定类名 -->
<init-param> <!-- 过滤器指定初始化参数 -->
<param-name>islogin</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping><!-- 设置一个Filter所负责拦截的资源-->
<filter-name>TestFilter</filter-name> <!-- 过滤器名字,和上面的一致 -->
<url-pattern>/*</url-pattern> <!-- 设置 filter 所拦截的请求路径 -->
<servlet-name>TestServlet</servlet-name><!-- 设置 filter 所拦截的Servlet名称。 -->
</filter-mapping>
三、创建一个Filter过滤器
@WebFilter(filterName = "TestFilter")
public class TestFilter implements Filter {
//初始化配置参数,在doFilter()方法之前被调用
public void init(FilterConfig config) throws ServletException {
}
//该方法在客户端请求及服务器端回复时都将被自动调用
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws ServletException, IOException {
chain.doFilter(req, resp);
}
//结束过滤器,doFilter()方法完成后被调用
public void destroy() {
}
FilterConfig接口
用户在配置filter时,可以使用为filter配置一些初始化参数,当web容器实例化Filter对象,调用其init方法时,会把封装了filter初始化参数的filterConfig对象传递进来。因此开发人员在编写filter时,通过filterConfig对象的方法,就可获得以下内容:
String getFilterName();//得到filter的名称。
String getInitParameter(String name);//返回在部署描述中指定名称的初始化参数的值。如果不存在返回null.
Enumeration getInitParameterNames();//返回过滤器的所有初始化参数的名字的枚举集合。
public ServletContext getServletContext();//返回Servlet上下文对象的引用。