【servelt原理_17_ 过滤器典型应用】

过滤器典型应用

①:乱码处理—dopost的乱码处理

@WebFilter(value="/login")
public class EncodingFilter implements Filter{

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
 		
		
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=utf-8");
		
		chain.doFilter(request, response);  //让目标资源执行,放行
	}

	@Override
	public void destroy() {
		
		
	}

}
@WebServlet("/login")
public class Login extends HttpServlet{
	
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
		String username = request.getParameter("username");
		String password = request.getParameter("password");

		System.out.println(username + " " + password);
		
		
	}

}

②:权限验证
我们直接访问http://localhost:8080/FirstServlet/tage是不行的

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="/FirstServlet/login" method="post">
		用户名:<input type="text" name="username"/><br/>
		密码:<input type="text" name="password"/><br/>
		<input type="submit" value="登录"/>
	</form>
</body>
</html>
@WebServlet("/tage")
public class MyServlet extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("我是登录以后才能操作的代码");
	}
	
	

}
@WebServlet("/login")
public class Login extends HttpServlet{
	
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		
		System.out.println(username + " " + password);
		
		//登录成功以后,讲登录信息防伪session当中
		HttpSession session = request.getSession();
		session.setAttribute("name", session.getId());
		System.out.println(session.getAttribute("name"));
		
		
	}

}
@WebFilter("/tage")
public class CheakFilter implements Filter{

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		// 如果登录过那么久跳转到MyServlet当中去,如果没有就跳转到登录页面
		// 向下转型
		HttpServletRequest request2 = (HttpServletRequest)request;
		HttpServletResponse response2 = (HttpServletResponse) response;
		//创建session对象
		HttpSession session = request2.getSession();
		String name = (String) session.getAttribute("name");
		if (name !=null) {
			chain.doFilter(request, response);
		}else {
			System.out.println("请先登录....");
			response2.sendRedirect(request2.getContextPath() + "/NewFile.html");
		}
		
	}

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值