SpringMVC入門之普通配置篇

轉自:http://blog.csdn.net/jadyer/article/details/7574635

 

首先是Web.xml

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <web-app version="2.5" 
  3.     xmlns="http://java.sun.com/xml/ns/javaee" 
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
  6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
  7.     <!-- 使用ContextLoaderListener配置時,需要告訴它Spring配置文件的位置 --> 
  8.     <!-- 如果沒有指定,上下文載入器會在/WEB-INF/applicationContext.xml中找Spring配置文件 --> 
  9.     <!-- 我們可以通過在Servlet上下文中設置contextConfigLocation參數,來爲上下文載入器指定一個或多個Spring配置文件 --> 
  10.     <!-- 注意:contextConfigLocation參數是一個用逗號分隔的路徑列表,其路徑是相對於Web系統的根路徑的 --> 
  11.     <context-param> 
  12.         <param-name>contextConfigLocation</param-name> 
  13.         <param-value>/WEB-INF/springmvc-servlet.xml, classpath:applicationContext-*.xml</param-value> 
  14.     </context-param> 
  15.      
  16.     <!-- SpringMVC的前端控制器 --> 
  17.     <!-- 當DispatcherServlet載入後,它將從一個XML文件中載入Spring的應用上下文,該XML文件的名字取決於<servlet-name> --> 
  18.     <!-- 這裏DispatcherServlet將試圖從一個叫做springmvc-servlet.xml的文件中載入應用上下文,其默認位於WEB-INF目錄下 --> 
  19.     <!-- 所以ContextLoaderListener參數值也可寫成<param-value>classpath:applicationContext-*.xml</param-value> --> 
  20.     <servlet> 
  21.         <servlet-name>springmvc</servlet-name> 
  22.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
  23.         <load-on-startup>1</load-on-startup> 
  24.     </servlet> 
  25.     <servlet-mapping> 
  26.         <servlet-name>springmvc</servlet-name> 
  27.         <url-pattern>*.htm</url-pattern> 
  28.     </servlet-mapping> 
  29.      
  30.     <!-- 配置上下文載入器 --> 
  31.     <!-- 上下文載入器載入除DispatcherServlet載入的配置文件之外的其它上下文配置文件 --> 
  32.     <!-- 最常用的上下文載入器是一個Servlet監聽器,其名稱爲ContextLoaderListener --> 
  33.     <listener> 
  34.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
  35.     </listener> 
  36.      
  37.     <welcome-file-list> 
  38.         <welcome-file>index.jsp</welcome-file> 
  39.     </welcome-file-list> 
  40. </web-app> 
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<!-- 使用ContextLoaderListener配置時,需要告訴它Spring配置文件的位置 -->
	<!-- 如果沒有指定,上下文載入器會在/WEB-INF/applicationContext.xml中找Spring配置文件 -->
	<!-- 我們可以通過在Servlet上下文中設置contextConfigLocation參數,來爲上下文載入器指定一個或多個Spring配置文件 -->
	<!-- 注意:contextConfigLocation參數是一個用逗號分隔的路徑列表,其路徑是相對於Web系統的根路徑的 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/springmvc-servlet.xml, classpath:applicationContext-*.xml</param-value>
	</context-param>
	
	<!-- SpringMVC的前端控制器 -->
	<!-- 當DispatcherServlet載入後,它將從一個XML文件中載入Spring的應用上下文,該XML文件的名字取決於<servlet-name> -->
	<!-- 這裏DispatcherServlet將試圖從一個叫做springmvc-servlet.xml的文件中載入應用上下文,其默認位於WEB-INF目錄下 -->
	<!-- 所以ContextLoaderListener參數值也可寫成<param-value>classpath:applicationContext-*.xml</param-value> -->
	<servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<url-pattern>*.htm</url-pattern>
	</servlet-mapping>
	
	<!-- 配置上下文載入器 -->
	<!-- 上下文載入器載入除DispatcherServlet載入的配置文件之外的其它上下文配置文件 -->
	<!-- 最常用的上下文載入器是一個Servlet監聽器,其名稱爲ContextLoaderListener -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>


