spring4全注解web项目demo
记得没接触框架的时候,写demo测试时真的很爽,新建web项目,然后随便写写servlet随便调试
框架越来越多,配置记不得了,整合容易出问题,集成新东西越来越少了,不敢动了。
这是个spring4的全注解的项目,没有任何功能,仅仅是spring+springMVC配置,测试通过
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zhen</groupId> <artifactId>Spring4-WebSocket</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <properties> <spring.version>4.3.5.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <!-- 安全起见,添加,这个对任务调度,jml、ftl等提供支持 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!-- jsp和servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency> <!-- 为@Response等的json数据绑定提供支持 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.6</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.6</version> </dependency> </dependencies> <build> <plugins> <!-- 编译插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> <!-- tomcat 插件 --> <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.3.7.v20160115</version> <configuration> <httpConnector> <port>8080</port> <host>localhost</host> </httpConnector> <webApp> <contextPath>/spring4webSocket</contextPath> </webApp> </configuration> </plugin> </plugins> </build> </project>
package com.zhen.spring_websocket.config; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.servlet.config.annotation.*; import java.text.SimpleDateFormat; import java.util.List; /** * @author zhen * @Date 2018/12/10 15:19 */ @Configuration @EnableWebMvc //这个注解类似于 <mvc:annotation-driven/> public class SpringMVCConfig extends WebMvcConfigurerAdapter { @Override public void addViewControllers(ViewControllerRegistry registry){ registry.addViewController("/").setViewName("/index"); } @Override public void configureViewResolvers(ViewResolverRegistry registry) { //spring4 默认不是jsp,而是Thymeleaf registry.jsp().prefix("/jsp").suffix(".jsp"); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { //静态资源处理 registry.addResourceHandler("/static/**").addResourceLocations("/static/"); } @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { //增加jackson 的支持,json转换器,支持@RequestBody等 Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder() .dateFormat(new SimpleDateFormat("yyyy-MM-dd")); converters.add(new MappingJackson2HttpMessageConverter(builder.build())); } }
package com.zhen.spring_websocket.config; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; /** * @author zhen * @Date 2018/12/10 16:01 */ @Configuration @ComponentScan("com.zhen.spring_websocket") @Import(SpringMVCConfig.class) public class ProductConfig { }
package com.zhen.spring_websocket.config; import org.springframework.web.WebApplicationInitializer; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.servlet.DispatcherServlet; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRegistration; /** * @author zhen * @Date 2018/12/10 15:13 * servlet 3支持 */ public class MyWebApplicationInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext servletContext) throws ServletException { //Spring AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); ctx.register(ProductConfig.class); ctx.setServletContext(servletContext); //Spring MVC ServletRegistration.Dynamic registration = servletContext.addServlet("servletDispatcher", new DispatcherServlet(ctx)); registration.setLoadOnStartup(1); registration.addMapping("/"); } }
基于spring4,servlet 3
package com.zhen.spring_websocket.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; /** * @author zhen * @Date 2018/12/10 17:32 */ @Controller @RequestMapping("/test") public class TestController { @RequestMapping("/do") @ResponseBody public String test(){ System.out.println("测试方法执行!"); return "ok!"; } }
项目结构:
参考:
spring文档:链接:https://pan.baidu.com/s/1zZj-HtKBKbRKjz7FyiXkUg 提取码: 47gu ,这个可以从官网下载最新的文档版本
https://blog.csdn.net/hcwbr123/article/details/78422120 spring与springmvc的扫描重复问题
https://www.cnblogs.com/silfox/p/7659353.html jsp与servlet包的引入maven
https://www.cnblogs.com/csonezp/p/5315725.html 纯注解spring4的demo
https://www.cnblogs.com/tibit/p/5400880.html jetty插件配置