Spring Mvc那点事---(19)Spring Mvc过滤器Filter实现登陆验证

来源:互联网 发布:邓肯大学数据 编辑:程序博客网 时间:2024/05/17 05:00

     上一节我们演示了过滤器Filter的基本用法,这一节我们通过实例来看下过滤器怎么实现用户登陆判断,如果用户登陆成功跳转到首页,如果用户未登陆,跳转到登陆页面。

 1.用户登陆

   首先我们天添加两个页面,一个是登陆页面login.jsp,一个是登陆成功后的index.jsp.

在login.jsp中我们添加两个用户名和密码文本输入文本框

 index.jsp

 

<%@ 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>Insert title here</title></head><body> 欢迎你,登陆成功</body></html>


login.jsp

 

<%@ 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>Insert title here</title></head><body>   <form action="<%=request.getContextPath()%>/Home/userLogin"  method="post">   用户名:<input type="text" name="username">    <Br>  密码: <input type="password" name="pwd">     <input type="submit" value="登陆">    </form>    </body></html>


 在后台我们添加controller方法

 

@Controller@RequestMapping("/Home")public class HomeController {@RequestMapping(value="index")public String Index(){        return "index";}@RequestMapping(value="login")public String Login(){return "login";}@RequestMapping(value="userLogin")public String UserLogin(HttpServletRequest request,HttpServletResponse respnose,HttpSession httpSession) throws IOException{//登陆成功后,写入sessionString userName=request.getParameter("username");String pwd=request.getParameter("pwd");System.out.println("登陆成功!"+"--"+userName);httpSession.setAttribute("username", userName);    return "redirect:/Home/index";  }}}

   我们添加过滤器filterFirst

 

package com.filter;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;public class filterFirst implements Filter {private  FilterConfig config;public void destroy() {// TODO Auto-generated method stub System.out.println("destroy");}public void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {// TODO Auto-generated method stub System.out.println("doFilter");  HttpServletRequest request=(HttpServletRequest)arg0;  HttpServletResponse response=(HttpServletResponse)arg1;  //获取初始化参数    String para=config.getInitParameter("nofilterpath");    System.out.println(para);  if(request.getRequestURI().indexOf("login")!=-1||request.getRequestURI().indexOf("Home/userLogin")!=-1) { arg2.doFilter(arg0, arg1); return; }  if(request.getSession().getAttribute("username")==null) { response.sendRedirect(request.getContextPath()+"/Home/login"); } else {  arg2.doFilter(arg0, arg1); } }public void init(FilterConfig arg0) throws ServletException {// TODO Auto-generated method stub        System.out.println("init");        config=arg0;        }}

配置web.xml

  <!-- 自定义过滤器 -->    <filter>          <filter-name>firstfilter</filter-name>          <filter-class>com.filter.filterFirst</filter-class>          <!-- 设置初始化参数 -->         <init-param>              <param-name>nofilterpath</param-name>              <param-value>login</param-value>          </init-param>              </filter>      <filter-mapping>          <filter-name>firstfilter</filter-name>          <url-pattern>/*</url-pattern>      </filter-mapping>  


 2.初始化参数

   在filter中我们可以设置初始化参数,在web.xml中通过<init-parm>来进行设置,param-name表示参数名称,parm-value表示参数值

  在filter中,我们可以获取参数,使用FilterConfig进行获取,在init中进行初始化

 

public void init(FilterConfig arg0) throws ServletException {// TODO Auto-generated method stub        System.out.println("init");        config=arg0;        }

 

 




0 0
原创粉丝点击