接下來是SpringMVC的配置文件springmvc-servlet.xml

  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:tx="http://www.springframework.org/schema/tx" 
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  6.     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  7.     http://www.springframework.org/schema/tx    
  8.     http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 
  9.      
  10.     <!-- 【配置映射處理器】 --> 
  11.     <!-- SpringMVC自帶的映射處理器均實現了Spring的Ordered接口,這意味着我們可以在應用系統中聲明多個處理器映射 --> 
  12.     <!-- 並且可以設置它們的優先級,這主要體現在order屬性上,其值越小,則對應的該映射處理器的優先級越高 --> 
  13.     <!-- 本例中,SimpleUrlHandlerMapping的order值比BeanNameUrlHandlerMapping的小 --> 
  14.     <!-- 這意味着DispatcherServlet在映射URL的時候,首先會諮詢SimpleUrlHandlerMapping --> 
  15.     <!-- 只有在SimpleUrlHandlerMapping無法返回結果時,才諮詢BeanNameUrlHandlerMapping --> 
  16.     <bean id="beanNameUrlMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"> 
  17.         <property name="order" value="1"/> 
  18.     </bean> 
  19.     <bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
  20.         <property name="order" value="0"/> 
  21.         <property name="mappings"> 
  22.             <props> 
  23.                 <prop key="/userlist22.htm">userController</prop> 
  24.                 <prop key="/userlist33.htm">userController</prop> 
  25.             </props> 
  26.         </property> 
  27.     </bean> 
  28.  
  29.     <!-- 這裏的id="userController"對應的是<bean id="simpleUrlMapping">中的<prop>裏面的value --> 
  30.     <bean id="userController" class="com.jadyer.controller.UserController"/> 
  31.      
  32.     <!-- DispatcherServlet使用的默認處理器映射是BeanNameUrlHandlerMapping,它使用URL樣式的名字 --> 
  33.     <bean name="/userlist11.htm" class="com.jadyer.controller.UserController"/> 
  34. </beans> 
<?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:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
	http://www.springframework.org/schema/tx   
	http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
	
	<!-- 【配置映射處理器】 -->
	<!-- SpringMVC自帶的映射處理器均實現了Spring的Ordered接口,這意味着我們可以在應用系統中聲明多個處理器映射 -->
	<!-- 並且可以設置它們的優先級,這主要體現在order屬性上,其值越小,則對應的該映射處理器的優先級越高 -->
	<!-- 本例中,SimpleUrlHandlerMapping的order值比BeanNameUrlHandlerMapping的小 -->
	<!-- 這意味着DispatcherServlet在映射URL的時候,首先會諮詢SimpleUrlHandlerMapping -->
	<!-- 只有在SimpleUrlHandlerMapping無法返回結果時,才諮詢BeanNameUrlHandlerMapping -->
	<bean id="beanNameUrlMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
		<property name="order" value="1"/>
	</bean>
	<bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="order" value="0"/>
		<property name="mappings">
			<props>
				<prop key="/userlist22.htm">userController</prop>
				<prop key="/userlist33.htm">userController</prop>
			</props>
		</property>
	</bean>

	<!-- 這裏的id="userController"對應的是<bean id="simpleUrlMapping">中的<prop>裏面的value -->
	<bean id="userController" class="com.jadyer.controller.UserController"/>
	
	<!-- DispatcherServlet使用的默認處理器映射是BeanNameUrlHandlerMapping,它使用URL樣式的名字 -->
	<bean name="/userlist11.htm" class="com.jadyer.controller.UserController"/>
</beans>


 

