用过滤器验证用户登录功能

来源:互联网 发布:pos机s90如何设置网络 编辑:程序博客网 时间:2024/06/04 20:03

1. 创建一个User 类


public class User {
    private String name;
    private String pwd;

    public String getname() {
        return name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setname(String name) {
        this.name = name;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

}

2.创建一个实现Filter的类




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

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.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import cn.xh.Test.User;
public class filterDemo extends HttpServlet implements Filter {


 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException {
     HttpSession session=((HttpServletRequest)request).getSession();
   request.setCharacterEncoding("utf-8");
   response.setContentType("text/html;charset=utf-8");
   
   if(session.getAttribute("user")==null){
     PrintWriter out=response.getWriter(); 
     System.out.println("cc");//创建一个输出流
           //如果为空则通过javaScript脚本出输出提示并跳转到index.jsp页面
     out.println("<font algin='center' color='red' size='5'>您还没有登陆,请登录 3秒后自动跳转登陆页面</font>");
     ((HttpServletResponse) response).setHeader("refresh", "3;url = '/JspDay8/Login.jsp'");
         

   }
   else{
    chain.doFilter(request, response);
   }
 }

 public void init(FilterConfig config) throws ServletException {
  // TODO Auto-generated method stub
  
 }
    public void destroy() {
     }

}


3


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


public class ServletDemo extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  HttpSession session = request.getSession();
  request.setCharacterEncoding("utf-8");
  response.setContentType("text/html;charset=utf-8");
  String name = request.getParameter("name");
  String pwd = request.getParameter("pwd");
  User user = new User();
  user.setname(name);
  user.setPwd(pwd);
  
  session.setAttribute("user", user);
  if(name.equals("hao")&&pwd.equals("123"))
  {
   
    PrintWriter out=response.getWriter();  //创建一个输出流
    out.println("<font algin='center' color='red' size='5'>登录成功 3秒后自动跳转</font>");
    response.setHeader("refresh", "3;url = '/JspDay8/filter/success.jsp'");
    
  }
  else{
   response.sendRedirect("/JspDay8/Login.jsp");
  }
 }

 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  doGet(request, response);
 }

}

4.  success.jsp  --成功页面

 
  <body>
   登陆成功<br/>
  
   <a href="/JspDay8/filter/tuichu.jsp">退出</a>
  </body>

5.  tuichu.jsp  --注销

<%
session.invalidate();
out.print("<script language='javascript'>window.location.href='Login.jsp';</script>");
%>
 
 
  <body>
    This is my JSP page. <br>
  </body>
6 xml 的配置

<filter>
    <filter-name>Filter</filter-name>
     <filter-class>cn.xh.Test.filterDemo</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>Filter</filter-name>
    <url-pattern>/filter/*</url-pattern>
    </filter-mapping>



0 0