配置Filter过滤器

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

实现账号密码登录的过滤器,正确登录成功,否则重新登录。
代码结构如下图
在这里插入图片描述
web.xml配置文件内容为

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
     xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
  <filter-name>CheckLoginFilter</filter-name>
   <filter-class>com.aaa.mvc.filter.CheckLoginFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>CheckLoginFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <!-- 解决post乱码 -->
  <filter>
  <filter-name>CharSetFilter</filter-name>
   <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  <init-param>
  <param-name>encoding</param-name>
  <param-value>utf-8</param-value>
  </init-param>
  </filter>
  <filter-mapping>
  <filter-name>CharSetFilter</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
   
  <servlet>
  <servlet-name>springmvc</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <!-- 加载自定义文件 -->
  <init-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:springmvc-config.xml</param-value>
  </init-param>
  </servlet>
  <servlet-mapping>
  <servlet-name>springmvc</servlet-name>
  <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

写一个简单的登录jsp页面

<body>
<center>
<div style="color:red">${info}</div>
<form action="stuController/user" method="post">
账号:<input type="text" placeholder="请输入账号"  name="username">
密码:<input type="password" placeholder="请输入密码"  name="password">
<input type="submit" value="登录">
</form>
</center>
</body>

在controller层的方法

@RequestMapping("/user")
public String userLogin(String username,String  password,HttpServletRequest request,HttpServletResponse  response,HttpSession session) throws IOException{
     if("admin".equals(username)&&"123".equals(password)){
           session.setAttribute("username", username);
           return "redirect:list";
     }
           request.setAttribute("info", "账号或密码错误");
           return "login";
}

新建一个filter过滤器类,右键点击filter包,新建一个类,名为LoginFilter
在这里插入图片描述
filter类为过滤器,内容为

public class CheckLoginFilter implements Filter {
    public void destroy() {
        // TODO Auto-generated method stub
    }
    public void doFilter(ServletRequest arg0, ServletResponse arg1,
            FilterChain arg2) throws IOException, ServletException {
        // TODO Auto-generated method stub
        HttpServletRequest request=(HttpServletRequest)arg0;
        HttpServletResponse response=(HttpServletResponse)arg1;
        Object user=request.getSession().getAttribute("username");
        System.out.println("进入过滤器----------------");
        //都是获取请求地址
        String requestURI=request.getRequestURI();//只获取项目名称之后的
        StringBuffer requestURL=request.getRequestURL();//获取的完整的定位路径
        //因为过滤器拦截了所有请求,我们把请求地址中含有jsp和userLogin的放弃拦截
        if(requestURI.equals("jsp")||requestURI.equals("user")||user!=null){
            arg2.doFilter(arg0, arg1);
        }else{
            response.sendRedirect(request.getContextPath()+"/user/login.jsp");
        }
    }
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
    }
}

以上为配置filter过滤器的过程。

猜你喜欢

转载自blog.csdn.net/weixin_44001965/article/details/92581544
今日推荐