netbeans过滤器编程过程_第1页
netbeans过滤器编程过程_第2页
netbeans过滤器编程过程_第3页
netbeans过滤器编程过程_第4页
netbeans过滤器编程过程_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Netbeans过滤器编程1.什么是过滤器?什么是过滤器?过滤器过滤器的生命周期与web容器相同,当web容器启动时,就会读取应用的web.xml配置文件,如果这里配置了过滤器过滤器,容器就会执行实例化,并调用过滤器过滤器的init方法。之后用户的每一次请求都会执行过滤器过滤器的doFilter方法。当web容器销毁时,就会执行destroy方法,释放资源。过滤器过滤器的执行过程过滤器过滤器看名字就能知道大概的用法,它就像一个筛子,可以筛选特定的数据或请求。执行过程如下图所示 用户在发送请求后,如果该请求满足过滤器过滤器的过滤规则,web容器就会执行过滤器过滤器中的doFilter方法进行特定

2、的操作; 然后通过调用FilterChain.doFilter转交给web容器。web容器执行完成后把资源返回给过滤器过滤器,再展现给用户。简单的过滤器实例:简单的过滤器实例:将将get请求提交的数据重新编码为请求提交的数据重新编码为UTF-8软件:NetBeans IDE8.0.2打开NetBeans IDE8.0.21.首先建立首先建立一个新项目一个新项目2下一步下一步输入项目名称和位置之后点击下一步登录界面 姓名: 复制以下文字到主页index.html里面新建一个success.jsp 复制以下内容到里面登录成功 欢迎!效果如图:我们尝试直接运行 查看效果这是index.html 输入

3、中文之后提交跳转到success.jsp就会出现乱码我们尝试吧get方法改成post方法提交查看一下效果这是index_1.html 输入中文之后提交也出现了乱码可见没有经过过滤器直接提交 ,无论是get还是post方法,即使你所有网页默认都是UTF-8编码,提交的数据只要出现中文,得到的结果还是会乱码我们下面通过新建过滤器来解决这个问题注意:若在新建按钮对应的弹出菜单没看到过滤器,则点击该弹出菜单的“其他”,会出现“过滤器”这一项填写好类名和包名就可以下一步1.点击将过滤器信息添加到web.xml2.点击新建过滤器映射3.我们作用的URL是success.jsp4.我们选择过滤器的分类:RE

4、QUEST代表直接请求FORWARD代表跳转页面这里我们不需要初始化参数 直接完成在EncodingFilter里面增加这句: private String encoding=UTF-8;(UTF-8)代表我们要转换成的格式在dofilter里面增加下面这几句:HttpServletRequest httpReq=(HttpServletRequest) request;if(GET.equalsIgnoreCase(httpReq.getMethod()EncodingHttpServletRequestWrapper wrap=new EncodingHttpServletRequestW

5、rapper(httpReq,encoding);response.setContentType(text/html;charset=+encoding);chain.doFilter(wrap, response);elserequest.setCharacterEncoding(encoding);response.setCharacterEncoding(encoding);chain.doFilter(request, response);代码为:HttpServletRequest httpReq=(HttpServletRequest) request;if(GET.equalsI

6、gnoreCase(httpReq.getMethod()EncodingHttpServletRequestWrapper wrap=new EncodingHttpServletRequestWrapper(httpReq,encoding);response.setContentType(text/html;charset=+encoding);chain.doFilter(wrap, response);elserequest.setCharacterEncoding(encoding);response.setCharacterEncoding(encoding);chain.doF

7、ilter(request, response);该代码的含义为:如果提交的为GET请求(本案例使用的就是GET请求)那么就新建一个EncodingHttpServletRequestWrapper实例把GET默认提交的以ISO8859-1格式编码的数据转换成UTF-8格式编码如果以post方式提交的数据则直接使用:request.setCharacterEncoding(“UTF-8”); response.setCharacterEncoding(“UTF-8”); 就可以把编码转换成UTF-8下面我们介绍一下新建一个EncodingHttpServletRequestWrapper的ja

8、va类来处理GET请求新建一个JAVA类类名为:EncodingHttpServletRequestWrapper复制以下内容到EncodingHttpServletRequestWrapper类里面:package com.filter;import java.io.UnsupportedEncodingException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;public class EncodingHttpServletRequest

9、Wrapper extends HttpServletRequestWrapper private HttpServletRequest request;private String encoding;public EncodingHttpServletRequestWrapper(HttpServletRequest request) super(request);this.request=request; public EncodingHttpServletRequestWrapper(HttpServletRequest request,String encoding) super(re

10、quest);this.request = request;this.encoding = encoding;Overridepublic String getParameter(String name) String value = request.getParameter(name);if (null != value) try / tomcat默认以ISO8859-1处理GET传来的参数。把tomcat上的值用ISO8859-1获取字节流,再转换成UTF-8字符串value = new String(value.getBytes(ISO8859-1), encoding); catch (UnsupportedEncodingException e)e.printStackTrace();return value;如图所示:关键语句为:String value = request.getParameter(name);value = new String(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论