「已注销」 2024-05-13 11:27 采纳率: 85.2%
浏览 5
已结题

掌握springMVC中拦截器的使用方法

使用拦截器完成以下功能:

只有经过登录的用户方可访问处理器,否则,将返回“无权访问”提示。
本例的登录,由一个 JSP 页面完成。即在该页面里将用户信息放入 session 中。也就是说,只要访问过该页面,就说明登录了。没访问过,则为未登录用户。

  • 写回答

3条回答 默认 最新

  • 关注

    上午好☀️☀️☀️️
    本答案参考ChatGPT-3.5

    在Spring MVC中,拦截器可以通过实现HandlerInterceptor接口来完成。在使用拦截器时,需要先定义拦截器类,然后在配置文件中将其配置为Bean。最后在配置文件中使用mvc:interceptors标签将拦截器添加到拦截器链中。

    具体步骤如下:

    1. 定义拦截器类,实现HandlerInterceptor接口。

    代码示例:

    public class LoginInterceptor implements HandlerInterceptor {
     
        // 在请求处理前进行拦截
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            // 获取session中保存的用户信息
            Object user = request.getSession().getAttribute("user");
            if (user != null) {
                // 用户已登录,放行请求
                return true;
            } else {
                // 用户未登录,返回“无权访问”提示
                response.setContentType("text/html;charset=UTF-8");
                PrintWriter out = response.getWriter();
                out.write("无权访问");
                return false;
            }
        }
     
        // 在请求处理后进行拦截
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
            // do nothing
        }
     
        // 在请求处理完成后进行拦截
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
            // do nothing
        }
    }
    
    
    1. 在配置文件中将拦截器配置为Bean。

    代码示例:

    <bean id="loginInterceptor" class="com.example.interceptor.LoginInterceptor" />
    
    1. 在配置文件中添加mvc:interceptors标签,将拦截器添加到拦截器链中。

    代码示例:

    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**" />
            <mvc:exclude-mapping path="/login" /> <!-- login页面不进行拦截 -->
            <bean class="com.example.interceptor.LoginInterceptor" />
        </mvc:interceptor>
    </mvc:interceptors>
    
    

    其中,<mvc:mapping path="/**" />表示对所有请求进行拦截,<mvc:exclude-mapping path="/login" />表示不对login页面进行拦截。

    1. 在JSP页面中将用户信息放入session中。

    代码示例:

    <% 
        // 登录成功后将用户名放入session中
        session.setAttribute("user", "John");
    %>
    

    完成以上步骤后,就可以使用拦截器来对请求进行拦截,实现只有登录的用户才能访问处理器的功能。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月21日
  • 已采纳回答 5月13日
  • 创建了问题 5月13日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?