我的过滤器怎么没有过滤效果
过滤器代码
package com.book.mlibrary.filter;
import com.book.mlibrary.entity.User;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebFilter(filterName = "AuthFilter",urlPatterns = "/*")
public class AuthFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)resp;
User existUser = (User)request.getSession().getAttribute("existUser");
String requestURI = request.getRequestURI();
System.out.println(requestURI);
boolean flag = false;
//不需要过滤的url
String[] urls = {"/login",".html",".js",".css",".ico",".jpg",".png"};
for (String str :
urls) {
if (requestURI.indexOf(str) != -1) {
flag = true;
break;
}
}
if (flag) {
chain.doFilter(request, response);
} else {
if (existUser != null) {
chain.doFilter(request, response);
} else {
request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);
}
}
}
public void init(FilterConfig config) throws ServletException {
}
}登录控制器LoginController代码
package com.book.mlibrary.controller;
import com.book.mlibrary.entity.User;
import com.book.mlibrary.service.UserServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;
@WebServlet(name = "LoginController",urlPatterns = "/login")
public class LoginController extends HttpServlet {
private UserServiceImpl userService = new UserServiceImpl();
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<User> userList = (List<User>) request.getServletContext().getAttribute("userList");
HttpSession session = request.getSession();
String username = request.getParameter("username");
String password = request.getParameter("password");
User user = new User();
user.setUsername(username);
user.setPassword(password);
int login = userService.login(userList, user);
if (login == 1) {
session.setAttribute("existUser", user);
} else {
session.setAttribute("existUser",null);
}
request.getRequestDispatcher("WEB-INF/jsp/categoryList.jsp").forward(request,response);
System.out.println(session.getAttribute("existUser"));
}
}麻烦老师康康~
46
收起
正在回答
4回答
同学你好,在如下的代码中,if(login ==1) 登录成功转发到categoryList.jsp页面,在else中,登录失败跳转到登录页面,下边的转发语句去掉。

本次访问路径中有login,在过滤器中是被放行的,所以需要在if和else中具体写登录成功或者失败需要转发的页面。
祝:学习愉快~
女神旭
2020-10-13 19:20:15
UserServiceImpl 代码
package com.book.mlibrary.service;
import com.book.mlibrary.entity.User;
import com.book.mlibrary.utils.XmlDataSource;
import java.util.List;
public class UserServiceImpl {
/**
* 校验用户是否存在
* @param userList
* @param user 待校验的用户
* @return 1-用户存在 0-用户不存在
*/
public int login(List<User> userList, User user) {
for (User u :
userList) {
if (u.getUsername().equals(user.getUsername()) && u.getPassword().equals(user.getPassword())) {
return 1;
}
}
return 0;
}
}
java工程师2020版
- 参与学习 人
- 提交作业 9410 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星