Java 利用过滤器Filter 实现登录过滤

本次的demo一共包含3个页面


1.登录页面   /LoginTest/Login/index.html

2.登录成功页面【加入了登录验证,必须登录后才能访问】   /LoginTest/Home/index.html

3.登录失败页面  /LoginTest/Login/ErrorPage.html

数据库连接不再赘述,如有疑问,移步至:点击打开链接

首先 在未登录的情况下访问页面1,请求会被重定向到页面2

Java 利用过滤器Filter 实现登录过滤_第1张图片

然后 在登录页输入错误的用户名会重定向到页面3

Java 利用过滤器Filter 实现登录过滤_第2张图片



最后返回到页面2输入正确用户名和密码,会被重定向到页面1

Java 利用过滤器Filter 实现登录过滤_第3张图片


项目目录结构如下

Java 利用过滤器Filter 实现登录过滤_第4张图片

相关代码:

过滤器

package cn.xyj.study;

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;
import javax.servlet.http.HttpSession;



public class LoginCheckFilter implements Filter
{

	private String url;
	@Override
	public void destroy() 
	{
		
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse respose,
			FilterChain chain) throws IOException, ServletException 
			{
		
		HttpServletRequest httprequest=(HttpServletRequest)request;
		HttpServletResponse httprespose=(HttpServletResponse)respose;

		HttpSession session=httprequest.getSession();
		
		if(session.getAttribute("uid")==null)
		{
			httprespose.sendRedirect(url);
		}
		
		chain.doFilter(request, respose);
		
	}

	@Override
	public void init(FilterConfig config) throws ServletException {
		url=config.getInitParameter("ErrorPage");
		System.out.println("----------------url="+url);
	}

	

	

}

配置文件



  
  

  
    This is the description of my J2EE component
    This is the display name of my J2EE component
    LoginController
    cn.xyj.study.LoginController
  

  
    LoginController
    /servlet/Login
  
  
  	
  	
  	
  	LoginCheckFilter
  	cn.xyj.study.LoginCheckFilter  
  	
  	ErrorPage
  	/LoginTest/Login/index.html
  		
  	
  	
  	
  	LoginCheckFilter
  	/Home/*
  	
  	
  
    index.jsp
  


Servlet 

public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws  ServletException, IOException   {
		request.setCharacterEncoding("utf-8");
		String uid= (String) request.getParameter("uid");
		String psw= (String) request.getParameter("psw");
		
		String tip="默认提示";
		String sql="select * from T_User where UserName='"+uid+"' and Pwd='"+psw+"'";
		ResultSet rs=SqlHelper.executeQuery(sql);  
        try {
        	if(rs.next())
    		{
        		HttpSession session=request.getSession();
        		session.setAttribute("uid", uid);
        		response.sendRedirect("/LoginTest/Home/index.html");
   
    		}
    		else
    		{
    			response.sendRedirect("/LoginTest/Login/ErrorPage.html");
    		
    		}
        	
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
	
	
	}

登录页

用户名:
密码:


你可能感兴趣的:(JAVA)