Spring——Java代码配置web.xml和spring.xml
- 一、web.xml 配置文件
- 二、spring.xml 配置文件
注:常用的web配置和spring配置。。。(持续补充中)
一、web.xml 配置文件
早期的Java Web项目必须要有web.xml文件作为项目的入口配置文件。 Servlet 3.0之后提供了一个接口 ServletContainerInitializer
允许在容器启动阶段通过代码进行 Servlet、Filter、Listener等注册以及初始化参数配置等。【即取代web.xml配置文件】【Tomcat 7以后版本开始支持Servlet 3.0】
/**
* SpringMVC的配置类
*/
@Configuration
@ComponentScan("com.ccbx.controller")
//开启注解驱动【否则未使用@Bean的方法就不起作用】
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
//使用默认的servlet(Tomcat中的DefaultServlet)处理静态资源
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
//配置消息转换器
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
// 处理响应中文内容的乱码【场景:@ResponseBody注解修饰的字符串返回值回显到浏览器上】
StringHttpMessageConverter messageConverter = new StringHttpMessageConverter(Charset.forName("UTF-8"));
// springmvc通过默认的json转换器可以把pojo对象(bean)或集合转换为json数据响应给客户端
MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
converters.add(messageConverter);
converters.add(jackson2HttpMessageConverter);
}
//配置文件上传解析器
@Bean
public CommonsMultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
multipartResolver.setDefaultEncoding("UTF-8");
//文件最大上传字节数【5*1024*1024=5242880字节】
multipartResolver.setMaxUploadSize(5242880);
return multipartResolver;
}
//添加自定义的拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
MyInterceptor myInterceptor=new MyInterceptor();
// <mvc:mapping path="/**"/>对应的addPathPatterns():拦截所有请求(拦截Controller所有的方法调用)
// excludePathPatterns():不拦截哪些请求
registry.addInterceptor(myInterceptor).addPathPatterns("/**").excludePathPatterns("/","/my/test3");
}
//注册Shiro方言对象
@Bean
public ShiroDialect shiroDialect() {
return new ShiroDialect();
}
//********************** 【thymeleaf视图模板配置依赖关系】 视图解析器 <-- 模板引擎 <-- 模板解析器 ************************
//配置模板解析器
@Bean
public SpringResourceTemplateResolver templateResolver() {
SpringResourceTemplateResolver srtr = new SpringResourceTemplateResolver();
//前缀【设置要添加到所有模板名称的新(可选)前缀,以便将模板名称转换为资源名称】
srtr.setPrefix("/WEB-INF/templates/");
//后缀【设置要添加到所有模板名称的新(可选)后缀,以便将模板名称转换为资源名称】
srtr.setSuffix(".html");
//设置要应用于此解析器解析的模板的模板模式
srtr.setTemplateMode(TemplateMode.HTML);
//开发时禁用thymeleaf的缓存功能,就能实时看到修改后的界面【项目上线的时候关闭】
srtr.setCacheable(false);
//设置用于读取模板资源的新字符编码
srtr.setCharacterEncoding("UTF-8");
return srtr;
}
//配置模板引擎并为模板引擎注入模板解析器
@Bean
public SpringTemplateEngine templateEngine(SpringResourceTemplateResolver templateResolver,ShiroDialect shiroDialect) {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
//为此模板引擎设置单个模板解析器
templateEngine.setTemplateResolver(templateResolver);
Set<IDialect> dialectSet = new HashSet<>();
dialectSet.add(shiroDialect);
//为这个模板引擎设置一组额外的方言,所有方言都使用它们的默认前缀
templateEngine.setAdditionalDialects(dialectSet);
return templateEngine;
}
//配置视图解析器并为解析器注入模板引擎
@Bean
public ViewResolver viewResolver(SpringTemplateEngine templateEngine) {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
//指定在呈现视图时要设置到响应中的字符编码
viewResolver.setCharacterEncoding("UTF-8");
//设置用于处理模板的模板引擎实例
viewResolver.setTemplateEngine(templateEngine);
return viewResolver;
}
}
二、spring.xml 配置文件
/**
* 代替springmvc.xml的配置文件的类
*/
//【表明该类是配置类】表示一个类声明了一个或多个@Bean方法,并且可能会被 Spring 容器处理以在运行时为这些 bean 生成 bean 定义和服务请求
@Configuration
//扫描service层的配置类
@ComponentScan("com.ccbx.service")
//@MapperScan扫描Mapper接口,用value指定扫描的包
@MapperScan("com.ccbx.mapper")
//导入其它的配置类
@Import({DataSourceConfig.class,ShiroConfig.class})
//开启注解事务支持
@EnableTransactionManagement
public class SpringConfig {
//注册事务管理器
@Bean
public DataSourceTransactionManager dataSourceTransactionManager(DruidDataSource druidDataSource) {
DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
dataSourceTransactionManager.setDataSource(druidDataSource);
return dataSourceTransactionManager;
}
//MyBatis整合Spring后,要用SqlSessionFactoryBean对象类管理SqlSession,进而与数据库交互
//注册SqlSessionFactoryBean
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean(DruidDataSource druidDataSource) {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(druidDataSource);
//下面配置代替myBatis-config.xml中的package标签,给包下的类统一设置别名
//sqlSessionFactoryBean.setTypeAliasesPackage("com.ccbx.pojo");
//指定Mybatis映射文件Mapper.xml的路径
Resource[] mapperLocations = {
new ClassPathResource("mappers/StudentMapper.xml"),
new ClassPathResource("mappers/TeacherMapper.xml"),
new ClassPathResource("mappers/UserLoginMapper.xml")};
sqlSessionFactoryBean.setMapperLocations(mapperLocations);
//设置分页插件
Interceptor pageInterceptor = new PageInterceptor();
Properties p = new Properties();
p.setProperty("helperDialect", "mysql");
pageInterceptor.setProperties(p);
Interceptor[] interceptors = {pageInterceptor};
sqlSessionFactoryBean.setPlugins(interceptors);
return sqlSessionFactoryBean;
}
//BeanFactory
//ApplicationContext
//BeanFactoryPostProcessor
}