实验五 Servlet过滤器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五 Servlet过滤器

一、实验目的

1、了解过滤器的作用;

2、掌握过滤器的开发与部署的步骤;

3、了解过滤器链。

二、实验原理

1、过滤器是web服务器上的组件,它们对客户和资源之间的请求和响应进行过

滤。

2、过滤器的工作原理是:当servlet容器接收到对某个资源的请求,它要检查是

否有过滤器与之关联。如果有过滤器与该资源关联,servlet容器将把该请求发送给过滤器。在过滤器处理完请求后,它将做下面3件事:

∙产生响应并将其返回给客户;

∙如果有过滤器链,它将把(修改过或没有修改过)请求传递给下一个过滤器;

∙将请求传递给不同的资源。

当请求返回到客户时,它是以相反的方向经过同一组过滤器返回。过滤器链中的每个过滤器够可能修改响应。

3、过滤器API主要包括:Filter、FilterConfig和FilterChain接口。

三、实验要求

编写一个过滤器改变请求编码。

四、实验内容

1、编写loginform.html文件

这文件只要一条核心代码,即action="servlet/CheckParamServlet"用来

web.xml文件中对servlet名的匹配。

2、编写处理请求参数的Servlet,CheckParamServlet.java文件

这文件用来两个用来响应客户请求的两个方法,即doGet()和doPost()。

doPost()方法里的内容是执行doGet()方法,doGet()方法则是响应客户端的GET方法,具体实现如下:

1)、 String name = request.getParameter("name");

String pass = request.getParameter("pass");

response.setContentType("text/html;charset=gb2312");

获取从loginform.html传来的用户名和密码,并设置内容类型。

2)、PrintWriter out = response.getWriter();

out.println("Param Test ");

out.println("

你的用户名为:"+name+"

");

out.println("

你的口令为:"+pass+"

");

out.println("");

使用getWriter()方法返回PrintWriter()的对象out,输出用户名和密码。

3、编写过滤器EncodingFilter.java文件

1)、public void init(FilterConfig filterConfig)

对Filter初始化,获取该Filter的配置参数。

2)、public void doFilter(ServletRequest request,

ServletResponse response,

FilterChain chain)

如果得到的编码不为空,则设置request和response的编码用的字符集;

chain.doFilter(request, response);给请求放行。

3)、public void destroy() {

}

释放Fileter占用的资源。

4、在web.xml文件中配置过滤器

注意在配置过程中的/*是“/*”而不是“*/”。

五、实验中遇到的问题及解决方法

实验中遇到一个问题,问题的错误提示如下:

HTTP Status 404 - /test5/servlet/CheckParamServlet

问题原因是Servlet访问路径没有配置完整,如下

/CheckParamServlet

解决方法:配置完整路径,如下

/servlet/CheckParamServlet

六、实验小结

Filter主要用于对用户请求进行预处理和对服务器响应进行后处理,Filter 负责过滤的Web组件可以是Servlet、jsp、html。使用Filter过滤器使得Servlet 开发者能够在请求到达Servlet之前截取请求,在Servlet处理请求之后修改应答。

使用Filter的优点有:

1、能够在Servlet被调用前检查Request对象,修改Request header和

Request内容;

2、能够在Servlet被调用后检查Response对象,修改Request header和

Request内容。

附实验结果图:

图一

图二

图三

图四

相关文档
最新文档