1、配置流程说明
第一步:导入包
第二步:构建一个请求,编写请求页面
第三步:配置核心控制器
第四步:构建一个业务控制器
第五步:编写Spring配置文件
第六步:编写一个返回页面
2、配置流程---基于 XML 的配置
① 导入包
② 创建一个请求的发送页面
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body> 10 <a href="${pageContext.request.contextPath }/say.mvc">say hello</a> 11 </body> 12 </html>
③ 在 web.xml 配置核心控制器
1 <?xml version="1.0" encoding="UTF-8"?> 2 <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"> 3 <display-name>springmvc-demo-01-xml-start</display-name> 4 5 <!-- 配置核心控制器拦截所有的请求 --> 6 <servlet> 7 <servlet-name>dispatcherServlet</servlet-name> 8 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 9 <!-- 指定配置文件的路径 --> 10 <init-param> 11 <!-- 注意:任何框架的参数名都可以在代码里面找到 --> 12 <param-name>contextConfigLocation</param-name> 13 <param-value>classpath:spring-mvc.xml</param-value> 14 </init-param> 15 </servlet> 16 17 <servlet-mapping> 18 <servlet-name>dispatcherServlet</servlet-name> 19 <url-pattern>*.do</url-pattern> 20 </servlet-mapping> 21 22 <welcome-file-list> 23 <welcome-file>index.html</welcome-file> 24 <welcome-file>index.htm</welcome-file> 25 <welcome-file>index.jsp</welcome-file> 26 <welcome-file>default.html</welcome-file> 27 <welcome-file>default.htm</welcome-file> 28 <welcome-file>default.jsp</welcome-file> 29 </welcome-file-list> 30 </web-app>
④ 创建一个业务控制器
1 package cn.gzsxt.controller; 2 3 import javax.servlet.http.HttpServletRequest; 4 import javax.servlet.http.HttpServletResponse; 5 6 import org.springframework.web.servlet.ModelAndView; 7 import org.springframework.web.servlet.mvc.multiaction.MultiActionController; 8 9 /** 10 * 业务控制器,必须继承一个类MultiActionController或它的父类 11 * @author ranger 12 * 13 */ 14 public class HelloController extends MultiActionController { 15 /** 16 * 执行方法的参数是固定.HttpServletRequest request,HttpServletResponse response 17 */ 18 public ModelAndView say(HttpServletRequest request,HttpServletResponse response){ 19 System.out.println("-你好世界!-"); 20 ModelAndView mv=new ModelAndView(); 21 //设置返回的视图 22 mv.setViewName("/hello.jsp"); 23 mv.addObject("msg", "张三"); 24 return mv; 25 } 26 }
⑤ 创建一个 Spring 的配置文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 <!-- 请求路径与业务控制器的执行方法的关系 --> 6 <!-- 请求与执行方法的规则: 7 1. SpringMVC会根据请求的名字:/say.mvc的say,去自动找到say这个方法 8 --> 9 <bean name="/say.mvc" class="cn.gzsxt.controller.HelloController"></bean> 10 <!-- 2.视图解释器,不用配置.默认已经配置了jsp视图解释器了 --> 11 </beans>
⑥ 创建一个返回的视图页面
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body> 10 ${msg },欢迎您! 11 </body> 12 </html>
问题:根据上面,我们有什么不满意的地方?
答:① 业务控制器需要继承一个类或继承一个接口(这种设计称为入侵性的设计),优秀的设计不需要继承任何东西的;
② 业务控制器方法的参数是固定的,不人性化,我们希望可以做到需要什么参数就加什么参数,而不写死它;
③ 返回的路径明明就是一个字符串就搞定的事,非要使用一个ModelAndView一个类来写。
SpringMVC基于XML的配置是SpringMVC的第一版,发行在spring2.5里面. 非常难用,Spring团队很快就接受社区的建议,在Spring3.0就对SpringMVC做出了重大的修改.其中最大修改就是将原来基于XML的配置,修改为基于注解.该方案在下节...