然後是我們常見的Spring配置文件applicationContext-view.xml

  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:tx="http://www.springframework.org/schema/tx" 
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  6.     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  7.     http://www.springframework.org/schema/tx    
  8.     http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 
  9.      
  10.     <!-- 【配置視圖解析器】 --> 
  11.     <!-- InternalResourceViewResolver會在ModelAndView返回的視圖名前加上prefix指定的前綴,再在最後加上suffix指定的後綴 --> 
  12.     <!-- 由於UserController返回的ModelAndView中的視圖名是userlist,故該視圖解析器將在/WEB-INF/jsp/userlist.jsp處查找視圖 --> 
  13.     <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
  14.         <property name="prefix" value="/WEB-INF/jsp/"/> 
  15.         <property name="suffix" value=".jsp"/> 
  16.     </bean> 
  17. </beans> 
<?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:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
	http://www.springframework.org/schema/tx   
	http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
	
	<!-- 【配置視圖解析器】 -->
	<!-- InternalResourceViewResolver會在ModelAndView返回的視圖名前加上prefix指定的前綴,再在最後加上suffix指定的後綴 -->
	<!-- 由於UserController返回的ModelAndView中的視圖名是userlist,故該視圖解析器將在/WEB-INF/jsp/userlist.jsp處查找視圖 -->
	<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/"/>
		<property name="suffix" value=".jsp"/>
	</bean>
</beans>


 

接下來是首頁index.jsp

  1. <%@ page language="java" pageEncoding="UTF-8"%> 
  2. <a href="<%=request.getContextPath()%>/userlist11.htm">Visit "/userlist11.htm" to my SpringMVC demo page</a> 
  3. <br/> 
  4. <br/> 
  5. <a href="<%=request.getContextPath()%>/userlist22.htm">Visit "/userlist22.htm" to my SpringMVC demo page</a> 
  6. <br/> 
  7. <br/> 
  8. <a href="<%=request.getContextPath()%>/userlist33.htm">Visit "/userlist33.htm" to my SpringMVC demo page</a> 
<%@ page language="java" pageEncoding="UTF-8"%>
<a href="<%=request.getContextPath()%>/userlist11.htm">Visit "/userlist11.htm" to my SpringMVC demo page</a>
<br/>
<br/>
<a href="<%=request.getContextPath()%>/userlist22.htm">Visit "/userlist22.htm" to my SpringMVC demo page</a>
<br/>
<br/>
<a href="<%=request.getContextPath()%>/userlist33.htm">Visit "/userlist33.htm" to my SpringMVC demo page</a>


下面是響應請求結果的userlist.jsp

  1. <%@ page language="java" pageEncoding="UTF-8"%> 
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
  3. <h2>Welcome to my SpringMVC demo page</h2> 
  4. <c:forEach items="${users}" var="user"> 
  5.     <c:out value="${user.username}"/><br/> 
  6.     <c:out value="${user.password}"/><br/> 
  7.     <c:out value="${user.address}"/><br/> 
  8.     <c:out value="${user.age}"/><br/> 
  9. </c:forEach> 
  10.  
  11. <!-- 
  12. 以下是,處理對"/userlist.htm"的請求的整個工作步驟 
  13. 1、DispatcherServlet接受對"/userlist.htm"樣式的URL請求 
  14. 2、DispatcherServlet詢問BeanNameUrlHandlerMapping 
  15.   詢問Bean的名字是"/userlist.htm"的控制器,並且找到了UserController的Bean 
  16. 3、DispatcherServlet分發給UserController來處理這個請求 
  17. 4、UserController返回一個ModelAndView對象,它帶有一個邏輯視圖名"userlist",以及保存在"users"屬性中的值 
  18. 5、DispatcherServlet詢問它的視圖解析器(配置爲InternalResourceViewResolver) 
  19.   查找邏輯名爲userlist的視圖,InternalResourceViewResolver返回/WEB-INF/jsp/userlist.jsp路徑 
  20. 6、DispatcherServlet將請求導向/WEB-INF/jsp/userlist.jsp頁面 
  21. --> 
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<h2>Welcome to my SpringMVC demo page</h2>
<c:forEach items="${users}" var="user">
	<c:out value="${user.username}"/><br/>
	<c:out value="${user.password}"/><br/>
	<c:out value="${user.address}"/><br/>
	<c:out value="${user.age}"/><br/>
</c:forEach>

