过滤器
-
首先定义一个xx类,实现Filter,重写方法
-
写一个集合,内容为需要放行的接口,jsp页面,静态资源
-
String [] IG_lo={"/index.jsp","/loginFrom.jsp","/login","/",".js",".css",".jpg"};
-
将servletRequest强制转换为HttpServletRequest
- 将servletResponse强制转换成HttpServletResponse
HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response= (HttpServletResponse) servletResponse;
-
获取本次请求的URI
String requestURI = request.getRequestURI();
-
for循环判断是否和放行的一致(注意endwiths)
-
//for循环判断是否和放行的相同 for (String s:IG_lo){ //判断它的后缀名是否和本次请求的URI相同 if (requestURI.endsWith(s)){ //直接放行 filterChain.doFilter(request,response); return; } }
-
获取用户登录信息,为了判断是否是数据库中的人
User login_user = (User) request.getSession().getAttribute("login_user");
-
判断用户是否登录
if(login_user!=null){ filterChain.doFilter(request,response); }else { request.setAttribute("login_error","您还未登录,登录后访问!"); //用户为登录,转发到首页 request.getRequestDispatcher("/index.jsp").forward(request,response); }
-
在web.xml中配置这个过滤器
<!-- 登录的过滤器--> <filter> <filter-name>loginFilter</filter-name> <filter-class>com.ssp.Filter.LoginFilter</filter-class> </filter> <filter-mapping> <filter-name>loginFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
- 整体代码
package com.ssp.Filter; import com.ssp.common.beans.User; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; //1.首先创建一个过滤器类,让这个实现Filter //2.定义需要放行的页面,接口,样式 //3.强制类型转化成HttpServlet // HttpServletRequest request = (HttpServletRequest) servletRequest; // HttpServletResponse response= (HttpServletResponse) servletResponse; //4.获取本次请求的URI, // String requestURI = request.getRequestURI(); //5. // for循环判断是否和放行的相同 // for (String s:IG_lo){ // //判断它的后缀名是否和本次请求的URI相同 // if (requestURI.endsWith(s)){ // //直接放行 // filterChain.doFilter(request,response); // return; // } // } //6. 获取用户登录信息 // User login_user = (User) request.getSession().getAttribute("login_user"); //7. 判断用户已经登录 // if(login_user!=null){ // filterChain.doFilter(request,response); // }else { // 显示提示信息 // request.setAttribute("login_error","您还未登录,登录后访问!"); // // //用户为登录,转发到首页 // request.getRequestDispatcher("/index.jsp").forward(request,response); // // } public class LoginFilter implements Filter { String [] IG_lo={"/index.jsp","/loginFrom.jsp","/login","/",".js",".css",".jpg"}; @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response= (HttpServletResponse) servletResponse; //获取本次请求的URI String requestURI = request.getRequestURI(); //for循环判断是否和放行的相同 for (String s:IG_lo){ //判断它的后缀名是否和本次请求的URI相同 if (requestURI.endsWith(s)){ //直接放行 filterChain.doFilter(request,response); return; } } //获取用户登录信息 User login_user = (User) request.getSession().getAttribute("login_user"); //判断用户已经登录 if(login_user!=null){ filterChain.doFilter(request,response); }else { request.setAttribute("login_error","您还未登录,登录后访问!"); //用户为登录,转发到首页 request.getRequestDispatcher("/index.jsp").forward(request,response); } } @Override public void destroy() { } }