Servlet过滤器

文章目录

前言

一、关于过滤器Filter

        1.Servlets Filter是实现Filter接口的一个类。

        2.作用

        3.注意

二、使用步骤

1.创建一个实现Filter接口的类

2.doFilter方法

3. init,destroy方法

 三、Servlet过滤器的应用

        1.表单页面

        2.输出页面

        3.Servlet Filter过滤器


前言

作为个人学习记录,我会尽可能介绍的很详细,有误和不清楚地方可评论指正。


一、关于过滤器Filter

1.Servlets Filter是实现Filter接口的一个类。

2.作用

该类截取用户从客户端提交的请求,在还没有到达需要访问的资源时运行;同时在资源还没有被发送到客户端前截取响应,并处理这些还没有发送到客户端的响应。

3.注意

  • Filter并不是一个servlet,它不能产生一个response,它能够在一个请求(request)到达服务器之前预处理该请求,也可以在离开服务器时处理响应(response)
  • 当有多个过滤器时,多个过滤器之间构成过滤器链(FilterChain)

二、使用步骤

1.创建一个实现Filter接口的类

  • 注意需要添加servlet下的Filter

 

2.doFilter方法

  • 过滤器的具体业务操作则由doFilter方法实现
  • doFilter方法会自动生成

3. init,destroy方法

init方法和destroy方法分别执行过滤器的初始化和销毁操作

 三、Servlet过滤器的应用

实现多页面编码转换

转换为:

 

1.表单页面

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>提交页面</title>
</head>
<body>
	<form action="input_getparam.jsp" method="post">
		姓名:<input type="text" name="username"><br> 你喜欢的歌星:<input
			type="checkbox" name="star" value="张杰">张杰 <input
			type="checkbox" name="star" value="蔡徐坤">蔡徐坤 <input
			type="checkbox" name="star" value="周杰伦">周杰伦 <input
			type="checkbox" name="star" value="秋绘">秋绘 <input
			type="submit" value="提交">
	</form>
</body>
</html>

2.输出页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>喜欢的歌星</title>
</head>
<body>
<%
	String user = request.getParameter("username");
	String stars[] = request.getParameterValues("star");
	String s = "";
	for (int i = 0; i < stars.length; i++)
		s += stars[i] + "&nbsp;&nbsp";
%>
	<%=user%>喜欢的歌星有:<%=s%>
</body>
</html>

 3.Servlet Filter过滤器

使用前需要使用@WebFilter("/*")进行注释

package edu.nustti.servlet;
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.annotation.WebFilter;
@WebFilter("/*")
public class CharSetFilter implements Filter {
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("开始销毁");
	}

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
			throws IOException, ServletException {
		// TODO Auto-generated method stub
		arg0.setCharacterEncoding("UTF-8");
		arg2.doFilter(arg0, arg1);
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("开始运行");
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值