SpringMVC的入门示例

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的配置,修改为基于注解.该方案在下节...

猜你喜欢

转载自www.cnblogs.com/maigy/p/10735113.html