Spring MVC 背景介绍
Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块,称为Spring MVC,是一个轻量级的,基于请求响应的MVC框架。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
常见MVC框架比较
MVC框架的功能:
1) 将URL映射到Java类或方法上;
2) 封装用户提交的数据;
3) 处理请求-调用相关业务方法-封装响应数据;
4) 将响应数据进行渲染,JSP、HTML、Freemarker等。
Spring MVC的优势:
1)运行性能上:
Jsp+servlet>struts1>spring mvc>struts2+freemarker>>struts2,ognl,值栈。
开发效率上,基本正好相反。值得强调的是,spring mvc开发效率和struts2不相上下。
2)简单、易学、易用;
3)天生与Spring无缝集成
4)约定优于配置,遵从开闭原则
5)可以方便的进行单元测试,支持Restful风格
6)使用的人多。
Struts2的性能低的原因是因为OGNL和值栈造成的。所以,如果你的系统并发量高,可以使用freemaker进行显示,而不是采用OGNL和值栈。这样,在性能上会有相当大得提高。
基于spring3.X纯XML实现的简单实例
注:本项目旨在实现一个简单的Hello World。
1. 建立web项目
2. 导入相关Jar包,除了Spring相关Jar文件外,还必须引入Commons-logging.jar文件。
3. 修改web.xml,配置核心控制器(本质是一个Servlet):
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <!—配置核心控制器 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <!—随容器一起启动 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app> |
4. 在WEB-INF下增加[dispatcherServlet Name] -servlet.xml(暂时不包含spring mvc相关的相关配置)
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- ... -->
</beans> |
5. 编写控制器代码:HelloController.java
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller;
public class HelloController implements Controller{ @Override public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception { ModelAndView mav=new ModelAndView(); //封装数据 mav.addObject("msg", "hello world!"); //返回视图 mav.setViewName("/hello"); return mav; }
} |
6. 编写springmvc-servlet.xml文件中添加如下代码:
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<!-- 配置handlerAdapter... --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean> <!-- 配置视图渲染器 --> <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <!-- 结果视图的前缀和后缀 --> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean>
<!-- 配置请求处理器 --> <bean name="/hello.do" class="wanshi.controller.HelloController" /> |
7. 部署项目,运行Tomcat,在浏览器中输入
http://localhost:8080/mvcdemo/hello.do进行测试,运行结果如下图: