SSM配置Interceptor

在WEB应用当中,有时候我们需要在某一个特定的操作之前做一些判断,比如在将商品添加进购物车之前判断用户是否登录,或者在某一请求之前判断用户是否有权限使用该功能,那么这些情况下我们就要使用到Interceptor了,在SpringMVC当中,配置一个自定义的拦截器是十分简单的,主要步骤就是两步:1.新建拦截器类 。2.在SpringMVC中配置拦截器类。

下面我直接上代码,首先是Intercepor:

package com.demo.Interceptor;


import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

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

public class MyInterceptor implements HandlerInterceptor {


    /**
     * 该方法将在请求处理之前进行调用,只有该方法返回true,才会继续执行后续的Interceptor和Controller,
     * 当返回值为true 时就会继续调用下一个Interceptor的preHandle 方法,
     * 如果已经是最后一个Interceptor的时候就会是调用当前请求的Controller方法;
     * @param httpServletRequest
     * @param httpServletResponse
     * @param o
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {

        //此方法在handler被调用之前调用
        System.out.println("preHandle******");

        //返回值,true则放行否则一直阻塞相应的handler
        return true;
    }
    /**
     * 该方法将在请求处理之后,DispatcherServlet进行视图返回渲染之前进行调用
     * 可以在这个方法中对Controller 处理之后的ModelAndView 对象进行操作。
     */
    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle******");
    }

    /**
     * 该方法也是需要当前对应的Interceptor的preHandle方法的返回值为true时才会执行,该方法将在整个请求结束之后,
     * 也就是在DispatcherServlet 渲染了对应的视图之后执行。用于进行资源清理。
     * @param httpServletRequest
     * @param httpServletResponse
     * @param o
     * @param e
     * @throws Exception
     */
    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
        //此方法在handler返回之后调用
        System.out.println("afterCompletion******");
    }
}

SpringMVC中的配置:

<mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/test"/>
            <bean class="com.demo.Interceptor.MyInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

Controller的代码:

package com.demo.controller;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class InterceptorController {

    @RequestMapping("/test")
    @ResponseBody
    public String test(){
        System.out.println("testContoller");
        return "ok";
    }

}

测试结果:

23-Apr-2018 19:55:24.906 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory D:\apache-tomcat-8.0.47\webapps\manager
23-Apr-2018 19:55:24.953 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory D:\apache-tomcat-8.0.47\webapps\manager has finished in 46 ms
preHandle******
testContoller
postHandle******
afterCompletion******
用起来还是挺简单的,至于里边的参数,request和response和controller是同一个,其余的参数等遇到的时候在细说!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSM(Spring + SpringMVC + MyBatis)是一种经典的JavaWeb开发框架,下面简单介绍一下SSM配置。 1. 配置Spring:在Spring配置文件中,需要配置数据源、事务管理器、Spring扫描包、Spring MVC等相关内容。 2. 配置SpringMVC:在Spring MVC配置文件中,需要配置视图解析器、处理器映射、拦截器等相关内容。 3. 配置MyBatis:在MyBatis配置文件中,需要配置数据源、Mapper映射文件、SqlSessionFactory等相关内容。 4. 整合SSM:在整合SSM时,需要在web.xml中配置DispatcherServlet和ContextLoaderListener,并将Spring和Spring MVC的配置文件引入。 下面是一个简单的SSM配置示例: 1. Spring配置文件 applicationContext.xml: ``` <!-- 数据源配置 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> <!-- MyBatis配置 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis-config.xml" /> <property name="mapperLocations" value="classpath:mappers/*.xml" /> </bean> <!-- 事务管理器配置 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- Spring扫描包 --> <context:component-scan base-package="com.example" /> ``` 2. Spring MVC配置文件 springmvc.xml: ``` <!-- 视图解析器配置 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> <!-- 处理器映射配置 --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> <!-- 拦截器配置 --> <mvc:interceptors> <bean class="com.example.interceptor.LoginInterceptor" /> </mvc:interceptors> ``` 3. MyBatis配置文件 mybatis-config.xml: ``` <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <setting name="cacheEnabled" value="true" /> </settings> </configuration> ``` 4. web.xml配置文件: ``` <!-- Spring MVC配置 --> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- Spring配置 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值