说明:这个Demo用来简单展示Spring MVC的实现。[在此之前,应该下载好spring的jar文件,以及Spring的依赖jar文件,以及jstl标签库{可选},和standard.jar{可选}] 步骤如下: 1、 在MyEclipse下建立一个Web Projec名称为:Demo; 2、 添加相应的jar文件到WEB-INF/lib,如:spring-framework-3.0.2.RELEASE-with-docs.zip解压文件下dist文件夹下的core、beans、[context.support、context包支持上下文]、[web.servlet支持web MVC]、web包、asm、expression,以及spring-framework-3.0.2.RELEASE-dependencies.zip {Spring依赖}解压文件org.apache.commons/com.springsource.org.apache.commons.logging下的com.springsource.org.apache.commons.logging.jar以及jstl.jar和standard.jar, 3、 配置核心控制器,代码如下: <?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"> <!-- spring servlet dispatcher --> <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>*.do</url-pattern><!—过滤类型--> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> 4、 编写一个控制类如:UserController.java,包结构:com.teana.controller,此类继承AbstractCommandController抽象类,[说明:此类用到数据绑定,数据类型的转换],代码如下: package com.teana.controller; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.validation.BindException; import org.springframework.web.bind.ServletRequestDataBinder; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractCommandController; import com.teana.vo.User; /** * @author TEANA -- 2010-5-16 * User 控制器 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释 */ @SuppressWarnings("deprecation") public class UserController extends AbstractCommandController { @Override protected ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object commond, BindException be) throws Exception { User user = (User)commond;//自动封装的User对象 System.out.println(user); return new ModelAndView("success");//说明视图的跳转,会在SpringMVC-servlet.xml配置文件中查出 } /** * 数据绑定,及数据类型转换 */ @Override protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception { binder.registerCustomEditor(Date.class, new CustomDateEditor( new SimpleDateFormat("yyyy-MM-dd"), true)); } }
5、 编写User.java文件,包结构:com.teana.vo,代码如下: package com.teana.vo; import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date; /** * @author TEANA -- 2010-5-16 * 用户模型 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释 */ public class User implements Serializable { private static final long serialVersionUID = -4360427971861239742L; private int id; private String name; private String cardID; private Date birth; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCardID() { return cardID; } public void setCardID(String cardID) { this.cardID = cardID; } public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth = birth; } @Override public String toString() { return "[ name =" + name + ", birth = " + new SimpleDateFormat("yyyy-MM-dd").format(birth) + ", carID = " + cardID + ", id = " + id + " ]"; } }
6、 编写jsp页面: A:修改WebRoot文件下的index.jsp页面,代码如下: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Spring MVC Demo</title> </head> <body> <jsp:forward page="login.do" /><!—在此处会根据springMvc-servlet.xml文件中查找真正的jsp页面--> </body> </html> B:在 WEB-INF文件下创建一个jsp文件夹,在jsp文件夹下创建一个login.jsp文件,代码如下: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Spring MVC Demo 用户注册</title> </head> <body> <center> <br/> <br/> <h5 style="color:pink" >Spring MVC Demo 用户注册</h5> <form action="user.do" method="post"><!—user.do在springMVC-servlet.xml中查找--> <table> <tr><td>账号:</td><td><input type="text" name="id" /></td></tr> <tr><td>姓名:</td><td><input type="text" name="name" /></td></tr> <tr><td>生日:</td><td><input type="text" name="birth" /></td></tr> <tr><td>卡号:</td><td><input type="text" name="cardID" /></td></tr> <tr><td><input type="submit" value=" 提 交 "/></td><td align="center"><input type="reset" value=" 重 置 "/></td></tr> </table> </form> </center> </body> </html> C:在WEB-INF/jsp文件夹下创建一个success.jsp文件,这里只用来说明页面跳转成功,代码如下: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Spring MVC Demo 用户登录成功</title> </head> <body> <br> <center>用户登录成功页面</center> </body> </html>
7、 在WEB-INF文件夹下创建一个类似于Spring中的applicationContext.xml文件的SpringMVC-servlet.xml文件,这个文件的命名为*****-servlet.xml,*****由配置在web.xml文件下的核心控制器的servlet-name决定。编写其文件代码如下: <?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <!—说明处理url的方式映射方式--> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="index.do">indexController</prop> <prop key="login.do">loginController</prop> <prop key="user.do">userController</prop> </props> </property> </bean> <!—根据Url直接跳转到相应jsp文件,此处是当输入http://localhost:8080/Demo/index.do,则跳到WEB-INF/jsp/index.jsp页面--> <bean id="indexController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController" /> <!-此处是当输入http://localhost:8080/Demo/login.do则根据springMVC-servlet.xml文件的viewName的值去在制定格式的路径下查找相应文件--> <bean id="loginController" class="org.springframework.web.servlet.mvc.ParameterizableViewController"> <property name="viewName" value="login" /> </bean> <bean id="userController" class="com.teana.controller.UserController"> <property name="commandClass" value="com.teana.vo.User" /> </bean>
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver"><!-- 指定策略解析 --> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /><!-- 指定视图处理 --> <property name="prefix" value="/WEB-INF/jsp/" /><!—前缀--> <property name="suffix" value=".jsp" /><!—后缀--> </bean> </beans> 总结:【使用Spring mvc 需要步骤】 ① 在web.xml中配置DispatcherServlet及URL映射; ② 编写IOC容器所需要的XML配置文件,命名为<servlet-name>-servlet.xml,放到/WEB-INF目录下,如果DispatchertServlet在web.xml中的配置为SpringMVC,则Spring将寻找SpringMVC-servlet.xml配置文件。 ③ 在XML配置文件中定义URL映射方式和使用哪种View技术 |