使用maven简单搭建springmvc
介绍
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等。
优点
Lifecycle for overriding binding, validation, etc,易于同其它View框架(Tiles等)无缝集成,采用IOC便于测试。
它是一个典型的教科书式的mvc构架,而不像struts等都是变种或者不是完全基于mvc系统的框架,对于初学者或者想了解mvc的人来说我觉得 spring是最好的,它的实现就是教科书!第二它和tapestry一样是一个纯正的servlet系统,这也是它和tapestry相比 struts所具有的优势。而且框架本身有代码,看起来容易理解。
springmvc的工作流程
1. 拿到浏览器的请求先经过了核心控制器
2. 获得hello.do路径比较映射器中拿取name值的hello.do
3. 根据映射器获得的路径去找一个实现controller接口的控制器
4. 控制器响应的数据到核心控制器中,但是核心控制器并不认识ModelAndView是什么
5. 把ModelAndView交给视图解析器来解析,解析之后再给核心控制器
6. 核心控制器把视图解析过后的数据进行处理
springmvc的控制器是单例的,尽量避免书写成员属性
初级配置springmvc
导入依赖包
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.2.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.3</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.9</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.32</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>servlet-api</artifactId> <version>6.0.29</version> </dependency> </dependencies> |
配置xml文件
配置核心配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <bean name="/hello.do" class="com.oracle.controller.HelloController"></bean> </beans> |
映射器会自动从name属性中,获取路径
注意:没有配置核心配置文件的位置和名称的时候,应该将其和web.xml文件创建在一起,且必须命名为DispatcherServlet-servlet.xml
创建控制器
新建一个控制类实现controller方法
测试
将其部署到tomcat测试
更改核心配置文件的名称和位置
只需在web.xml文件中,告诉核心控制器,配置文件在哪里叫什么即可
编码过滤器
为每一个响应到浏览器的数据都要将其格式转换为utf-8,可以在web.xml中配置编码过滤器
但是如果拦截所有的路径,可能会将js,图片,css样式同样过滤掉,所以我们需要在springmvc.xml中配置哪些东西不需要被过滤
<mvc:resources location="/css/" mapping="/css/**"/> <mvc:resources location="/image/" mapping="/image/**"/> <mvc:resources location="/js/" mapping="/js/**"/> |
配置视图解析器
我们的jsp文件如果统一放在webapp下,会显得很多很乱,因此我们可以配置视图解析器,告诉核心控制器去那里找jsp文件,找以.jsp结尾的jsp文件。
<!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/jsps/" /> <property name="suffix" value=".jsp"></property> </bean> |
这样我们在自定义的控制器中,就可以只写jsp文件的名字即可。