16174427 2022-07-21 10:35 采纳率: 0%
浏览 25
已结题

关于Filter进行限制访问的问题!(语言-java)

  1. 问题:
    (1)想要的效果:
    在过滤器中,进行简单的限制访问。
    使用request.getRequestURI()获取链接,在登录servlet中,当用户输入账号密码点击登录按钮后,使用session存储user、用户名键值对,随后在跳转至主页面;当链接不是以login.jsp结尾且session存储的user为null,则跳转至登录界面login.jsp。
    (2)出现的问题:
    当跳转至登录页面点击登录后,提示如下错误。

  2. 问题相关代码:
    (1)过滤器:

@WebFilter(urlPatterns = "/*")
public class WebFilter1 implements Filter {

    @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;
        HttpSession session = request.getSession();
        //限制访问
        String requestURI = request.getRequestURI();
        Object user = session.getAttribute("user");
        if((!requestURI.endsWith("login.jsp")) && user==null){
            response.sendRedirect("/login.jsp");
        }

        filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {}
}

(2)登录页面对应servlet:

@WebServlet(urlPatterns = "/login")
public class LoginServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String userName = req.getParameter("userName");
        String password = req.getParameter("password");

        UsersService usersService = new UsersServiceImpl();
        Users users = usersService.loginResult(userName, password);

        resp.setContentType("text/html;charset=utf-8");
        if(users == null){
            PrintWriter writer = resp.getWriter();
            writer.println("<script>location.href='login.jsp';alert('用户名或密码不正确')</script>");
        }else{
            HttpSession session = req.getSession();
            session.setAttribute("user",users);  
            resp.sendRedirect("index.jsp");
        }
    }
}

  1. 报错内容 :

img

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 7月29日
    • 创建了问题 7月21日

    悬赏问题

    • ¥15 为什么跑这个代码,文件显示不在呀
    • ¥15 一道ban了很多东西的pyjail题
    • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
    • ¥15 C++识别堆叠物体异常
    • ¥15 微软硬件驱动认证账号申请
    • ¥15 GPT写作提示指令词
    • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
    • ¥20 关于DAC输出1.000V对分辨率和精度的要求
    • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题
    • ¥15 哪位能做百度地图导航触点播报?