JavaEE(7)——过滤器

本文详细介绍了JavaEE中的过滤器使用,包括处理中文乱码、限制IP登录范围及强制用户登录。实验步骤涵盖过滤器类编写、web.xml配置以及相关Servlet与JSP页面的实现。通过实验,理解了过滤器在拦截请求、设置编码及控制访问权限等方面的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 实验目的

  1. 了解过滤器的在项目开发中的作用;
  2. 重点掌握过滤器的开发与部署步骤;
  3. 了解过滤器链的作用。

2 实验原理

过滤器是Java Web三大组件之一,它与Servlet很相似,但过滤器与Servlet功能不同,过滤器是用来拦截请求的,而不是处理请求的。
当用户请求某个Servlet时,会先执行部署在这个请求上的Filter,如果Filter“放行”,那么会继承执行用户请求的Servlet;如果Filter不“放行”,那么就不会执行用户请求的Servlet。
其实可以这样理解,当用户请求某个Servlet时,Tomcat会去执行注册在这个请求上的Filter,然后是否“放行”由Filter来决定。可以理解为,Filter来决定是否调用Servlet。当执行完成Servlet的代码后,它将作三件事情:
(1)产生响应并返回给客户;
(2)如果有过滤器链,容器会将请求传递给下一个过滤器;
(3)将请求传递给下一个资源。当请求返回客户时,它以相反方向经过同一组过滤器返回。过滤器链中的每个过滤器可能会修改响应。

3 实验任务与步骤

3.1 编写过滤器,进行中文乱码处理

任务描述:
编写过滤器类,处理所有请求编码,解决中文乱码问题。

实验步骤:

  1. 编写一个用户请求表单页面login.jsp,供用户提供表单向服务器传递请求参数。
  2. 编写Servlet(CheckParamServlet.java),处理用户提交的请求参数。
  3. 修改web.xml配置。

3.1.1 编写login.html

<!DOCTYPE html>
<html>
    <head>
        <title>使用过滤器改变请求编码</title>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    </head>
    <body>
    <center>
        <h2>请输入用户名和口令:</h2>
        <form method="post" action="../CheckParamServlet">
            <table>
                <tr>
                    <td>用户名:</td>
                    <td><input name="name" type="text"></td>
                </tr>
                <tr>
                    <td>口 令:</td>
                    <td><input name="pass" type="password"></td>
                <tr>
                    <td></td>
                    <td>
                        <input name="ok" type="submit" value="提交">
                        <input name="cancel" type="reset" value="重置">
                    </td>
                </tr>
            </table>
        </form>
    </center>
</body>
</html>

3.1.2 编写CheckParamServlet.java

package exp07.bean;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CheckParamServlet extends HttpServlet {
    
	public CheckParamServlet() {
    
		super();
	}
        @Override
	public void destroy() {
    
		super.destroy(); 
	}
        @Override
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
    
		String name = request.getParameter("name");
		String pass = request.getParameter("pass");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		out.println("<html><head><title>Param Test</title></head>")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值