JAVA WEB 过滤器实验报告

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

南昌大学实验报告
学生姓名:张志煋学号:7101011001 专业班级:网工121班
实验类型:□验证□综合□设计□创新实验日期:2015-4-29 实验成绩:
一、实验项目名称
Filter过滤器习题项目
二、实验目的
掌握过滤器的基本原理,熟悉它的功能
三、实验基本原理
本实验主要运用Filter过滤器,在实际开发中,过滤器可以用来多用户进行统一的身份判断、IP访问限制,用户发送请求的字符编码转换、对请求和响应进行加密和解密、记录用户登陆日志等。

四、实验步骤
1、运行My Eclipse,打开已经部署好的的TEST项目;
2、新建一个com.sanqing.filter包,包中编写一个CharFilter.java的过滤器,可过滤
字符“晕”;
3、编写一个CharForm.jsp的文件,供用户输入任意文字;
4、编写一个SendFailure.jsp.jsp的文件;处理用户输入非法字符”晕”的情况。

5、编写一个ShowContent.jsp的文件;显示用户正常输入的字符。

6、新建一个TestCharacter的web工程,部署。

7、新建一个com.sanqing.filter包,包中编写一个CharacterFilter,java的过滤器,实
现字符编码的统一设置;
8、编写一个CharacterForm.jsp的文件,供用户输入任意文字;
9、编写一个ShowContent.jsp的文件;经过滤器的字符编码转换后显示用户输入的
字符。

10、启动Tomcat服务器,打开浏览器,在地址栏中输入对应的URL:测试并观察
结果。

五、实验数据及处理结果
1. com.sanqing.filter.CharFilter.java的程序代码如下:
package com.sanqing.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
public class CharFilter implements Filter{
//初始化方法
public void init(FilterConfig filterConfig) throws ServletException { System.out.println("非法文字过滤器初始化");
}
//过滤方法
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)req;
//设置参数编码格式
request.setCharacterEncoding("gb2312");
//接受聊天内容
String charContent = request.getParameter("charContent");
if(charContent != null) {
if(charContent.indexOf("晕")== -1) {
chain.doFilter(req, res);
} else {
request.getRequestDispatcher("SendFailure.jsp").forward(req, res);
}
} else {
chain.doFilter(req, res);
}
}
//销毁方法
public void destroy() {
System.out.println("非法文字过滤器销毁");
}
}
2.CharForm.jsp的程序代码如下:
<%@page language="java"contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>用户表单</title>
</head>
<body>
<%--表单,提交方式为post-,提交到DoGetDemo--%>
<form action="ShowContent.jsp"method="post">
用户名:<input type="text"name="username"/><br>
发言:<br>
<textarea name="charContent"rows="20"cols="40"></textarea><br> <input type="submit"value="发送"/>
<input type="reset"value="重置"/>&nbsp;
</form>
</body>
</html>
3.SendFailure.jsp.jsp的程序代码如下:
<%@page language="java"contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>发言失败</title>
</head>
<body>
<center>
<h1>发言失败,含有非法文字</h1>
</center>
</body>
</html>
4.ShowContent.jsp的程序代码如下:
<%@page language="java"contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>发言成功</title>
</head>
<body>
<center>
<h1>发言成功</h1>
用户名:${ername}<br>
发言内容:${param.charContent}
</center>
</body>
</html>
.sanqing.filter.CharacterFilter,java的程序代码如下:
package com.sanqing.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CharacterFilter implements Filter{
//初始化方法
public void init(FilterConfig filterConfig) throws ServletException { System.out.println("字符编码过滤器初始化");
}
//过滤方法
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)req;
//设置参数编码格式
//request.setCharacterEncoding("gb2312");
//request.setCharacterEncoding("ISO-8859-1");
//request.setCharacterEncoding("US-ASCII");
//request.setCharacterEncoding("UTF-16");
//request.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("GBK");
chain.doFilter(req, res);
}
//销毁方法
public void destroy() {
System.out.println("字符编码过滤器销毁");
}
}
6.CharacterForm.jsp的程序代码如下:
<%@page language="java"contentType="text/html;charset=gbk"%>
<html>
<head>
<title>测试字符编码</title>
</head>
<body>
<%--表单,提交方式为post-,提交到DoGetDemo--%>
<form action="ShowContent.jsp"method="post">
请任意输入文字:<br/>
<textarea name="characterContent"rows="10"cols="40"></textarea><br> <input type="submit"value="发送"/>
<input type="reset"value="重置"/>&nbsp;
</form>
</body>
</html>
7.ShowContent.jsp的程序代码如下:
<%@page language="java"contentType="text/html;charset=gbk"%>
<html>
<head>
<title>测试字符编码</title>
</head>
<body>
<center>
经过字符编码后的内容:${param.characterContent}
</center>
</body>
</html>
8.处理结果如下:
(GBK字符编码)
(UTF-8字符编码)
(US-ASCII字符编码)
(ISO-8859-1字符编码)
(gb2312字符编码)
六、实验总结
通过该实验,我基本掌握了Filter过滤器的基础知识,Filter同Servlet类一样,也是一个Java类,所以其添加方式和普通的Java类完全相同。

自定义的Filter类必须实现Filter接口中定义的init()方法、doFilter()方法和|destroy()方法。

如果要想使定义的Filter 起作用,还必须在web.xml文件中配置该Filter。

另外,Filter是在服务器启动时就加载并完成初始化,在加载和初始化完成后,再次调用时不再需要进行初始化操作。

只有在重新加载项目或者重启服务器后才需要重新初始化。

相关文档
最新文档