Spring学习-05 Spring整合SpringMVC(纯注解)

Spring学习-05 Spring整合SpringMVC(纯注解)

文件目录结构

│  pom.xml
└─src
    └─main
        ├─java/com/min/spring
        │              ├─config/WebMvcConfig.java
        │              │  ├─listener/ContextLoaderListenerConfig.java
        │              │  ├─servlet/DispatchServletConfig.java
        │              │  └─web/WebConfiguration.java
        │              └─controller
        │                      HelloController.java
        ├─resources
        │      application.properties
        └─webapp
            ├─static
            └─WEB-INF
                └─views
                        hello.jsp
                        index.jsp

05.01 配置文件(WebConfiguration.java)

  • 项目发布后实现AbstractAnnotationConfigDispatcherServletInitializer接口会自动运行

  • 加载ContextLoaderListenerConfig.java配置

  • 加载DispatchServletConfig.java配置

public class WebConfiguration extends AbstractAnnotationConfigDispatcherServletInitializer {

	/**
	 * 返回带有@Configuration注解的类会用来定义ContextLoaderListener
	 * 创建ApplicationContext中的bean(非web组件)
	 */
	@Override
	protected Class<?>[] getRootConfigClasses() {
		
		return new Class<?>[] {ContextLoaderListenerConfig.class};
	}

	/**
	 * 返回带有@Configuration注解的类用来定义DispatcherServlet上下文中的bean(web组件)
	 */
	@Override
	protected Class<?>[] getServletConfigClasses() {
		
		return new Class<?>[] {DispatchServletConfig.class};
	}

	/**
	 * 请求路径配置,配置为"/"表示它将处理所有请求
	 */
	@Override
	protected String[] getServletMappings() {
		
		return new String[] {"/"};
	}
	@Override
	protected Filter[] getServletFilters() {

		return new Filter[] {
				new CharacterEncodingFilter("utf-8",true)};
	}
}

05.02 配置文件(ContextLoaderListenerConfig.java)

  • 等同于配置文件spring-context.xml
@Configuration
@ComponentScan(value="com.min",
        excludeFilters = { //扫描排除的内容
           @ComponentScan.Filter(type= FilterType.ANNOTATION,
           classes={Controller.class})
        })
public class ContextLoaderListenerConfig {

}

05.03 配置文件(DispatchServletConfig.java)

  • 配置视图解析器

  • 扫描Controller注解

@Configuration
@ComponentScan(value="com.min",
		includeFilters = { //代表字扫描的内容
				@ComponentScan.Filter(type= FilterType.ANNOTATION,classes={Controller.class})
		},
		useDefaultFilters = false)
@EnableWebMvc
@PropertySource("classpath:application.properties")
public class DispatchServletConfig implements WebMvcConfigurer {

	@Value("${web.view.prefix}")
	private String WebViewPrefix;

	@Value("${web.view.suffix}")
	private String WebViewSuffix;

	//配置视图解析器
	@Bean
	public ViewResolver viewResolver() {
		InternalResourceViewResolver resolver = new InternalResourceViewResolver();
		resolver.setPrefix(WebViewPrefix);
		resolver.setSuffix(WebViewSuffix);
		return resolver;
	}
	
	/**
	 * 没有此配置,dispatcherServlet会映射为应用的默认servlet,
	 * 所以他为处理所有请求,包括静态资源,如图片的样式表
	 * 这并不是我们想要的
	 */
	@Override
	public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
		configurer.enable();
	}
}

05.04 配置文件(WebMvcConfig.java)

  • StringHttpMessageConverter
  • 静态资源配置
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
//        System.out.println("extendMessageConverters222 run");
        StringHttpMessageConverter stringConverter
                = new StringHttpMessageConverter(Charset.forName("UTF-8"));
        converters.add(0, stringConverter);
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**")
                .addResourceLocations("/static/")
                .setCachePeriod(31536000);

    }
}

05.05 控制器Controller(HelloController.java)

@Controller
public class HelloController {
    @RequestMapping("/")
    public String hello(){
        return "index";
    }
    @RequestMapping("/hello")
    public String hello(Model model){
        model.addAttribute("message", "你好,MVC");
        return "hello";
    }

    @RequestMapping("/string")
    @ResponseBody
    public String string(){
        return "string字符串";
    }

    @RequestMapping("/map")
    @ResponseBody
    public Map<String,String> getmap(){
        Map<String,String> map=new HashMap<>();
        map.put("A","姓名");
        map.put("B", "年龄");
        return map;
    }
}

05.06 页面(index.jsp)

WEB-INF/views/index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java"  
    pageEncoding="UTF-8"  %>
<html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
</head>
<body>
    Hello index <br />
    <a href="/hello" >hello.jsp页面</a><br />
    <a href="/string" >返回字符串</a><br />
    <a href="/map" >返回JSON字符串</a>
</body>
</html>

05.07 页面(hello.jsp)

WEB-INF/views/hello.jsp

<%@ page contentType="text/html;charset=UTF-8" 
    language="java" %>
<html>
<head>
    <title>hello</title>
</head>
<body>
   hello.jsp,${message}
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring MVC和MyBatis的整合可以通过注解来完成。下面是一个简单的示例代码,演示了如何在Spring MVC项目中使用注解方式整合MyBatis。 首先,确保你的项目中已经加入了Spring MVC和MyBatis的依赖。然后按照以下步骤进行配置。 1. 创建数据源配置类 ```java @Configuration public class DataSourceConfig { @Bean public DataSource dataSource() { // 配置数据源,例如使用HikariCP等 return new HikariDataSource(); } @Bean public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource); // 配置MyBatis扫描路径 sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml")); return sessionFactoryBean.getObject(); } @Bean public MapperScannerConfigurer mapperScannerConfigurer() { MapperScannerConfigurer scannerConfigurer = new MapperScannerConfigurer(); scannerConfigurer.setBasePackage("com.example.mapper"); return scannerConfigurer; } } ``` 2. 创建MyBatis配置类 ```java @Configuration public class MyBatisConfig { @Autowired private DataSource dataSource; @Bean public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } } ``` 3. 创建控制器(Controller)和服务(Service)类 ```java @Controller @RequestMapping("/example") public class ExampleController { @Autowired private ExampleService exampleService; @RequestMapping("/list") public String list(Model model) { List<Example> examples = exampleService.getAllExamples(); model.addAttribute("examples", examples); return "example/list"; } } @Service public class ExampleService { @Autowired private ExampleMapper exampleMapper; public List<Example> getAllExamples() { return exampleMapper.getAllExamples(); } } ``` 4. 创建MyBatis Mapper接口和XML映射文件 ```java public interface ExampleMapper { List<Example> getAllExamples(); } ``` ```xml <!-- src/main/resources/mapper/ExampleMapper.xml --> <mapper namespace="com.example.mapper.ExampleMapper"> <select id="getAllExamples" resultType="com.example.model.Example"> SELECT * FROM example </select> </mapper> ``` 以上是一个简单的示例,展示了如何使用注解方式在Spring MVC项目中整合MyBatis。你可以根据自己的需求进行相应的修改和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值