阅读导航
文章目录
01、 在容器中注册视图控制器
1.1、实现
当页面跳转时,我们需要在Controller里面创建一个空方法去跳转,那么有没有别的配置方法呢
创建一个
WebMvcConfig
的配置类实现WebMvcConfigurer
重写addViewControllers
方法
以前:
<mvc:view-controller path="/hello" view-name="success"/>
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/hello"/>
<bean></bean>
</mvc:interceptor>
</mvc:interceptors>
现在:
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
//index/hello --->IndexController--->templates/hello.html
//请求转发
registry.addViewController("/index/hello").setViewName("hello");
//请求重定向
registry.addRedirectViewController("/index/userlist","/userlist.html");
}
}
1.2、原理
-
WebMvcAutoConfiguration
是SpringMVC的自动配置类 -
在做其他自动配置时会导入;
@Import(EnableWebMvcConfiguration.class)
@Configuration public static class EnableWebMvcConfiguration extends DelegatingWebMvcConfiguration { private final WebMvcConfigurerComposite configurers = new WebMvcConfigurerComposite(); //从容器中获取所有的WebMvcConfigurer @Autowired(required = false) public void setConfigurers(List<WebMvcConfigurer> configurers) { if (!CollectionUtils.isEmpty(configurers)) { this.configurers.addWebMvcConfigurers(configurers); //一个参考实现;将所有的WebMvcConfigurer相关配置都来一起调用; @Override // public void addViewControllers(ViewControllerRegistry registry) { // for (WebMvcConfigurer delegate : this.delegates) { // delegate.addViewControllers(registry); // } } } }
-
容器中所有的
WebMvcConfigurer
都会一起起作用; -
我们的配置类也会被调用;
结论:SpringMVC的自动配置和我们的扩展配置都会起作用;
02、 日期格式化说明
1、修改IndexController
2、修改yml
3、总结
- yml里面配置了格式 类里面也配置格式 那么以类为准
- 如果类里面没有有配置那么以yml里面的配置为准
- yml里面配置是全局有效的
03、消息转化器扩展fastjson
从后台传数据到前台
3.1、Jackson的写法
1、准备工作修改User
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
@JsonProperty(value = "userid")
private Integer id;
private String name;
private String address;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date brith;
}
2、准备工作修改IndexController
3、测试
3.2、扩展fastjson的写法
1、加入fastjson的依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
2、修改配置类
/**
* 自定义扩展消息转化器[平时不配,因为有jaskson的转化器]
* @param converters
*/
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
FastJsonHttpMessageConverter fc=new FastJsonHttpMessageConverter();
FastJsonConfig config=new FastJsonConfig();
config.setSerializerFeatures(SerializerFeature.PrettyFormat);
fc.setFastJsonConfig(config);
converters.add(fc);
}
3、修改User
4、测试
04、注册拦截器
1、创建拦截器MyInteceptor
public class MyInteceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion");
}
}
2、在配置类中注册拦截器
以前:
<inteceptors>
<interceptor>
</intecepror>
</inteceprots>
现在:
//注册拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
//super.addInterceptors(registry);
//静态资源; *.css , *.js
//SpringBoot已经做好了静态资源映射
registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/index.html","/","/user/login");
}
};
return adapter;
}
其他
我的副业:觉得我的文章写得不错就支持一下我的副业吧
- 地址一:https://lsqstudy.github.io/post/d76a15aa112345.html
- 地址二:https://lsqstudy.gitee.io/post/d76a15aa112345.html
我的其他平台
作者做笔记不容易,请评个分吧!
- 如果觉得文章写行不错就点个 赞。✌
- 如果觉得写得好就 一键三连!✌✌✌
- 如果文章对你很有帮助,请 打赏。 💃💃💃💃💃