零配置简单搭建SpringMVC 项目
SpringMVC是比较常用的JavaWeb框架,非常轻便强悍,能简化Web开发,大大提高开发效率,在各种Web程序中广泛应用。本文采用Java Config的方式搭建SpringMVC项目,并对SpringMVC启动时加载顺序做简单的说明。
1、SpringMVC启动流程图
2、SpringMVC项目启动流程介绍
SpringMVC 是Spring 框架的重要模块,借助于Spring 的容器技术,可以非常方面的搭建Web项目。
SpringMVC项目启动时要完成Spring 容器的初始化和SpringMVC配置的初始化。
2.1 Spring容器的初始化:
1、项目中需要配置ContextLoadListener监听器,它会监听项目的启动,在项目启动时调用容器初始化方法完成Spring容器的初始化
如果采用XML配置,通常需要在web.xml文件里面添加如下配置:
本文采用Java Config 实现,所以在配置中继承了AbstractAnnotationConfigDispatcherServletInitializer 这个抽象类,这个类的继承关系如下:
在父类AbstractContextLoaderInitializer中注册了ContextLoadListener监听器:
具体如下:
2、在需要在容器初始化时创建的类上面加上注解,就可以实现Bean的自动装配了。
@Controller @Service @Bean @Conponent等注解都可以显示表明Bean需要自动装配
3、配置Bean初始化的范围
2.2 SpringMVC 的配置
1、配置SpringMVC需要添加DispatchServlet ,DispatcherServlet主要负责前端调用URL的分发,他在Web容器初始化的时候被注册。在2.1中,我们已经知道,本文配置中继承了DispatchServlet 的一个抽象类AbstractAnnotationConfigDispatcherServletInitializer ,此抽象类的父类在实例化的时候会注册一个DispatchServlet到容器中,方法名如下。
2、定义视图解析器
前端访问URL,DispatchServlet 会把URL 匹配到Controller中相应的@RequstMapper的方法上去,该方法处理完请求后返回需要的业务数据模型,然后会调用自己的视图解析器把数据渲染到前端页面中,渲染之后返回给浏览器。
视图解析器定义如下:
3、其实SpringMVC 项目启动时配置的东西还有很多,HandlerException 异常处理,数据校验等,这些Spring提供的抽象类WebMvcConfigurerAdapter中已经实现好了,我们在项目中直接继承就行了。
3、代码实现:
项目采用Maven管理:pom.xml如下:
- <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/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.beiyan</groupId>
- <artifactId>demo</artifactId>
- <packaging>war</packaging>
- <version>0.0.1-SNAPSHOT</version>
- <name>demo Maven Webapp</name>
- <url>http://maven.apache.org</url>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <java.version>1.8</java.version>
- </properties>
- <dependencies>
- <dependency>
- <!-- Test -->
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.10</version>
- <scope>test</scope>
- </dependency>
- <!-- Servlet -->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.1.0</version>
- </dependency>
- <!-- SpringMVC -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- <version>4.3.3.RELEASE</version>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
- </project>
项目结构如下:
RootConfig类中配置了包扫描的范围:
- package com.beiyan.demo.config;
- import org.springframework.context.annotation.ComponentScan;
- import org.springframework.context.annotation.Configuration;
- @Configuration
- @ComponentScan(basePackages = { "com.beiyan.demo" })
- public class RootConfig {
- }
WebConfig 中配置了视图解析器以及RequestMapper的扫描范围
- package com.beiyan.demo.config;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.ComponentScan;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.web.servlet.ViewResolver;
- import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
- import org.springframework.web.servlet.config.annotation.EnableWebMvc;
- import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
- import org.springframework.web.servlet.view.InternalResourceViewResolver;
- @Configuration
- @EnableWebMvc
- @ComponentScan("com.beiyan.demo.controller")
- public class WebConfig extends WebMvcConfigurerAdapter {
- @Bean
- public ViewResolver viewResolver() {
- InternalResourceViewResolver resolver = new InternalResourceViewResolver();
- resolver.setPrefix("/WEB-INF/views/");
- resolver.setSuffix(".jsp");
- resolver.setExposeContextBeansAsAttributes(true);
- return resolver;
- }
- /**
- * 启用spring mvc 的注解
- */
- public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
- configurer.enable();
- }
- }
WebAppInitializer类配置了容器初始化时需要加载的配置类
- package com.beiyan.demo.config;
- import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
- public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
- @Override
- protected Class<?>[] getRootConfigClasses() {
- return new Class<?>[] { RootConfig.class };
- }
- @Override
- protected Class<?>[] getServletConfigClasses() {
- return new Class<?>[] { WebConfig.class };
- }
- @Override
- protected String[] getServletMappings() {
- return new String[] { "/" };
- }
- }
TestController中定义了测试用的URL:
- package com.beiyan.demo.controller;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.ResponseBody;
- @Controller
- public class TestController {
- @RequestMapping(value = "/test", method = RequestMethod.GET)
- public String test() {
- return "test";
- }
- }
项目的Web 文件如下:
启动项目后,浏览器访问http://localhost:8080/SpringServlet/test 可以成功访问如下:
至此,SpringMVC项目配置成功了。
写在后面的话:
本项目只是简单搭建了SpringMVC项目,采用了最简配置,实际项目中可能会对Servlet,Filter进行自定义,还会添加Mybatis /hibernate, SpringSecurity等功能。关于JPA,SpringSecurity,Themeleaf 的集成将会在下一篇关于SpringBoot 的项目搭建中集成。
本项目完整代码已上传开源中国Git仓库:https://git.oschina.net/beiyan/mvc-config
零配置简单搭建SpringMVC 项目的更多相关文章
- maven -- 学习笔记(四)实现在Eclipse用maven搭建springmvc项目(附构建步骤和详细实现代码)
Learn from:http://www.cnblogs.com/fangjins/archive/2012/05/06/2485459.html,感谢楼主的分享,才有下面的这篇学习小结 一.环境准 ...
- 创建一个可用的简单的SpringMVC项目,图文并茂
转载麻烦注明下来源:http://www.cnblogs.com/silentdoer/articles/7134332.html,谢谢. 最近在自学SpringMVC,百度了很多资料都是比较老的,而 ...
- VSCode配置简单的vue项目
VSCode配置简单的vue项目 https://www.cnblogs.com/wnxyz8023/p/9989447.html 由于最近要使用的项目框架为前后端分离的,采用的是vue.js+web ...
- 使用纯注解与配置类开发springMVC项目,去掉xml配置
最近拜读了杨开振老师的书,深入浅出springBoot2.x,挖掘了很多以前被忽略的知识, 开发一年多,工作中一直用传统springmvc的开发,基本都还是用的传统的xml配置开发, 看到书里有提到, ...
- 项目搭建系列之一:使用Maven搭建SpringMVC项目
约定电脑都安装了eclipse,且已配置好Maven以及eclipse插件. 1.Eclipse 2.maven 3.Eclipse 需要安装maven插件.url:maven - http://do ...
- 基于XML搭建SpringMVC项目
*如果你需要将应用部署到不支持Servlet3.0容器中 或者 你只是对web.xml情有独钟,那我们只能按照传统的方式,通过web.xml来配置SpringMVC. *搭建SpringMVC需要在w ...
- 使用VSCode配置简单的vue项目
由于最近要使用的项目框架为前后端分离的,采用的是vue.js+webAPI的形式进行开发的.因为之前我没有接触过vue.js,也只是通过视频文档做了一些简单的练习.今天技术主管说让大家熟悉下VSCod ...
- spirng: srping mvc配置(访问路径配置)搭建SpringMVC——最小化配置
搭建SpringMVC——最小化配置 最开始接触网页的时候,是纯的html/css页面,那个时候还是用Dreamweaver来绘制页面. 随着网站开发的深入,开始学习servlet开发,记得最痛苦的就 ...
- 三、使用VSCode配置简单的vue项目
由于最近要使用的项目框架为前后端分离的,采用的是vue.js+webAPI的形式进行开发的.因为之前我没有接触过vue.js,也只是通过视频文档做了一些简单的练习.今天技术主管说让大家熟悉下VSCod ...
随机推荐
- 用户引导页--- ScrollView的使用
一.首先第一步,写好用户轮播页的viewController,比如叫做LVUserGuideVC,关键代码是配置和scrollView和pageControl. (1)scrollView的设置 se ...
- angularJ之$filter过滤器
1 内置filter 9个 2 自定义filter <!DOCTYPE html><html><head><meta charset="utf-8& ...
- C++学习笔记 宏 const 内联 枚举
宏, const变量, 内联, 枚举 宏 宏定义: 宏即宏替换,在C语言源程序中允许用一个标识符来表示一个字符串,称为宏,关键字 define,在所有使用到宏的地方都只是直接的替换而不做任何类型检查 ...
- JMeter学习(三十五)使用jmeter来发送json/gzip格式数据
一.使用jmeter来发送gzip数据 有时候我们需要模拟在客户端将数据压缩后, 发送(post)到服务器端. 通常这种情况,会发生在移动终端上. 这样做的好处, 是可以节省流量. 当然, 服务器返 ...
- h5 与app交互
http://www.jianshu.com/p/7151987f012d JSContext *context = [self.webView valueForKeyPath:@"docu ...
- Centos6.5 python2.7连接mysql数据库
1.环境是centos6.5 32位系统,python版本是2.7.12,mysql版本是5.5.22.准备好所需压缩包,MySQL-python-1.2.4b4.tar.gz pip-6.0.7. ...
- iOS设置cell选中时文字颜色的变化
cell.titleStr.highlightedTextColor = EMCGreenColor;
- JavaScript方法call,apply,caller,callee,bind的使用详解及区别
一.call 方法 调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容). 即 “某个方法”当做“指定的某个对象”的“方法”被执行. Js代 ...
- 接口性能测试--JMeter
1.JMeter Java Sampler介绍 setupTest做些初始化的工作,每个线程只执行一次 teardownTest做些清理工作,每个线程只执行一次 1.JMeter Java Sampl ...
- gTest详解
1. 安装使用 1.1 安装 在https://code.google.com/p/googletest/ 下载源码 进入msvc, 注意编译方式, 如果是dll, 选择 gtest-md 编译生成l ...