SpringMVC
SpringMVC是一种基于Java的实现MVC设计模式的请求驱动类型的轻量级web框架,属于SpringFrameWork的后续产品,已经融合在Spring Web Flow中。Spring3.0已经优于Struts2,通过一套注解,让一个类处理请求的控制器,而无需实现任何servlet接口。同时还支持RESTful编程风格的请求。
快速入门
servlet编写麻烦,可以分为两部分,共有和特有代码,共有代码可以使用springMVC的前端控制器代替,特有代码编写POJO。所以,springMVC开发步骤
-
导入坐标(spring-webmvc)
-
配置servlet(共有代码,SpringMVC核心控制器DispathcerServlet)
-
编写Controller类(POJO)和视图View(jsp页面)
-
将Controller使用注解配置到Spring容器中(@Component, @Controller)
-
配置spring-mvc.xml配置文件(填写组件扫描)
-
客户端发起请求进行测试
具体代码:
-
导入spring-webmvc spring-context坐标、tomcat插件
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.0.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.2.RELEASE</version> </dependency> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8080</port> <uriEncoding>UTF-8</uriEncoding> </configuration> </plugin>
-
在web.xml中配置springMVC前端控制器DispathcerServlet
<!-- 配置springMVC前端控制器--> <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 第5步时的代码:加载配置文件--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <!-- 服务器启动时加载--> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <!--所有资源都经过这里--> <url-pattern>/</url-pattern> </servlet-mapping>
-
编写Controller和视图(sucess.jsp 略)
@Controller public class UserController { @RequestMapping("/test") public String save() { System.out.println("userController"); return "success.jsp"; } }
-
给Controller添加注解(其中RequesMapping表示业务方法的映射地址)
-
新建spring-mvc.xml配置文件,添加组件扫描(并将配置文件在web.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" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd" > <!-- Controller组件扫描--> <context:component-scan base-package="com.controller"/> </beans>
-
启动服务器,并用浏览器访问测试
tomcat7:run
注解解析
@RequestMapping("xxx")
作用:注解在类或方法上,用于建立请求URL和业务Controller之间的对象关系。
参数:
- value:请求路径,一个参数时默认
- method:请求方式,默认GET
- params:指定限定请求参数。如
params={"username"}
,请求时必须有username参数
配置文件
Controller中返回的地址包含默认的前缀:
- 默认前缀是
forward:
转发(地址不改变) - 也可以改成
redirect:
重定向(地址改变)
还可以自定义内部资源解析器,如下。这样Controller在返回时,不用写复杂的路径。(但是不能重定向)
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/jsp"/>
<property name="suffix" value=".jsp"/>
</bean>
组件解析
SpringMVC的相关组件:
- 前端控制器:DispatcherServlet, 调用其他组件
- 处理器映射器:HandlerMapping, 地址解析,上面前后缀等就是它处理的。
- 处理器适配器:HandlerAdapter, 调用处理器
- 处理器:Handler, 可以理解为我们定义的Controller, 最后返回ModelAndView
- 视图解析器:ViewResolver, 解析View
- 视图:View