转载:

一.chain.doFilter作用

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

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

2.chain.doFilter将请求转发给过滤器链下一个filter , 如果没有filter那就是你请求的资源

二.举例

input.jsp 是用来提交输入的 : 当提交后,过滤器检测姓名和年龄 .

如果正常的话会提交给output.jsp 如果不正常提交给erroroutput.jsp.

在此 , 同时也有一个过滤器,防止乱码问题存在 , 该过滤器检测一个页面是否设置了字符编码,如果没有则进行设置。

1.input.jsp

name
age

2.web.xml

encodefilter

encodefilter

servletbean.encodefilter

encoding

GB2312

encodefilter

/*

myfilter

myfilter

servletbean.myfilter

myfilter

/output.jsp

3.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");//获得目标编码格式

}

}

3.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中

}

}

//这里表示是正确的,也就是说,他回去找下一个链,但是它下面已经没有了,所以就会去跳转页面了,此跳转的页面就是action="output.jsp"了

chain.doFilter(request, response);

}

}

转载地址:http://blog.csdn.net/haofengjiao/article/details/70186381

标签:Java,name,chain,request,filter,doFilter,jsp,response

来源: https://www.cnblogs.com/cuiqq/p/11912002.html

java dochain,Java filter中的chain.doFilter详解相关推荐

  1. Java filter中的chain.doFilter详解

    一.chain.doFilter作用 1.一般filter都是一个链,web.xml 里面配置了几个就有几个.一个一个的连在一起 request -> filter1 -> filter2 ...

  2. java configuration类_JAVA中的Configuration类详解

    本文主要研究的是java中的configuration类的用法,涉及maven自动加载,pom.xml配置和简单的java代码,具体如下. properties文件是java平台默认的配置文件格式,其 ...

  3. java linux tracert_Linux系统中tracert命令使用详解

    Linux系统中Tracert命令用来显示数据包到达目标主机是所经过的路径.下面由学习啦小编为大家整理了linux系统中tracert命令使用详解,希望对大家有帮助! Linux系统中tracert命 ...

  4. 浅谈filter中的chain.doFilter(request, response)的作用

    filter在web开发中可谓是神通广大,想必大家都有所了解,在这里不作赘述. 下面主要谈一谈chain.doFilter(request, response);这条语句是怎么回事,过滤器的作用就是之 ...

  5. 过滤器filter中的chain.doFilter(request, response)的作用

    请求到达servlet之前,拦截下来做预处理,处理之后便执行chain.doFilter(request, response)这个方法.chain.doFilter将请求转发给过滤器链下一个filte ...

  6. chain.doFilter详解

    一.chain.doFilter作用 1. 一般filter都是一个链,web.xml 里面配置了几个就有几个.一个一个的连在一起 request -> filter1 -> filter ...

  7. java io系统_java中的io系统详解

    Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java 内用 U ...

  8. java获取文件大小_Java中获取文件大小的详解及实例代码

    Java 获取文件大小 今天写代码时需要实现获取文件大小的功能,目前有两种实现方法,一种是使用File的length()方法:另外一种是使用FileInputStream的available()方法, ...

  9. java transient 关键字_java中的transient关键字详解

    前言 说实话学了一段时间java的朋友对于transient这个关键字依旧很陌生基本没怎么用过,但是transient关键字在java中却起到了不可或缺的地位!如果要说讲到,我觉得最可能出现的地方是I ...

最新文章

  1. spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,定时任务案例...
  2. 在SLES-11-SP1-i586上搭建apache+php环境
  3. Asp.Net Mvc之模型注解
  4. Linux内存映射私有对象,Linux访问内存映射的对象
  5. 函数指针实现无类型打印
  6. [转载] Python基础知识:构造函数中self用法
  7. 电脑系统怎么重装?U盘安装Windows XP系统保姆级教程
  8. 什么是无线射频识别技术(RFID)
  9. 洛谷:P1878 舞蹈课(普及/提高-,stl,堆)
  10. 类和对象1:基础学习
  11. CDH-TXKT-hive、impala
  12. three.js 控制动画进度 进度条拖拽控制
  13. 可视化设计,类Excel的快速开发平台
  14. Web TOP10漏洞之sql注入
  15. /backend_agg.py:238: RuntimeWarning: Glyph 26085 missing from current font.
  16. 人工智能数学课高等数学线性微积分数学教程笔记
  17. 手机端抓包http/https-Fiddler的设置
  18. IDM设置和解决下载速度慢方法2022.7.11
  19. 【威联通 NAS QNAP】学习篇
  20. 渝粤题库 陕西师范大学 《旅游法规》作业

热门文章

  1. 干货 | 有赞数据仓库实践之路
  2. Flask-SQLAlchemy 对数据库的过滤查询
  3. Python类中的私有属性和私有方法
  4. 有功功率 无功功率 功率因数
  5. Ignite Compute helloworld-分布式计算
  6. Two-Stream RNN/CNN for Action Recognition in 3D Videos-阅读笔记
  7. 【C++】C++类的学习(五)——纯虚函数与抽象类
  8. leetcode —— 面试题 17.12. BiNode
  9. leetcode - 1191. K 次串联后最大子数组之和
  10. 论文编写时,如何添加参考文献索引