jsp 过滤器 doFilter

简介: 引用:http://blog.csdn.net/huangcongjie/article/details/7377422 他的作用是将请求转发给过滤器链上下一个对象。这里的“下”指的是哪里 ? 指的是下一个filter,如果没有filter那就是你请求的资源。

引用:http://blog.csdn.net/huangcongjie/article/details/7377422

他的作用是将请求转发给过滤器链上下一个对象。这里的“下”指的是哪里 ?

指的是下一个filter,如果没有filter那就是你请求的资源。

 

 

一般filter都是一个链,web.xml 里面配置了几个就有几个。一个一个的连在一起 

request -> filter1 -> filter2 ->filter3 -> .... -> request resource.

下面举一个例子:
 
input.jsp 是用来提交输入的,当提交后,过滤器检测姓名和年龄,如果整常的话会提交给output.jsp,如果不正常提交给erroroutput.jsp.在此 同时也有一个过滤器,它是用来检测一个页面是否设置了字符编码,如果没有则进行设置。(防止乱码问题存在)。
myfilter.java
======================
package servletbean;
import javax.swing.JOptionPane;
 
public class myfilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
 
  response.setContentType("text/html");
  response.setCharacterEncoding("GB2312");
  PrintWriter out=response.getWriter();
  String name="";
  String age="";
  int age1;
  name=request.getParameter("name");
  age=request.getParameter("age");
  RequestDispatcher dispatch=request.getRequestDispatcher("erroroutput.jsp");    if(name==null||name==""||name==" "||age==null)
{
JOptionPane.showMessageDialog(null,"用户名和年龄输入错误!");
dispatch.forward(request, response);
return;
}
else
{
try
{
age1=Integer.parseInt(age);
}
catch(Exception e)
{
//JOptionPane.showMessageDialog(null,"年龄必须为数字!");
dispatch.forward(request,response);
return;//如果是错误页面就到erroroutput.jsp中
}
}
chain.doFilter(request, response);//这里表示是正确的,也就是说,他回去找下一个链,但是它下面已经没有了,所以就会去跳转页面了,此时要跳转的页面就是action="output.jsp"了。
}
}
==================
encodefilter.java
===================
package servletbean;
public class encodefilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if(request.getCharacterEncoding()==null)
{
System.out.println(encoding);
request.setCharacterEncoding(encoding);
}
chain.doFilter(request, response);//到下一个链
}
public void init(FilterConfig fConfig) throws ServletException {
this.config=fConfig;
encoding=fConfig.getInitParameter("encoding");
}
 
}
==============
input.jsp
==============
<form action="output.jsp" name="form" method="post">
<table>
<tr>
<td>name</td>
<td><input type="text" name="name" /></td>
</tr>
<tr>
<td>age</td>
<td><input type="text" name="age"/></td>
</tr>
<tr>
<td>
<input type="submit" name="ok" value="ok"/>
</td>
</tr>
</table>
</form>
================
web.xml
===============
注意:filter是有顺序的
<filter>
<description>
</description>
<display-name>encodefilter</display-name>
<filter-name>encodefilter</filter-name>
<filter-class>servletbean.encodefilter</filter-class>
<init-param>
   <param-name>encoding</param-name>
   <param-value>GB2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodefilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<description>
