老师为啥我这样写拦截器没法拦截

正在回答

登陆购买课程后可参与讨论,去登陆

10回答

同学你好,非常感谢同学的反馈。

我这里也已经反馈到平台相关部门呢~

同学下次可以使用“意见反馈”直接说明关于平台的问题哦~

http://img1.sycdn.imooc.com//climg/5cf7a6ea00013ec706800942.jpg

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • MasonM 提问者 #1
    好的谢谢老师!感谢老师你的耐心指导!
    2019-06-05 19:29:38
吃吃吃鱼的猫 2019-06-05 18:50:28

同学很棒哦~

改的是正确的呢~

继续加油吧,祝:学习愉快~

  • 提问者 MasonM #1
    老师为什么我点采纳会提示没有相关操作权限呢?我试过重新登录也不行
    2019-06-05 18:55:04
  • 提问者 MasonM #2
    APP端就这样,安卓的
    2019-06-05 18:55:50
提问者 MasonM 2019-06-05 17:55:23

我按照老师说的改写一下代码

http://img1.sycdn.imooc.com//climg/5cf791220001e06313380508.jpg

拦截器↑

jsp页面↓

http://img1.sycdn.imooc.com//climg/5cf79141000140b710590738.jpg

然后拦截成功之后

http://img1.sycdn.imooc.com//climg/5cf791760001b03b14480842.jpg

就是这样,请问老师我做的对吗?

吃吃吃鱼的猫 2019-06-05 17:31:02

同学你好,可以参考如下思路进行编写:

1、在留言板页面点击登录时,使用超链接跳转至登录页面,可以参考如下代码:

http://img1.sycdn.imooc.com//climg/5cf7878d000119e804650021.jpg

2、在登录页面点击提交按钮时,提交至名为Login的Servlet中处理登录请求。

如果存在此用户,放入session,转发至首页。

不存在此用户时,转发至登录页面。可以参考如下代码:

http://img1.sycdn.imooc.com//climg/5cf787e00001d25a03980024.jpg

http://img1.sycdn.imooc.com//climg/5cf7898d00019a2405710020.jpg

http://img1.sycdn.imooc.com//climg/5cf7897a0001112e09170212.jpg

3、额外添加拦截器,判断是否登录。

当没有登录时,直接重定向至登录页面。当登录后,再转发请求。需要使用return;

原因如下:过滤器执行完chain.dofilter(req,resp)后,放行到你所指向的servlet或jsp,执行完servlet或者jsp后,可能会重新回到过滤器执行完剩余代码,要是你在剩余代码中又有请求发出,程序就会发生发出多次请求错误。所以,建议加上return。

可以参考如下代码:

http://img1.sycdn.imooc.com//climg/5cf78b0200016b6c09580194.jpg

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 MasonM #1
    谢谢老师,请看下我的新代码如何?
    2019-06-05 17:53:26
吃吃吃鱼的猫 2019-06-05 16:46:30

同学你好,

1、登录页面为什么是add_message页面呢?

http://img1.sycdn.imooc.com//climg/5cf77fde00010e2009950291.jpg

2、在jsp页面是否有定义loginUser对象呢?

http://img1.sycdn.imooc.com//climg/5cf781420001af0405030348.jpg

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~


  • 提问者 MasonM #1
    因为我是用转发的方式跳转到登录页面的呀
    2019-06-05 16:48:20
  • 提问者 MasonM #2
    有loginUser对象,因为登录成功之后,我把用户信息封装成User对象存储在session中
    2019-06-05 16:49:15
提问者 MasonM 2019-06-05 12:53:52

我把拦截器改成这个

package com.mason.web.filter;

import com.mason.domain.User;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

@WebFilter(urlPatterns = "/jsp/*",filterName = "/UserFilter")
public class UserFilter implements Filter {
    public void destroy() {
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        HttpServletRequest request = (HttpServletRequest) req;
        User loginUser = (User) request.getSession().getAttribute("loginUser");
        System.out.println(loginUser);
        if (loginUser == null) {
            request.setAttribute("msg", "你还没登录,请先登录!");
            request.getRequestDispatcher("/login.jsp").forward(request,resp);
            return;
        }
        chain.doFilter(req, resp);

    }

    public void init(FilterConfig config) throws ServletException {

    }

}

我在登录成功的时候,把用户信息封装成一个User对象存入Session中,

然后在拦截器中判断是否为空

然后拦截成功之后

登录页面显示异常

http://img1.sycdn.imooc.com//climg/5cf74ad1000195ad12580368.jpghttp://img1.sycdn.imooc.com//climg/5cf74ad90001250313110510.jpg

吃吃吃鱼的猫 2019-06-05 11:49:21

同学你好,existUser无法等于null的同时也等于“”呢,将下图标识&&换为||再进行测试哦~

http://img1.sycdn.imooc.com//climg/5cf73b700001d17b04930077.jpg

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 MasonM #1
    老师那我拦截成功之后页面跳转显示异常怎么办?
    2019-06-05 11:51:37
  • 吃吃吃鱼的猫 回复 提问者 MasonM #2
    同学改过之后还有异常吗?
    2019-06-05 11:58:57
  • 提问者 MasonM 回复 吃吃吃鱼的猫 #3
    老师请看我的回答
    2019-06-05 12:52:00
提问者 MasonM 2019-06-04 19:15:13

而且我发现一个问题,我拦截成功之后,跳转到登录页面会显示异常

http://img1.sycdn.imooc.com//climg/5cf652b40001b4d114120397.jpg

http://img1.sycdn.imooc.com//climg/5cf652be000176b507020532.jpg

提问者 MasonM 2019-06-04 19:13:22

http://img1.sycdn.imooc.com//climg/5cf6523a0001f74614540419.jpg

但我不知道为啥我这样写的话

会拦截不了

if (existUser == null&&"".equals(existUser)) {
    request.setAttribute("msg", "你还没登录,请先登录!");
    request.getRequestDispatcher("/login.jsp").forward(request,resp);
    return;
}


提问者 MasonM 2019-06-04 19:06:33

这样也不行,不知道为啥会404

http://img1.sycdn.imooc.com//climg/5cf650b00001e80c17890861.jpg

http://img1.sycdn.imooc.com//climg/5cf650b70001e69911540371.jpg

  • 提问者 MasonM #1
    我知道了,我转发的/login忘记加.jsp了
    2019-06-04 19:12:11
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师