过滤器实现用户登陆判断,如果用户登陆成功跳转到首页,如果用户未登陆,跳转到登陆页面。
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方法
扫描二维码关注公众号,回复:
294527 查看本文章
- @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
- {
- //登陆成功后,写入session
- String 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;
- }