</description>
<display-name>myfilter</display-name>
<filter-name>myfilter</filter-name>
<filter-class>servletbean.myfilter</filter-class>
</filter>
<filter-mapping>
<filter-name>myfilter</filter-name>
<url-pattern>/output.jsp</url-pattern>
</filter-mapping>
相关文章
|
Java
Jsp之五 过滤器与监听器
Jsp之五 过滤器与监听器
54 0
|
5月前
|
Java 容器
JSP 教程 之 JSP 过滤器 9
JSP和Servlet中的过滤器是Java类,能拦截请求和响应,进行信息处理。过滤器可附加到Servlet、JSP或HTML,通过`web.xml`配置。配置包括定义过滤器名称、类名、初始化参数和拦截资源。`&lt;filter&gt;`、`&lt;filter-name&gt;`、`&lt;filter-class&gt;`用于定义过滤器,`&lt;init-param&gt;`设置参数。
42 7
|
5月前
|
XML Java 数据格式
JSP 教程 之 JSP 过滤器 6
JSP教程介绍了JSP过滤器的概念,它是Java类,能拦截请求和响应,用于处理或修改其中的信息。过滤器可连接到单个或多个Servlet、JSP及HTML页面。示例展示了一个简单的日志过滤器`LogFilter`,它打印网站名称并传递请求。`DisplayHeader`Servlet显示HTTP头信息。在`web.xml`中配置过滤器映射,如`LogFilter`映射到`/*`,影响所有Servlet。访问特定URL会触发过滤器和Servlet的执行,日志可通过Log4J记录到文件。
27 3
|
5月前
|
Java
JSP 教程 之 JSP 过滤器 5
JSP过滤器是Java类,用于动态拦截请求和响应。它们可附加到Servlet或JSP,改变或利用其中信息。示例展示了一个简单的`LogFilter`,它打印网站名称和地址。过滤器通过`doFilter`方法处理请求,然后传递给过滤链。`DisplayHeader`Servlet显示HTTP头信息,用于理解过滤器工作原理。
33 3
|
5月前
|
Java
JSP 教程 之 JSP 过滤器 4
JSP过滤器是Java类,用于动态拦截请求和响应,可附加到Servlet、JSP或HTML。`LogFilter`示例展示了基础用法,输出网站名和地址,通过实现`Filter`接口并处理`ServletRequest`和`ServletResponse`。在`doFilter`方法中,打印站点信息并继续过滤链。
28 3
|
5月前
|
Java 容器
JSP 教程 之 JSP 过滤器 8
JSP教程讲解了过滤器的使用,过滤器是Java类,能动态拦截请求和响应,用于处理或修改请求/响应信息。过滤器可关联到Servlet、JSP或HTML。过滤器应用顺序由web.xml中`filter-mapping`元素排列决定,顺序反转则只需调整元素顺序。例如,通过调整`filter-mapping`,可以改变LogFilter和AuthenFilter的执行顺序。
26 2
|
5月前
|
Java
JSP 教程 之 JSP 过滤器 7
JSP教程介绍了过滤器的概念,它们是Java类,用于动态拦截请求和响应。过滤器可附加到Servlet或JSP,允许多个过滤器如AuthenFilter和LogFilter按特定顺序工作。每个过滤器有自己的映射配置,如示例所示,通过&lt;filter&gt;和&lt;filter-mapping&gt;元素定义。LogFilter和AuthenFilter都映射到&lt;url-pattern&gt;/*,实现不同功能。
18 2
|
5月前
|
XML Java 数据安全/隐私保护
JSP 教程 之 JSP 过滤器 1
JSP教程介绍了JSP过滤器,它们是Java类,用于动态拦截请求和响应。过滤器可附加到Servlet、JSP或HTML,实现请求预处理、响应后处理等功能。常见的过滤器类型包括身份验证、数据压缩、加密等。过滤器通过web.xml配置,Web容器根据配置顺序创建实例并执行。通常,过滤器配置在所有Servlet之前。
32 1
|
5月前
|
XML Java 数据安全/隐私保护
JSP 教程 之 JSP 过滤器 2
JSP和Servlet中的过滤器是Java类,用于动态拦截请求和响应。它们可附加到Servlet、JSP或HTML,实现如身份验证、数据压缩、日志记录等多种功能。过滤器通过web.xml配置,按配置顺序执行,初始化时读取配置信息,doFilter方法执行实际过滤操作,FilterChain处理后续过滤器。销毁时调用destroy方法释放资源。
23 0
|
5月前
|
Java
JSP 教程 之 JSP 过滤器 3
JSP和Servlet中的过滤器是Java类,能拦截并处理请求和响应。它们可附加到Servlet、JSP或HTML。在`web.xml`配置文件中定义过滤器如`LogFilter`,并设置初始化参数。在Filter的`init`方法中,通过`FilterConfig`对象获取这些参数,例如打印网站名称。
25 0