SpringMVC入门之普通配置篇

来源:互联网 发布:内涵段子网站源码 编辑:程序博客网 时间:2024/05/20 22:28

直接上例子吧,这是一个WebProject


首先是Web.xml

<?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

<?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

<?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

<%@ 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

<%@ 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的Bean3、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

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

package com.jadyer.controller;import java.util.ArrayList;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.AbstractController;import com.jadyer.model.User;/** * UserController * @author 宏宇 * @editor Jan 27, 2012 11:57:33 AM */public class UserController extends AbstractController {@Overrideprotected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {List<User> userList = new ArrayList<User>();User user11 = new User();User user22 = new User();user11.setUsername("张起灵");user11.setPassword("02200059");user11.setAddress("阴山古楼");user11.setAge(27);user22.setUsername("吴三省");user22.setPassword("95000220");user22.setAddress("蛇沼鬼城");user22.setAge(37);userList.add(user11);userList.add(user22);//ModelAndView类在SpringMVC中是一个很重要的概念//控制器执行方法都必须返回一个ModelAndView,ModelAndView对象保存了视图以及视图显示的模型数据//第一个参数:视图组件的逻辑名称。这里视图的逻辑名称是userlist,视图解析器会使用该名称查找实际的View对象//第二个参数:传递给视图的,模型对象的名称//第三个参数:传递给视图的,模型对象的值return new ModelAndView("userlist", "users", userList);}}