徒手搭建 SpringMVC XML AND Annotation 版
準(zhǔn)備環(huán)境:(此例所有Spring版本:spring-framework-3.2.6)
1、將spring-framework-3.2.6中的lib全部導(dǎo)入工程
2、將Apache的Common-logging 導(dǎo)入工程
3、將JSTL標(biāo)簽庫包導(dǎo)入工程(可選,這里只是為了方便讀數(shù)據(jù)而已)
如下圖所示:

Spring MVC XML 配置:
1、在 Web.xml 中 配置啟動SpringMVC的Servlet映射。
2、在/WEB-INF/ 中創(chuàng)建 ApplicationContext-Controller.xml , 配置文件放在 /WEB-INF/下是約定俗成的。
3、在src下創(chuàng)建 Contorllor 類 (Action)實現(xiàn) Controller 接口 。向ModelAndView的構(gòu)造傳入頁面名稱完成 轉(zhuǎn)發(fā) 操作
4、在 ApplicationContext-Controller.xml 中注冊 UserController 類
HelloWorld完成,運行效果如下圖:
-----------------------------------------------------------------------------------
接著對優(yōu)化,SpringMVC 提供配置 ViewResolver 用來管理視圖層
下面在 ApplicationContext-Controller.xml 配置 ViewResolver 對頁面轉(zhuǎn)發(fā)的控制
首先在目錄結(jié)構(gòu)/WEB-INF/jsp/中 添加 user.jsp 頁面,用于轉(zhuǎn)發(fā)頁面,頁面內(nèi)容隨便。

對應(yīng)更改 com.spring.mvc.web.UserController :
看運行效果:

接下來把 URL 請求的控制 也交給Spring處理:
配置到此,訪問效果與前面沒有區(qū)別,只是把URL交給Spring的UrlMapping管理,并介紹userController給UrlMapping認(rèn)識。
很多時候,ControllerAction 需要處理不同的方法,顯然一個Controller處理一種邏輯不太現(xiàn)實,Spring提供了解決此類問題的配置:
更改Controller類
效果如下圖:

SpringMVC Annotation 配置:
前面 SpringMVC XML 的配置方法,只保留 ViewResolver的配置,其他全部不用;Spring提供的Annotation的兩處配置即可代替大部分配置代碼:
Annotation Controller 類的實現(xiàn):
效果如下圖:

添加 Spring 3.0 的 新 Annotation 注解:
1:XML 文件的 schema 更新添加 mvc 標(biāo)簽 , “標(biāo)紅”
配置Spring Interceptor 攔截器:
添加自定義攔截器類:com.spring.mvc.interceptors.RuleInterceptor
配置文件注冊:
1、將spring-framework-3.2.6中的lib全部導(dǎo)入工程
2、將Apache的Common-logging 導(dǎo)入工程
3、將JSTL標(biāo)簽庫包導(dǎo)入工程(可選,這里只是為了方便讀數(shù)據(jù)而已)
如下圖所示:
1、在 Web.xml 中 配置啟動SpringMVC的Servlet映射。
1 <!-- Spring MVC DispatcherServlet Init -->
2 <servlet>
3 <servlet-name>springMVC</servlet-name>
4 <servlet-class>
5 org.springframework.web.servlet.DispatcherServlet
6 </servlet-class>
7 <init-param>
8 <param-name>contextConfigLocation</param-name>
9 <param-value>
10 /WEB-INF/ApplicationContext-Controller.xml <!-- SpringMVC的配置文件,文件名自定義 -->
11 </param-value>
12 </init-param>
13 <load-on-startup>1</load-on-startup>
14 </servlet>
15 <servlet-mapping>
16 <servlet-name>springMVC</servlet-name>
17 <url-pattern>/</url-pattern>
18 </servlet-mapping>
2 <servlet>
3 <servlet-name>springMVC</servlet-name>
4 <servlet-class>
5 org.springframework.web.servlet.DispatcherServlet
6 </servlet-class>
7 <init-param>
8 <param-name>contextConfigLocation</param-name>
9 <param-value>
10 /WEB-INF/ApplicationContext-Controller.xml <!-- SpringMVC的配置文件,文件名自定義 -->
11 </param-value>
12 </init-param>
13 <load-on-startup>1</load-on-startup>
14 </servlet>
15 <servlet-mapping>
16 <servlet-name>springMVC</servlet-name>
17 <url-pattern>/</url-pattern>
18 </servlet-mapping>
2、在/WEB-INF/ 中創(chuàng)建 ApplicationContext-Controller.xml , 配置文件放在 /WEB-INF/下是約定俗成的。
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 xmlns:context="http://www.springframework.org/schema/context"
5 xsi:schemaLocation="http://www.springframework.org/schema/beans
6 http://www.springframework.org/schema/beans/spring-beans.xsd
7 http://www.springframework.org/schema/context
8 http://www.springframework.org/schema/context/spring-context.xsd">
9
10 </beans>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:context="http://www.springframework.org/schema/context"
5 xsi:schemaLocation="http://www.springframework.org/schema/beans
6 http://www.springframework.org/schema/beans/spring-beans.xsd
7 http://www.springframework.org/schema/context
8 http://www.springframework.org/schema/context/spring-context.xsd">
9
10 </beans>
3、在src下創(chuàng)建 Contorllor 類 (Action)實現(xiàn) Controller 接口 。向ModelAndView的構(gòu)造傳入頁面名稱完成 轉(zhuǎn)發(fā) 操作
1 package com.spring.mvc.web;
2
3 import javax.servlet.http.HttpServletRequest;
4 import javax.servlet.http.HttpServletResponse;
5 import org.springframework.web.servlet.ModelAndView;
6 import org.springframework.web.servlet.mvc.Controller;
7
8 public class UserController implements Controller{
9
10 public ModelAndView handleRequest(HttpServletRequest req,
11 HttpServletResponse res) throws Exception {
12 System.out.println("HelloWorld");
13 return new ModelAndView("index.jsp");
14 }
15 }
2
3 import javax.servlet.http.HttpServletRequest;
4 import javax.servlet.http.HttpServletResponse;
5 import org.springframework.web.servlet.ModelAndView;
6 import org.springframework.web.servlet.mvc.Controller;
7
8 public class UserController implements Controller{
9
10 public ModelAndView handleRequest(HttpServletRequest req,
11 HttpServletResponse res) throws Exception {
12 System.out.println("HelloWorld");
13 return new ModelAndView("index.jsp");
14 }
15 }
4、在 ApplicationContext-Controller.xml 中注冊 UserController 類
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 xmlns:context="http://www.springframework.org/schema/context"
5 xsi:schemaLocation="http://www.springframework.org/schema/beans
6 http://www.springframework.org/schema/beans/spring-beans.xsd
7 http://www.springframework.org/schema/context
8 http://www.springframework.org/schema/context/spring-context.xsd">
9
10 <bean id="/user" class="com.spring.mvc.web.UserController"></bean>
11
12 </beans>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:context="http://www.springframework.org/schema/context"
5 xsi:schemaLocation="http://www.springframework.org/schema/beans
6 http://www.springframework.org/schema/beans/spring-beans.xsd
7 http://www.springframework.org/schema/context
8 http://www.springframework.org/schema/context/spring-context.xsd">
9
10 <bean id="/user" class="com.spring.mvc.web.UserController"></bean>
11
12 </beans>
HelloWorld完成,運行效果如下圖:
接著對優(yōu)化,SpringMVC 提供配置 ViewResolver 用來管理視圖層
下面在 ApplicationContext-Controller.xml 配置 ViewResolver 對頁面轉(zhuǎn)發(fā)的控制
首先在目錄結(jié)構(gòu)/WEB-INF/jsp/中 添加 user.jsp 頁面,用于轉(zhuǎn)發(fā)頁面,頁面內(nèi)容隨便。
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 xmlns:context="http://www.springframework.org/schema/context"
5 xsi:schemaLocation="http://www.springframework.org/schema/beans
6 http://www.springframework.org/schema/beans/spring-beans.xsd
7 http://www.springframework.org/schema/context
8 http://www.springframework.org/schema/context/spring-context.xsd">
9
10 <bean id="/user" class="com.spring.mvc.web.UserController"></bean>
11
12 <!-- 頁面View層基本信息設(shè)定 -->
13 <bean id="viewResolver"
14 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
15 <property name="prefix" value="/WEB-INF/jsp" /> <!-- 前綴 -->
16 <property name="suffix" value=".jsp" /> <!-- 后綴 -->
17 </bean>
18 </beans>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:context="http://www.springframework.org/schema/context"
5 xsi:schemaLocation="http://www.springframework.org/schema/beans
6 http://www.springframework.org/schema/beans/spring-beans.xsd
7 http://www.springframework.org/schema/context
8 http://www.springframework.org/schema/context/spring-context.xsd">
9
10 <bean id="/user" class="com.spring.mvc.web.UserController"></bean>
11
12 <!-- 頁面View層基本信息設(shè)定 -->
13 <bean id="viewResolver"
14 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
15 <property name="prefix" value="/WEB-INF/jsp" /> <!-- 前綴 -->
16 <property name="suffix" value=".jsp" /> <!-- 后綴 -->
17 </bean>
18 </beans>
對應(yīng)更改 com.spring.mvc.web.UserController :
1 package com.spring.mvc.web;
2
3 import javax.servlet.http.HttpServletRequest;
4 import javax.servlet.http.HttpServletResponse;
5 import org.springframework.web.servlet.ModelAndView;
6 import org.springframework.web.servlet.mvc.Controller;
7
8 public class UserController implements Controller{
9 // 因為配置了 ViewResolver 所以轉(zhuǎn)發(fā)會自動加上 前綴 + user + 后綴 既: /WEB-INF/jsp/user.jsp
10 public ModelAndView handleRequest(HttpServletRequest req,
11 HttpServletResponse res) throws Exception {
12 return new ModelAndView("user");
13 }
14 }
2
3 import javax.servlet.http.HttpServletRequest;
4 import javax.servlet.http.HttpServletResponse;
5 import org.springframework.web.servlet.ModelAndView;
6 import org.springframework.web.servlet.mvc.Controller;
7
8 public class UserController implements Controller{
9 // 因為配置了 ViewResolver 所以轉(zhuǎn)發(fā)會自動加上 前綴 + user + 后綴 既: /WEB-INF/jsp/user.jsp
10 public ModelAndView handleRequest(HttpServletRequest req,
11 HttpServletResponse res) throws Exception {
12 return new ModelAndView("user");
13 }
14 }
看運行效果:
接下來把 URL 請求的控制 也交給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 xmlns:context="http://www.springframework.org/schema/context"
5 xsi:schemaLocation="http://www.springframework.org/schema/beans
6 http://www.springframework.org/schema/beans/spring-beans.xsd
7 http://www.springframework.org/schema/context
8 http://www.springframework.org/schema/context/spring-context.xsd">
9
10 <!-- 這前 id='/user',現(xiàn)在給bean起個別名,交給Spring的urlMapping來管理此ControllerAction -->
11 <bean id="userController" class="com.spring.mvc.web.UserController"></bean>
12
13 <!-- 頁面View層基本信息設(shè)定 -->
14 <bean id="viewResolver"
15 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
16 <property name="prefix" value="/WEB-INF/jsp/" />
17 <property name="suffix" value=".jsp" />
18 </bean>
19
20 <!-- servlet映射列表,所有控制層Controller的servlet在這里定義 -->
21 <bean id="urlMapping"
22 class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
23 <property name="mappings">
24 <props>
25 <!-- key 就是訪問路徑, userController 就是 ControllerAction 類的別名-->
26 <prop key="/user">userController</prop>
27 </props>
28 </property>
29 </bean>
30 </beans>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:context="http://www.springframework.org/schema/context"
5 xsi:schemaLocation="http://www.springframework.org/schema/beans
6 http://www.springframework.org/schema/beans/spring-beans.xsd
7 http://www.springframework.org/schema/context
8 http://www.springframework.org/schema/context/spring-context.xsd">
9
10 <!-- 這前 id='/user',現(xiàn)在給bean起個別名,交給Spring的urlMapping來管理此ControllerAction -->
11 <bean id="userController" class="com.spring.mvc.web.UserController"></bean>
12
13 <!-- 頁面View層基本信息設(shè)定 -->
14 <bean id="viewResolver"
15 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
16 <property name="prefix" value="/WEB-INF/jsp/" />
17 <property name="suffix" value=".jsp" />
18 </bean>
19
20 <!-- servlet映射列表,所有控制層Controller的servlet在這里定義 -->
21 <bean id="urlMapping"
22 class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
23 <property name="mappings">
24 <props>
25 <!-- key 就是訪問路徑, userController 就是 ControllerAction 類的別名-->
26 <prop key="/user">userController</prop>
27 </props>
28 </property>
29 </bean>
30 </beans>
配置到此,訪問效果與前面沒有區(qū)別,只是把URL交給Spring的UrlMapping管理,并介紹userController給UrlMapping認(rèn)識。
很多時候,ControllerAction 需要處理不同的方法,顯然一個Controller處理一種邏輯不太現(xiàn)實,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 xmlns:context="http://www.springframework.org/schema/context"
5 xsi:schemaLocation="http://www.springframework.org/schema/beans
6 http://www.springframework.org/schema/beans/spring-beans.xsd
7 http://www.springframework.org/schema/context
8 http://www.springframework.org/schema/context/spring-context.xsd">
9
10 <bean id="userController" class="com.spring.mvc.web.UserController">
11 <!-- Controller Bean 配置property的methodNameResolver屬性 -->
12 <!-- ref bean 中就是把 同一個Controller多個方法的解析器 注入給 Controller-->
13 <property name="methodNameResolver">
14 <ref bean="paraMethodResolver"/>
15 </property>
16 </bean>
17
18 <bean id="viewResolver"
19 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
20 <property name="prefix" value="/WEB-INF/jsp/" />
21 <property name="suffix" value=".jsp" />
22 </bean>
23
24 <bean id="urlMapping"
25 class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
26 <property name="mappings">
27 <props>
28 <prop key="/user">userController</prop>
29 </props>
30 </property>
31 </bean>
32
33 <!-- Controller方法調(diào)用規(guī)則定義 -->
34 <bean id="paraMethodResolver"
35 class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
36 <!-- value="method" 的作用好比 http://localhost/SpringMVC/user?method=add -->
37 <property name="paramName" value="method" />
38 </bean>
39 </beans>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:context="http://www.springframework.org/schema/context"
5 xsi:schemaLocation="http://www.springframework.org/schema/beans
6 http://www.springframework.org/schema/beans/spring-beans.xsd
7 http://www.springframework.org/schema/context
8 http://www.springframework.org/schema/context/spring-context.xsd">
9
10 <bean id="userController" class="com.spring.mvc.web.UserController">
11 <!-- Controller Bean 配置property的methodNameResolver屬性 -->
12 <!-- ref bean 中就是把 同一個Controller多個方法的解析器 注入給 Controller-->
13 <property name="methodNameResolver">
14 <ref bean="paraMethodResolver"/>
15 </property>
16 </bean>
17
18 <bean id="viewResolver"
19 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
20 <property name="prefix" value="/WEB-INF/jsp/" />
21 <property name="suffix" value=".jsp" />
22 </bean>
23
24 <bean id="urlMapping"
25 class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
26 <property name="mappings">
27 <props>
28 <prop key="/user">userController</prop>
29 </props>
30 </property>
31 </bean>
32
33 <!-- Controller方法調(diào)用規(guī)則定義 -->
34 <bean id="paraMethodResolver"
35 class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
36 <!-- value="method" 的作用好比 http://localhost/SpringMVC/user?method=add -->
37 <property name="paramName" value="method" />
38 </bean>
39 </beans>
更改Controller類
1 package com.spring.mvc.web;
2
3 import javax.servlet.http.HttpServletRequest;
4 import javax.servlet.http.HttpServletResponse;
5 import org.springframework.web.servlet.ModelAndView;
6 import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
7
8 // extends MultiActionController 類
9 public class UserController extends MultiActionController {
10
11 public ModelAndView add(HttpServletRequest req,
12 HttpServletResponse res) throws Exception {
13 return new ModelAndView("user");
14 }
15
16 // 返回類型可以是 ModelAndView , String , List , Map , Set , ModelMap , Object , viod 等等
17 public String list(HttpServletRequest req,
18 HttpServletResponse res) throws Exception {
19 return "user";
20 }
21 }
2
3 import javax.servlet.http.HttpServletRequest;
4 import javax.servlet.http.HttpServletResponse;
5 import org.springframework.web.servlet.ModelAndView;
6 import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
7
8 // extends MultiActionController 類
9 public class UserController extends MultiActionController {
10
11 public ModelAndView add(HttpServletRequest req,
12 HttpServletResponse res) throws Exception {
13 return new ModelAndView("user");
14 }
15
16 // 返回類型可以是 ModelAndView , String , List , Map , Set , ModelMap , Object , viod 等等
17 public String list(HttpServletRequest req,
18 HttpServletResponse res) throws Exception {
19 return "user";
20 }
21 }
效果如下圖:
SpringMVC Annotation 配置:
前面 SpringMVC XML 的配置方法,只保留 ViewResolver的配置,其他全部不用;Spring提供的Annotation的兩處配置即可代替大部分配置代碼:
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 xmlns:context="http://www.springframework.org/schema/context"
5 xsi:schemaLocation="http://www.springframework.org/schema/beans
6 http://www.springframework.org/schema/beans/spring-beans.xsd
7 http://www.springframework.org/schema/context
8 http://www.springframework.org/schema/context/spring-context.xsd">
9
10 <!-- 對web包中的所有類進行掃描,以完成Bean創(chuàng)建和自動依賴注入的功能 -->
11 <context:component-scan base-package="com.spring.mvc.web"/>
12 <!-- 啟動Spring MVC的注解功能,完成請求和注解POJO的映射 -->
13 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
14
15 <bean id="viewResolver"
16 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
17 <property name="prefix" value="/WEB-INF/jsp/" />
18 <property name="suffix" value=".jsp" />
19 </bean>
20
21 <!-- SpringMVC XML 的配置方法,只保留 ViewResolver 的配置,其他全部不用-->
22 <!-- <bean id="userController" class="com.spring.mvc.web.UserController">
23 <property name="methodNameResolver">
24 <ref bean="paraMethodResolver"/>
25 </property>
26 </bean>
27 <bean id="urlMapping"
28 class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
29 <property name="mappings">
30 <props>
31 <prop key="/user">userController</prop>
32 </props>
33 </property>
34 </bean>
35 <bean id="paraMethodResolver"
36 class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
37 <property name="paramName" value="method" />
38 </bean> -->
39 </beans>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:context="http://www.springframework.org/schema/context"
5 xsi:schemaLocation="http://www.springframework.org/schema/beans
6 http://www.springframework.org/schema/beans/spring-beans.xsd
7 http://www.springframework.org/schema/context
8 http://www.springframework.org/schema/context/spring-context.xsd">
9
10 <!-- 對web包中的所有類進行掃描,以完成Bean創(chuàng)建和自動依賴注入的功能 -->
11 <context:component-scan base-package="com.spring.mvc.web"/>
12 <!-- 啟動Spring MVC的注解功能,完成請求和注解POJO的映射 -->
13 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
14
15 <bean id="viewResolver"
16 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
17 <property name="prefix" value="/WEB-INF/jsp/" />
18 <property name="suffix" value=".jsp" />
19 </bean>
20
21 <!-- SpringMVC XML 的配置方法,只保留 ViewResolver 的配置,其他全部不用-->
22 <!-- <bean id="userController" class="com.spring.mvc.web.UserController">
23 <property name="methodNameResolver">
24 <ref bean="paraMethodResolver"/>
25 </property>
26 </bean>
27 <bean id="urlMapping"
28 class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
29 <property name="mappings">
30 <props>
31 <prop key="/user">userController</prop>
32 </props>
33 </property>
34 </bean>
35 <bean id="paraMethodResolver"
36 class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
37 <property name="paramName" value="method" />
38 </bean> -->
39 </beans>
Annotation Controller 類的實現(xiàn):
1 package com.spring.mvc.web;
2
3 import javax.servlet.http.HttpServletRequest;
4 import javax.servlet.http.HttpServletResponse;
5
6 import org.springframework.stereotype.Controller;
7 import org.springframework.web.bind.annotation.RequestMapping;
8 import org.springframework.web.servlet.ModelAndView;
9
10 /*
11 * @Controller 聲明此類為Controller類交給Spring管理
12 * @RequestMapping 請求路徑
13 */
14 @Controller
15 @RequestMapping("/user")
16 public class UserController {
17
18 /*
19 * @RequestMapping(params="method=add")
20 * 此方法的對應(yīng)訪問方式
21 * http://localhost:8080/SpringMVC/user?method=add
22 */
23 @RequestMapping(params="method=add")
24 public ModelAndView add(HttpServletRequest req,
25 HttpServletResponse res) throws Exception {
26 return new ModelAndView("user");
27 }
28
29 @RequestMapping(params="method=list")
30 public String list(String uName , HttpServletRequest req,
31 HttpServletResponse res) throws Exception {
32 /* 默認(rèn)為轉(zhuǎn)發(fā),重定向:返回這個串:"redirect:http://www.google.com.hk/"
33 * 1、Controller 就是從HttpServlet 繼承而來,所以可以把它當(dāng)Servlet用
34 * 2、需要什么對象,直接在方法的參數(shù)中寫,uName是前臺傳過來的。
35 * 3、ModelAndView 底層的View是Object Model是Map,默認(rèn)放在Request中可通過el表達(dá)式拿值
36 */
37 req.getSession() ;
38 return "user";
39 }
40 }
2
3 import javax.servlet.http.HttpServletRequest;
4 import javax.servlet.http.HttpServletResponse;
5
6 import org.springframework.stereotype.Controller;
7 import org.springframework.web.bind.annotation.RequestMapping;
8 import org.springframework.web.servlet.ModelAndView;
9
10 /*
11 * @Controller 聲明此類為Controller類交給Spring管理
12 * @RequestMapping 請求路徑
13 */
14 @Controller
15 @RequestMapping("/user")
16 public class UserController {
17
18 /*
19 * @RequestMapping(params="method=add")
20 * 此方法的對應(yīng)訪問方式
21 * http://localhost:8080/SpringMVC/user?method=add
22 */
23 @RequestMapping(params="method=add")
24 public ModelAndView add(HttpServletRequest req,
25 HttpServletResponse res) throws Exception {
26 return new ModelAndView("user");
27 }
28
29 @RequestMapping(params="method=list")
30 public String list(String uName , HttpServletRequest req,
31 HttpServletResponse res) throws Exception {
32 /* 默認(rèn)為轉(zhuǎn)發(fā),重定向:返回這個串:"redirect:http://www.google.com.hk/"
33 * 1、Controller 就是從HttpServlet 繼承而來,所以可以把它當(dāng)Servlet用
34 * 2、需要什么對象,直接在方法的參數(shù)中寫,uName是前臺傳過來的。
35 * 3、ModelAndView 底層的View是Object Model是Map,默認(rèn)放在Request中可通過el表達(dá)式拿值
36 */
37 req.getSession() ;
38 return "user";
39 }
40 }
效果如下圖:
添加 Spring 3.0 的 新 Annotation 注解:
1:XML 文件的 schema 更新添加 mvc 標(biāo)簽 , “標(biāo)紅”
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 xmlns:mvc="http://www.springframework.org/schema/mvc"
5 xmlns:context="http://www.springframework.org/schema/context"
6 xsi:schemaLocation="http://www.springframework.org/schema/beans
7 http://www.springframework.org/schema/beans/spring-beans.xsd
8 http://www.springframework.org/schema/mvc
9 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
10 http://www.springframework.org/schema/context
11 http://www.springframework.org/schema/context/spring-context.xsd">
12
13 <!-- 支持spring3.0新的mvc注解 -->
14 <mvc:annotation-driven />
15
16 <!-- 對web包中的所有類進行掃描,以完成Bean創(chuàng)建和自動依賴注入的功能 -->
17 <context:component-scan base-package="com.spring.mvc.web" />
18
19 <!-- 啟動Spring MVC的注解功能,完成請求和注解POJO的映射 -->
20 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
21
22 <bean id="viewResolver"
23 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
24 <property name="prefix" value="/WEB-INF/jsp/" />
25 <property name="suffix" value=".jsp" />
26 </bean>
27 </beans>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:mvc="http://www.springframework.org/schema/mvc"
5 xmlns:context="http://www.springframework.org/schema/context"
6 xsi:schemaLocation="http://www.springframework.org/schema/beans
7 http://www.springframework.org/schema/beans/spring-beans.xsd
8 http://www.springframework.org/schema/mvc
9 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
10 http://www.springframework.org/schema/context
11 http://www.springframework.org/schema/context/spring-context.xsd">
12
13 <!-- 支持spring3.0新的mvc注解 -->
14 <mvc:annotation-driven />
15
16 <!-- 對web包中的所有類進行掃描,以完成Bean創(chuàng)建和自動依賴注入的功能 -->
17 <context:component-scan base-package="com.spring.mvc.web" />
18
19 <!-- 啟動Spring MVC的注解功能,完成請求和注解POJO的映射 -->
20 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
21
22 <bean id="viewResolver"
23 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
24 <property name="prefix" value="/WEB-INF/jsp/" />
25 <property name="suffix" value=".jsp" />
26 </bean>
27 </beans>
配置Spring Interceptor 攔截器:
添加自定義攔截器類:com.spring.mvc.interceptors.RuleInterceptor
1 package com.spring.mvc.interceptors;
2
3 import javax.servlet.http.HttpServletRequest;
4 import javax.servlet.http.HttpServletResponse;
5 import org.springframework.web.servlet.HandlerInterceptor;
6 import org.springframework.web.servlet.ModelAndView;
7
8 public class RuleInterceptor implements HandlerInterceptor {
9
10 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
11 System.out.println("最后執(zhí)行!!!一般用于釋放資源!!");
12
13 }
14
15 public void postHandle(HttpServletRequest request,HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
16 System.out.println("Action執(zhí)行之后,生成視圖之前執(zhí)行!!");
17 }
18
19 public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {
20 System.out.println("action之前執(zhí)行!!!");
21 return true; //繼續(xù)執(zhí)行action
22 }
23 }
2
3 import javax.servlet.http.HttpServletRequest;
4 import javax.servlet.http.HttpServletResponse;
5 import org.springframework.web.servlet.HandlerInterceptor;
6 import org.springframework.web.servlet.ModelAndView;
7
8 public class RuleInterceptor implements HandlerInterceptor {
9
10 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
11 System.out.println("最后執(zhí)行!!!一般用于釋放資源!!");
12
13 }
14
15 public void postHandle(HttpServletRequest request,HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
16 System.out.println("Action執(zhí)行之后,生成視圖之前執(zhí)行!!");
17 }
18
19 public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {
20 System.out.println("action之前執(zhí)行!!!");
21 return true; //繼續(xù)執(zhí)行action
22 }
23 }
配置文件注冊:
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 xmlns:mvc="http://www.springframework.org/schema/mvc"
5 xmlns:context="http://www.springframework.org/schema/context"
6 xsi:schemaLocation="http://www.springframework.org/schema/beans
7 http://www.springframework.org/schema/beans/spring-beans.xsd
8 http://www.springframework.org/schema/mvc
9 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
10 http://www.springframework.org/schema/context
11 http://www.springframework.org/schema/context/spring-context.xsd">
12
13 <mvc:interceptors>
14 <bean class="com.spring.mvc.interceptors.RuleInterceptor"></bean> <!-- 攔截所有springmvc的url! -->
15 <mvc:interceptor>
16 <mvc:mapping path="/user" />
17 <!--<mvc:mapping path="/test/*" />-->
18 <bean class="com.spring.mvc.interceptors.RuleInterceptor"></bean>
19 </mvc:interceptor>
20 </mvc:interceptors>
21
22 <!-- 支持spring3.0新的mvc注解 -->
23 <mvc:annotation-driven />
24
25 <!-- 對web包中的所有類進行掃描,以完成Bean創(chuàng)建和自動依賴注入的功能 -->
26 <context:component-scan base-package="com.spring.mvc.web" />
27
28 <!-- 啟動Spring MVC的注解功能,完成請求和注解POJO的映射 -->
29 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
30
31 <bean id="viewResolver"
32 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
33 <property name="prefix" value="/WEB-INF/jsp/" />
34 <property name="suffix" value=".jsp" />
35 </bean>
36 </beans>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:mvc="http://www.springframework.org/schema/mvc"
5 xmlns:context="http://www.springframework.org/schema/context"
6 xsi:schemaLocation="http://www.springframework.org/schema/beans
7 http://www.springframework.org/schema/beans/spring-beans.xsd
8 http://www.springframework.org/schema/mvc
9 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
10 http://www.springframework.org/schema/context
11 http://www.springframework.org/schema/context/spring-context.xsd">
12
13 <mvc:interceptors>
14 <bean class="com.spring.mvc.interceptors.RuleInterceptor"></bean> <!-- 攔截所有springmvc的url! -->
15 <mvc:interceptor>
16 <mvc:mapping path="/user" />
17 <!--<mvc:mapping path="/test/*" />-->
18 <bean class="com.spring.mvc.interceptors.RuleInterceptor"></bean>
19 </mvc:interceptor>
20 </mvc:interceptors>
21
22 <!-- 支持spring3.0新的mvc注解 -->
23 <mvc:annotation-driven />
24
25 <!-- 對web包中的所有類進行掃描,以完成Bean創(chuàng)建和自動依賴注入的功能 -->
26 <context:component-scan base-package="com.spring.mvc.web" />
27
28 <!-- 啟動Spring MVC的注解功能,完成請求和注解POJO的映射 -->
29 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
30
31 <bean id="viewResolver"
32 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
33 <property name="prefix" value="/WEB-INF/jsp/" />
34 <property name="suffix" value=".jsp" />
35 </bean>
36 </beans>
posted on 2014-05-12 12:29 00001000 閱讀(590) 評論(0) 編輯 收藏 所屬分類: SpringMVC3/Spring3/MyBatis3