SpringMVC入门之普通配置篇

来源:互联网 发布:linux查看80端口被占用 编辑:程序博客网 时间:2024/05/21 00:55

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

 

首先是Web.xml

[html] view plaincopyprint?
  1. <?xmlversion="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> 


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

[html] view plaincopyprint?
  1. <?xmlversion="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.         <propertyname="order"value="1"/> 
  18.     </bean> 
  19.     <beanid="simpleUrlMapping"class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
  20.         <propertyname="order"value="0"/> 
  21.         <propertyname="mappings"> 
  22.             <props> 
  23.                 <propkey="/userlist22.htm">userController</prop> 
  24.                 <propkey="/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.     <beanname="/userlist11.htm"class="com.jadyer.controller.UserController"/> 
  34. </beans> 


 

然后是我们常见的Spring配置文件applicationContext-view.xml

[html] view plaincopyprint?
  1. <?xmlversion="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.     <beanid="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
  14.         <propertyname="prefix"value="/WEB-INF/jsp/"/> 
  15.         <propertyname="suffix"value=".jsp"/> 
  16.     </bean> 
  17. </beans> 


 

接下来是首页index.jsp

[html] view plaincopyprint?
  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. <ahref="<%=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> 


下面是响应请求结果的userlist.jsp

[html] view plaincopyprint?
  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:forEachitems="${users}"var="user"> 
  5.     <c:outvalue="${user.username}"/><br/> 
  6.     <c:outvalue="${user.password}"/><br/> 
  7.     <c:outvalue="${user.address}"/><br/> 
  8.     <c:outvalue="${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. --> 


这是用到的User.java

[java] view plaincopyprint?
  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.     } 


 

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

[java] view plaincopyprint?
  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 UserControllerextends 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.     }