拦截器为什么对main.jsp页面不进行拦截呢?

拦截器为什么对main.jsp页面不进行拦截呢?

package com.imooc.restful.controller;

import com.imooc.restful.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpSession;

@Controller
public class UserController {
    @PostMapping("/login")
    public ModelAndView login(User user , HttpSession session){
        ModelAndView mav = null;
        System.out.println(user);
        if (user.getName().equals("admin") && user.getPassword().equals("admin")){
            mav = new ModelAndView("/main.jsp");
            session.setAttribute("user" , user);
            System.out.println("user已保存至session,user=" + (User)session.getAttribute("user"));
            mav.addObject("u" , user);
            return mav;
        }else {
            mav = new ModelAndView("/login.jsp");
            mav.addObject("msg" , "用户名或密码错误,请重新登陆");
            return mav;
        }
    }
}
package com.imooc.restful.inteceptor;

import com.imooc.restful.entity.User;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        User user = (User) request.getSession().getAttribute("user");
        System.out.println("拦截器启动,user=" + user);
        if (user != null){
            System.out.println("拦截器放行");
            return true;
        }else {
            System.out.println("拦截器拦截");
            response.sendRedirect("/login.jsp");
            return false;
        }
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mv="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <context:component-scan base-package="com.imooc.restful"/>
    <mvc:default-servlet-handler/>
    <mvc:annotation-driven/>
    
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <mvc:exclude-mapping path="/login.jsp"/>
            <mvc:exclude-mapping path="/login**"/>
            <bean class="com.imooc.restful.inteceptor.LoginInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>
</beans>

https://img1.sycdn.imooc.com//climg/63ac68b709aa8fd809280282.jpg

正在回答 回答被采纳积分+1

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

1回答
好帮手慕小蓝 2022-12-29 10:23:37

同学你好,SpringMVC的拦截器正常情况下是不会拦截jsp页面的。如果同学需要拦截main.jsp,需要使用Filter来进行实现。

祝学习愉快~

  • 提问者 王小east #1

    直接访问main.jsp页面,需要验证是否已登录,这个是需要用Filter实现吗?

    2022-12-29 10:34:23
  • 好帮手慕小蓝 回复 提问者 王小east #2

    同学你好,如果使用jsp作为页面就需要使用Filter,如果使用html则可以使用拦截器。

    祝学习愉快~

    2022-12-29 10:41:18
  • 提问者 王小east 回复 好帮手慕小蓝 #3

    看其他同学展示的代码,使用的jsp作为页面,也没有配置验证是否登录的Filter呢?

    2022-12-29 11:38:47
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星

相似问题

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

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

在线咨询

领取优惠

免费试听

领取大纲

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