what?
- Spring mvc 是Spring提供的一个实现了Web MVC设计模式的轻量级Web框架,它与Struts2框架一样,都是MVC框架,但其使用和性能等方面比Struts2更优异。
特点
- 是Spring框架的一部分,可以方便的利用Spring所提供的其他功能,
- 灵活性强,易于与其他框架集成,
- 提供了一个前端控制器DispatcherServlet,使开发人员无需额外开发控制器对象
- 可自动绑定用户的输入,并能正确的转换数据类型,
- 内置了常见的检验器,可以校验用户的输入,如果校验不能通过,那么重定向到输入表单
- 支持国际化,可以根据用户区域显示多国语言
- 支持多种视图技术,它支持JSP,Velocity和FreeMarker等视图技术
- 使用基于XML的配置文件,在编译后,不需要重现编译应用程序
程序过程
- 在 web.xml中配置前端控制器DisaptcherServlet,在初始化文件属性中配置前端控制器的配置文件(处理器,处理器映射器,处理器适配器,视图解析器)
- 在控制层编写FirstController implements Cotroller(注意包是Web的MVC的),在重写的方法中,实例化ObjectAndView对象,并设置setObject,setView(这里面映射的是一个jsp文件的地址),并返回这个实例话对象。
- 控制器的配置文件(springmvc-config.xml):在这里面配置处理器,处理器映射器,处理器适配器,视图解析器,
- 新建一个jsp文件,接受Object中的数据
代码
Web.xml
<?xml 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/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<!--配置前端控制器-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--初始化时加载配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-config.xml</param-value>
</init-param>
<!--表示容器启动立即加载配置文件-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
FirstController
package com.yzb.chapter11.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/*
* 控制器类
* */
public class FirstController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
//创建一个对象ModelAndView对象
ModelAndView modelAndView = new ModelAndView();
//像模型对象中添加数据
modelAndView.addObject("msg","这是我的一个程序");
//设置逻辑视图名
modelAndView.setViewName("/WEB-INF/JSP/first.jsp");
//返回ModelAndView对象
return modelAndView;
}
}
springmvc-config.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
<!--配置处理器Handle,映射请求“/firstController”-->
<bean name="/firstController" class="com.yzb.chapter11.controller.FirstController"/>
<!--处理器映射器,将处理器Handle的name作为url进行查找-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!--处理器适配器,配置对处理器中handleRequest()方法的调用-->
<bean class="org.springframework.web.servlet.handler.SimpleServletHandlerAdapter"/>
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
<!--在spring4.0之后,处理器映射器,处理器适配器,视图解析器不用在配置-->
</beans>
first.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--EL表达式--%>
${msg}
</body>
</html>
Spring mvc 的过程理解
