您的位置:首页 > 编程语言 > Java开发

Spring Boot对Spring MVC的配置

2017-11-28 09:13 211 查看
先看一下以前SSM整合时Spring MVC的xml配置

<!-- 配置SpringMVC -->
<!-- 开启SpringMVC注解模式 -->
<!-- 简化配置:
(1)自动注册DefaultAnnotationHandlerMapping,AnnotationMethodHandlerAdapter
(2)提供了一系列的功能:数据绑定,数字和日期的format@NumberFormat,@DataTimeFormat,xml,json默认读写支持 -->
<!--注解驱动-->
<mvc:annotation-driven></mvc:annotation-driven>

<!--ServletMapping映射路径:“/” -->
<!-- 静态资源默认servlet配置 1:加入对静态资源的处理:js,gif,png 2:允许使用“/”做整体映射 -->
<mvc:default-servlet-handler />

<!-- 试图解析器。配置jsp显示的ViewResolver -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property
name="viewClass"
value="org.springframework.web.servlet.view.JstlView">
</property>

<!-- 配置前缀 -->
<property name="prefix" value="/WEB-INF/production/"></property>

<!-- 配置前缀 -->
<property name="suffix" value=".jsp"></property>
</bean>

<!-- 扫描web中SpringMVC的Controller -->
<context:component-scan base-package="com.hhu.web"></context:component-scan>


首先,扫描SpringMVC和注解驱动的这几步Spring Boot已经自动配置了,使用时加@Controller即可,视图解析器这一块也已经有默认的配置,但是我们可以在全局配置中去改(前缀:spring.mvc.view.prefix=”/WEB-INF/views/”,后缀spring.mvc.view.suffix=”.jsp”,当然推荐使用yml),除此之外,还有诸如拦截器的配置,上一篇文章也有提过,步骤如下:

1.首先自定义拦截器

比如一个简单的登陆拦截器:

package com.hhu.cart.interceptors;

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

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import com.hhu.cart.service.UserService;
import com.hhu.cart.threadlocal.UserThreadLocal;
import com.taotao.common.utils.CookieUtils;
import com.taotao.sso.query.bean.User;

@Component
public class UserLoginHandlerInterceptor implements HandlerInterceptor {

public static final String COOKIE_NAME = "TT_TOKEN";

@Autowired
private UserService userService;

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
String token = CookieUtils.getCookieValue(request, COOKIE_NAME);
if (StringUtils.isEmpty(token)) {
// 未登录状态
return true;
}
User user = this.userService.queryUserByToken(token);
if (null == user) {
return true;
}
UserThreadLocal.set(user); // 将对象放入到本地线程中
return true;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {

}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception ex) throws Exception {
UserThreadLocal.set(null);
}

}


2.自定义拦截器配置继承WebMvcConfigurerAdapter,重写其中的addInterceptors方法

比如

package com.hhu.cart.spring.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import com.hhu.cart.interceptors.UserLoginHandlerInterceptor;

@Configuration
public class SpringMVCConfig extends WebMvcConfigurerAdapter {

@Autowired
private UserLoginHandlerInterceptor userLoginHandlerInterceptor;

@Override
public void addInterceptors(InterceptorRegistry registry) {
// 判断用户是否登录的拦截器,然后添加它并添加拦截规则
registry.addInterceptor(userLoginHandlerInterceptor).addPathPatterns("/cart/**");
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring mvc springboot