标签:start ack list str 控制 art json 上下文 source
spring MVC是一个基于MVC模式的表现层框架,在spring2.5以后增加了注解功能。使得开发变得更加高效、快捷。由于spring MVC是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合,可以达到无缝整合。
springMVC的特点有:
1、基于的是servlet/jsp模式
2、控制器不再需要继承其它类,只需要用@Controller注解
3、应用控制器方法参数,由前端控制器负责封装,方法签名定义灵活。
4、返回页面直接在方法中指定,可以是String,也可以是其它的,比如:ModelAndView或void等
5、性能优秀
下面来看一下,内置tomcat中,如何整合springMVC。
首先,创建maven项目,导入springMVC相关的依赖。
由于springMVC是spring的一个模块,所以spring的依赖也需要导入:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.7.RELEASE</version> </dependency>
当然,内置tomcat也需要导入
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>9.0.36</version> </dependency>
另外,为了方便处理json,还需要导入jackson
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.11.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-parameter-names</artifactId> <version>2.11.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jdk8</artifactId> <version>2.11.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>2.11.0</version> </dependency>
第二步,需要编写配置类,完成spring和springMVC相关的配置
@Configuration //申明该类为配置类 @ComponentScan(basePackageClasses = WebApplicationConfig.class)//扫描指定类所在包及子包中的spring组件 @EnableWebMvc //提供mvc支持 public class WebApplicationConfig implements WebMvcConfigurer { //设置响应信息编码集 @Override public void extendMessageConverters( List<HttpMessageConverter<?>> converters) { StringHttpMessageConverter stringHttpMessageConverter = (StringHttpMessageConverter) converters.get(1); stringHttpMessageConverter.setDefaultCharset( Charset.forName("utf-8")); } //提供静态资源的支持 @Override public void addResourceHandlers( ResourceHandlerRegistry registry) { //客户端以/html/开始的请求,访问类路径下static/html registry.addResourceHandler("/html/**"). addResourceLocations("classpath:/static/html/"); } }
从这里可以看出,响应信息编码集为utf-8,解决了响应信息乱码问题。客户端所访问的静态文件,比如:html、css、js、图片等放在类路径下。由于创建的是maven项目,所以,可以在resources目录下创建static/html,用于放置静态资源。
第三步,编写启动类,在启动类中注册springMVC的前端控制器。
package com.project; public class MainServer { public MainServer(){ Tomcat tomcat = new Tomcat();//创建tomcat对象 tomcat.setPort(8088); //设置端口 tomcat.getConnector(); //创建web容器上下文 Context context = tomcat.addContext("", null); try { //注册前端控制器 DispatcherServlet dispatcherServlet = new DispatcherServlet( this.createApplicationContext(context.getServletContext())); Wrapper servlet = tomcat.addServlet(context, "dispatcherServlet", dispatcherServlet); servlet.setLoadOnStartup(1); servlet.addMapping("/*"); tomcat.start(); } catch (Exception e) { e.printStackTrace(); } } /** * 创建spring容器的应用上下文对象 * @param servletContext WEB容器上下文对象 * @return spring容器应用上下文对象 */ public WebApplicationContext createApplicationContext( ServletContext servletContext) { AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); ctx.register(WebApplicationConfig.class); //加载配置类 ctx.setServletContext(servletContext); ctx.refresh(); ctx.registerShutdownHook(); return ctx; } public static void main(String[] args) { new MainServer(); } }
好了,springMVC已经注册进内置tomcat。
第四步:书写应用控制器处理客户端请求,产生响应:
package com.project.conrtroller; @Controller public class TestController { @RequestMapping("/test") public String testRequest(String name){ System.out.println("执行应用控制器方法,参数name为"+name); //重定向到指定页面 return "redirect:/html/info.html"; } }
注意,应用控制器所在的包,必须是配置类扫描包,或子包。比如,在上面配置类中的扫描定义为
@ComponentScan(basePackageClasses = WebApplicationConfig.class)//扫描指定类所在包及子包中的spring组件 public class WebApplicationConfig implements WebMvcConfigurer { …… }
那么,应用控制器必须是配置类WebApplicationConfig所在包,及子包中的类。
在resources目录下,创建static/html。然后,在该目录下,新建info.html,书写文本:“info.html”
第五步,测试
运行启动类,打开浏览器,输入:http://localhost:8088/test?name=tom。就可以看到info.html中的内容。并且,在服务器控制台上,有"执行应用控制器方法,参数name为tom"文字输出。
标签:start ack list str 控制 art json 上下文 source
原文地址:https://www.cnblogs.com/lovozcf/p/14289531.html