
SpringMVC简介
一种开发Web应用的通用架构方式,用户端的请求通过http到达前端控制器(Front Controller),他了解这个请求应该被谁处理,然后将请求代理给了具体的控制器(Controller),控制器了解业务逻辑的细节,因此调用相关业务逻辑生成业务数据,并将数据返回给前端控制器,前端控制器将业务数据分发给业务视图(View template),由业务视图来呈现最终的用户界面,并将用户界面返回给前端控制器,并最终将页面返回给浏览器端.MVC核心思想是将业务数据抽取和业务数据呈现相分离.
SpringMVC基本概念
- 前端控制器:分发调度
- 控制器:业务数据抽取
- 业务视图:页面呈现
- View:网页界面
- Model:业务实体,一般编写的类,业务数据的信息表示,通常是多个业务实体的组合
- Controller:调用业务逻辑产生合适数据生成model并传递给Model层
- DispatcherServlet:Spring的前端控制器,进行业务分发,传递数据
- Handler:是DispatcherServlet内部使用的一个类,是Controller的一种表现形式
- HandlerAdapt:Handler适配器,将各种不同类型的类适配成DispatcherServlet能够使用的类
- HandlerInterceptor:拦截器接口,实现后可以在调用控制器之前或者之后做很多事情
- HandlerMapping:前端控制器与Contller之间的映射,确定DispatcherServlet获得正确的Controller
- HandlerEcutionChain:HandlerAdapter.HandlerInterceptor和HandlerMapping构成一条链,执行preHandle,Controller Method,postHandle,AfterCompletion.
- ViewResolver:视图解析器,告诉你应该具体用哪个视图来进行视图解析.
其实主要工作在于编写Controller中的代码,根据业务逻辑來编写代码.
MAVEN项目搭建
架构管理工具
- POM:编写一个xml文件,比如pom.xml,配置文件,在其中维护很多信息,比如一些依赖,生命周期,插件
- Dependency Management:一个项目可能会依赖其他很多东西,开发的时候就必须添加很多所依赖的java包,JavaWeb项目一般放在/WEB_INF/lib下.通过Maven可以通过自动管理,只需要在POM文件中编写相关依赖,在
标签下. - Coordinates:坐标,Maven类似一个仓库,其他软件商会向其中添加软件,然后哦我们可以通过坐标来寻找和使用.包括groupId,artifactId,version,packaging四个属性构成唯一标志,(自己新建项目是GroupId一般填写Java目录的组织结构,eg: me.wlins,artifiactId一般是项目名).
项目开发
通过Maven新建项目
配置文件
1. pom.xml文件:
添加变量< properties >,设置所用到的软件版本,方便管理
123<properties><spring.version>4.1.3.RELEASE</spring.version></properties>配置< dependences >,配置依赖管理,添加< dependencyManagement >
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116<dependencyManagement><dependencies><!--测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!--日志--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.21</version></dependency><!--J2EE--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version></dependency><dependency><groupId>javax.servlet.jsp.jstl</groupId><artifactId>jstl-api</artifactId><version>1.2</version><exclusions><exclusion><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId></exclusion><exclusion><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.glassfish.web</groupId><artifactId>jstl-impl</artifactId><version>1.2</version><exclusions><exclusion><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId></exclusion><exclusion><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId></exclusion><exclusion><groupId>javax.servlet.jsp.jstl</groupId><artifactId>jstl-api</artifactId></exclusion></exclusions></dependency><!--mysql驱动包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.35</version></dependency><!--springframework--><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><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>com.github.stefanbirkner</groupId><artifactId>system-rules</artifactId><version>1.16.1</version><scope>test</scope></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.9</version></dependency><!--其他需要的包--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.4</version></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency></dependencies></dependencyManagement>- 添加框架支持
右击我们的项目文件夹,选择add framework support,然后在窗口中分别选中spring和springmvc,并且选择spring是,记得勾选create empty springconfig.xml,点击ok之后,我们会发现WEB-INF文件夹下多出了两个文件(applicationContext.xml,mvc-dispatcher-servlet.xml),后面会用到.
- 添加框架支持
2. 完善文件目录
首先我们在src/main文件夹下创建java文件夹,在WEB-INF下创建statics,view,jsp文件夹,在statics下创建css,image,js文件夹,然后我们进入project structure选择文件夹的作用,在界面的右上角进入project structure,然后在module中选择设置各个模块,其中java文件夹是 sources,test是Test,改完之后,点ok,文件夹会变色,那就成功了。然后再在java文件夹中添加需要的包.

3. web.xml文件
- 替换头部设置如下來支持更多功能123456xml version="1.0" encoding="UTF-8"<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app\_3\_1.xsd"version="3.1">
- 配置springmvc,创建一个前端控制器12345678910111213141516171819202122232425<!--配置springmvc DispatcherServlet--><servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><!--配置dispatcher.xml作为mvc的配置文件--><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup><async-supported>true</async-supported></servlet><servlet-mapping><servlet-name>springMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!--把applicationContext.xml加入到配置文件中--><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/applicationContext.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
mvc-dispatcher-servlet.xml
这个文件负责mvc的配置,配置如下:
applicationContext.xml
这个文件主要负责一些非mvc组件(或者其他组件)的配置,配置如下:
编写Controller
编写IndexController代码如下:
view下编写jsp文件
编写index.jsp文件如下:
css下编写样式表
编写test.css文件如下:
然后配置服务器,部署运行即可.访问地址为http://localhost:8080/Hello/home/index
(部署时选择的context为Hello,Controller里面访问映射的是/home/index).
```