1、SpringMVC
Spring的一个模块,是基于MVC设计模式的web框架。
2、SpringMVC工作流程
(1)请求。
(2)前端控制器向处理器映射器请求查找Handler处理器,处理器映射器返回一个执行链(包含Handler)给前端控制器。
(3)前端控制器请求处理器适配器执行Handler,处理器适配器返回一个ModelAndView对象给前端控制器。
(4)前端控制器请求视图解析器实现视图解析,视图解析器返回一个view对象给前端控制器。
(5)前端控制器请求视图进行视图渲染,并将模型数据填充到request域中。
(6)响应。
3、实例
(1)项目结构
(2)在web.xml文件中配置前端控制器
<?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"> <display-name>SpringMVC04</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <!-- 配置前端控制器 --> <servlet> <servlet-name>spring</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping> </web-app>
(3)在spring-servlet.xml文件中配置处理器映射器、处理器适配器、视图解析器和Handler处理器
<?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-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 配置Handler处理器 --> <bean name="/hello.action" class="com.hello.controller.HelloController" /> <!-- 配置处理器映射器,将bean的name作为url来查找handler --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> <!-- 配置处理器适配器,要求编写的Handler实现Controller接口 --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" /> </beans>
(4)编写Handler处理器HelloController
public class HelloController implements Controller { public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView modelAndView = new ModelAndView(); //相当于request的setAttribute方法 modelAndView.addObject("message", "Hello World"); //指定视图 modelAndView.setViewName("/WEB-INF/page/hello.jsp"); return modelAndView; } }
(5)hello.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> ${message } </body> </html>
(6)结果