<!--
以下是,處理對"/userlist.htm"的請求的整個工作步驟
1、DispatcherServlet接受對"/userlist.htm"樣式的URL請求
2、DispatcherServlet詢問BeanNameUrlHandlerMapping
  詢問Bean的名字是"/userlist.htm"的控制器,並且找到了UserController的Bean
3、DispatcherServlet分發給UserController來處理這個請求
4、UserController返回一個ModelAndView對象,它帶有一個邏輯視圖名"userlist",以及保存在"users"屬性中的值
5、DispatcherServlet詢問它的視圖解析器(配置爲InternalResourceViewResolver)
  查找邏輯名爲userlist的視圖,InternalResourceViewResolver返回/WEB-INF/jsp/userlist.jsp路徑
6、DispatcherServlet將請求導向/WEB-INF/jsp/userlist.jsp頁面
-->


這是用到的User.java

  1. package com.jadyer.model; 
  2.  
  3. /**
  4. * User
  5. * @author 宏宇
  6. * @editor Jan 27, 2012 11:41:15 AM
  7. */ 
  8. public class User { 
  9.     private String username; 
  10.     private String password; 
  11.     private String address; 
  12.     private Integer age; 
  13.      
  14.     public String getUsername() { 
  15.         return username; 
  16.     } 
  17.     public void setUsername(String username) { 
  18.         this.username = username; 
  19.     } 
  20.     public String getPassword() { 
  21.         return password; 
  22.     } 
  23.     public void setPassword(String password) { 
  24.         this.password = password; 
  25.     } 
  26.     public String getAddress() { 
  27.         return address; 
  28.     } 
  29.     public void setAddress(String address) { 
  30.         this.address = address; 
  31.     } 
  32.     public Integer getAge() { 
  33.         return age; 
  34.     } 
  35.     public void setAge(Integer age) { 
  36.         this.age = age; 
  37.     } 
package com.jadyer.model;

/**
 * User
 * @author 宏宇
 * @editor Jan 27, 2012 11:41:15 AM
 */
public class User {
	private String username;
	private String password;
	private String address;
	private Integer age;
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
}


 

最後是SpringMVC的核心控制器UserController.java

  1. package com.jadyer.controller; 
  2.  
  3. import java.util.ArrayList; 
  4. import java.util.List; 
  5.  
  6. import javax.servlet.http.HttpServletRequest; 
  7. import javax.servlet.http.HttpServletResponse; 
  8.  
  9. import org.springframework.web.servlet.ModelAndView; 
  10. import org.springframework.web.servlet.mvc.AbstractController; 
  11.  
  12. import com.jadyer.model.User; 
  13.  
  14. /**
  15. * UserController
  16. * @author 宏宇
  17. * @editor Jan 27, 2012 11:57:33 AM
  18. */ 
  19. public class UserController extends AbstractController { 
  20.     @Override 
  21.     protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { 
  22.         List<User> userList = new ArrayList<User>(); 
  23.         User user11 = new User(); 
  24.         User user22 = new User(); 
  25.         user11.setUsername("張起靈"); 
  26.         user11.setPassword("02200059"); 
  27.         user11.setAddress("陰山古樓"); 
  28.         user11.setAge(27); 
  29.         user22.setUsername("吳三省"); 
  30.         user22.setPassword("95000220"); 
  31.         user22.setAddress("蛇沼鬼城"); 
  32.         user22.setAge(37); 
  33.         userList.add(user11); 
  34.         userList.add(user22); 
  35.         //ModelAndView類在SpringMVC中是一個很重要的概念 
  36.         //控制器執行方法都必須返回一個ModelAndView,ModelAndView對象保存了視圖以及視圖顯示的模型數據 
  37.         //第一個參數:視圖組件的邏輯名稱。這裏視圖的邏輯名稱是userlist,視圖解析器會使用該名稱查找實際的View對象 
  38.         //第二個參數:傳遞給視圖的,模型對象的名稱 
  39.         //第三個參數:傳遞給視圖的,模型對象的值 
  40.         return new ModelAndView("userlist", "users", userList); 
  41.     } 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章