栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot整合springMVC(3)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot整合springMVC(3)

SpringBoot整合springMVC(3) 引子

我们上个内容说到,Application会根据我们依赖的包自动默认判断相应的组件提供给我们使用。而这次,我们整合SpringMVC主要引出几个问题:

  1. 如何修改端口?
  2. 如何加载静态资源?
  3. 如何设置拦截器?

这些就是我们目前整合前需要面对的问题。接下来我就从这三个方面来进行整合开发。

1、修改端口

这里我介绍的是以下两种方法。本人使用的是springboot2.0。

1.1 第一种方法:修改application.properties
server.port=8000

只需要在里面添加这一行一般而言就可以。按住Ctrl键点击后,看一下源码的这一段:

@ConfigurationProperties(prefix = "server", ignoreUnknownFields = true)
public class ServerProperties {

	
	private Integer port;

这里规定了以server.开头的前缀,说明此时修改端口进入的是这个类。接下来就是在SpringBoot启动的时候,会从application.properties读取到server.port的值。

1.2 第二种方法:手动配置

在IDEA中,如果你想修改端口号的话,手动也可以是一种选择。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2ZVgBVw7-1633830121582)(D:/program%20files/KaiKeBa/13/%E7%AC%94%E8%AE%B0/springboot%E6%95%B4%E5%90%88%E5%BC%80%E5%8F%91/springmvc/%E8%AE%BE%E7%BD%AE%E7%AB%AF%E5%8F%A32.png)]

在这里,就是在VM options中设置成:

-Dserver.port=8000

两者的结果都是可以成功的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kRJcVnbL-1633830121584)(D:/program%20files/KaiKeBa/13/%E7%AC%94%E8%AE%B0/springboot%E6%95%B4%E5%90%88%E5%BC%80%E5%8F%91/springmvc/%E4%BF%AE%E6%94%B9%E7%AB%AF%E5%8F%A3.png)]

还有一些文章会提到使用实现EmbeddedServletContainerCustomizer接口重写customize方法来修改端口。这里如果大家使用的是springBoot2.X还是建议不要用,因为问就是没有。这里暂时求同存异欢迎后续的补充。

2、访问静态资源

这里首先就要提及ResourceProperties的类,里面就定义了静态资源的默认查找路径:

比如随便添加一个属性前缀:

spring.resources.add-mappings=

Ctrl点击翻至上面:

@ConfigurationProperties(prefix = "spring.resources", ignoreUnknownFields = false)
public class ResourceProperties {

	private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
			"classpath:/meta-INF/resources/", "classpath:/resources/",
			"classpath:/static/", "classpath:/public/" };

	

这里的意思是,它默认的静态资源路径为:

  • classpath:/meta-INF/resources/
  • classpath:/resources/
  • classpath:/static/
  • classpath:/public

只要静态资源放在这些目录中任何一个,SpringMVC都会帮我们处理。

比如说创建一个classpath:/static/目录,将静态资源放置在次目录下。运行即可。

3、添加拦截器

1、首先定义属于自己的拦截器

public class LoginInterceptor implements HandlerInterceptor {
	private Logger logger = LoggerFactory.getLogger(LoginInterceptor.class);
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
		logger.debug("处理器执行前执行!");
		return true;
	}
	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
		logger.debug("处理器执行后执行!");
	}
	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
		logger.debug("跳转后执行!");
	}
}

2、通过实现 WebMvcConfigurer 并添加 @Configuration 注解来实现自定义部分SpringMvc配置:

@Configuration
public class MvcConfig implements WebMvcConfigurer{
	
	@Bean
	public LoginInterceptor loginInterceptor(){
		return new LoginInterceptor();
	}
	
	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		// 通过registry来注册拦截器,通过addPathPatterns来添加拦截路径
		registry.addInterceptor(this.loginInterceptor()).addPathPatterns("/**");
	}
}

这里我们使用的是Ant风格,这个风格是来自Apache中的Ant项目,这根正则表达式之间有一些区别。

通配符说明
?匹配任意单字符
*匹配任意数量的字符
**匹配任意层级的路径/目录

3、设置日志级别

# 设置com.xaf包的日志级别为debug  这里根据自己的报名填写
logging.level.com.lxs=debug

4、运行结果

2021-10-10 09:40:01.811 DEBUG 4548 --- [p-nio-80-exec-1] com.lxs.interceptor.LoginInterceptor
: preHandle method is now running!
2021-10-10 09:40:01.854 DEBUG 4548 --- [p-nio-80-exec-1] com.lxs.interceptor.LoginInterceptor
: postHandle method is now running!
2021-10-10 09:40:01.854 DEBUG 4548 --- [p-nio-80-exec-1] com.lxs.interceptor.LoginInterceptor
: afterCompletion method is now running!
总结

以上就是根据SpringMVC整合的部分,谢谢大家的阅读。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/315311.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号