2008-05-10
Spring之MVC 入门实例
关键字: spring之mvc 入门实例
对于现有较成熟的Struts、Webwork(MVC)框架而言,,其解决的主要问题无外乎下面几部分:
1、将Web页面中的输入元素封装为一个(请求)数据对象。
2、根据请求的不同,调度相应的逻辑处理单元,并将(请求)数据对象作为参数传入。
3、逻辑处理单元完成运算后,返回一个结果数据对象。
4、将结果数据对象中的数据与预先设计的表现层相融合并展现给用户。
各个MVC实现固然存在差异,但其中的关键流程大致如上。结合一个实例,看看这
几个关键流程在Spring MVC框架中的处理手法。
开发环境: Apache Tomcat 6.0.16 + MyEclipse6.0.1 + spring2.5.3
实现功能:用户登录,校验用户名和密码,如果正确返回成功页面上显示登陆信息
准备工作:下载spring-framework-2.5.3的完整包(http://www.springframework.org/download)
1、启动MyEclipse新建web项目(这里起名为springmvc),为项目添加spring支持的类库(spring.jar和spring-webmvc.jar)
这里,项目用到了jstl标签,所以也要把它添加进去!!!
2、为web.xml配置分发器
DispatcherServlet是Spring MVC的入口,所有进入Spring Web的Request都经过DispatcherServlet
这样,请求 .do 的处理就全部交由Spring处理了
3、/WEB-INF/Config.xml
4、简单的JavaBean:LoginInfo
5、业务逻辑处理:LoginAction
onSubmit方法用于处理业务请求包含了两个参数:Object cmd(Object型参数,正是传入的请求数据对象的引用)和BindException ex(参数则提供了数据绑定错误的跟踪机制)
6、登陆页:/WEB-INF/view/index.jsp
7、成功页:/WEB-INF/view/main.jsp
8、这样我们就成功地建立了一个mvc应用,访问http://loaclhost:8888/springmvc/index.do
1、将Web页面中的输入元素封装为一个(请求)数据对象。
2、根据请求的不同,调度相应的逻辑处理单元,并将(请求)数据对象作为参数传入。
3、逻辑处理单元完成运算后,返回一个结果数据对象。
4、将结果数据对象中的数据与预先设计的表现层相融合并展现给用户。
各个MVC实现固然存在差异,但其中的关键流程大致如上。结合一个实例,看看这
几个关键流程在Spring MVC框架中的处理手法。
开发环境: Apache Tomcat 6.0.16 + MyEclipse6.0.1 + spring2.5.3
实现功能:用户登录,校验用户名和密码,如果正确返回成功页面上显示登陆信息
准备工作:下载spring-framework-2.5.3的完整包(http://www.springframework.org/download)
1、启动MyEclipse新建web项目(这里起名为springmvc),为项目添加spring支持的类库(spring.jar和spring-webmvc.jar)
这里,项目用到了jstl标签,所以也要把它添加进去!!!
2、为web.xml配置分发器
DispatcherServlet是Spring MVC的入口,所有进入Spring Web的Request都经过DispatcherServlet
<?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"> <display-name>springmvc</display-name> <servlet> <servlet-name>Dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/Config.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Dispatcher</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
这样,请求 .do 的处理就全部交由Spring处理了
3、/WEB-INF/Config.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- 配置试图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass"> <value>org.springframework.web.servlet.view.JstlView</value> </property> <property name="prefix"> <value>/WEB-INF/view/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> <!-- 配置映射响应器 --> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/index.do">LoginAction</prop> </props> </property> </bean> <!-- 配置控制器 --> <bean id="LoginAction" class= "com.yd.springmvc.action.LoginAction"> <property name="commandClass"> <value>com.yd.springmvc.action.LoginInfo</value> </property> <property name="formView" value="index" /> <property name="successView" value="main" /> </bean> </beans>
4、简单的JavaBean:LoginInfo
package com.yd.springmvc.action;
public class LoginInfo {
private String username;
private String password;
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;
}
}
5、业务逻辑处理:LoginAction
package com.yd.springmvc.action;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
public class LoginAction extends SimpleFormController {
@Override
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object cmd, BindException ex)
throws Exception {
LoginInfo loginInfo = (LoginInfo) cmd;
if (!"yaodi".equals(loginInfo.getUsername())) {
ex.rejectValue("username", "usernameerror", "姓名错误!!!");
return this.showForm(request, response, ex);
}
if (!"123456".equals(loginInfo.getPassword())) {
ex.rejectValue("password", "passworderror", "密码错误!!!");
return this.showForm(request, response, ex);
}
HashMap result = new HashMap();
result.put("loginInfo", loginInfo);
List msgList = new LinkedList();
msgList.add("user1");
msgList.add("user2");
msgList.add("user3");
result.put("msgList", msgList);
return new ModelAndView(this.getSuccessView(), result);//返回界面由指定的结果数据集加以填充
}
}
onSubmit方法用于处理业务请求包含了两个参数:Object cmd(Object型参数,正是传入的请求数据对象的引用)和BindException ex(参数则提供了数据绑定错误的跟踪机制)
6、登陆页:/WEB-INF/view/index.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<html>
<head>
<title>登陆页</title>
</head>
<body>
<h2>登陆</h2><hr>
<form method="post">
<p>
姓名:
<spring:bind path="command.username">
<input type="text" name="username" value="${status.value}">
<c:forEach items="${status.errorMessages}" var="error">
<font color="#FF0000">*错误: ${error}</font>
</c:forEach>
</spring:bind>
</p>
<p>
密码:
<spring:bind path="command.password">
<input type="password" name="password" />
<c:forEach items="${status.errorMessages}" var="error">
<font color="#FF0000">*错误: ${error}</font>
</c:forEach>
</spring:bind>
</p>
<p>
<input type="submit" name="Submit" value="提交" />
<input type="reset" name="Submit2" value="重置" />
</p>
</form>
</body>
</html>
7、成功页:/WEB-INF/view/main.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
<html>
<head>
<title>成功页</title>
</head>
<body>
<h2>欢迎登陆:</h2>
姓名:<c:out value="${loginInfo.username}" /><br>
密码:<c:out value="${loginInfo.password}" />
<h2>当前信息:</h2>
<c:forEach items="${msgList}" var="item">
${item}<br>
</c:forEach>
</body>
</html>
8、这样我们就成功地建立了一个mvc应用,访问http://loaclhost:8888/springmvc/index.do
发表评论
- 浏览: 4819 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
我的相册
快速理解面向对象
共 2 张
共 2 张
最近加入圈子
最新评论
-
Spring之MVC 入门实例
你这例子根本都跑不起来啊!!!!!!!!!!!!!!!!!
-- by zt843217 -
struts2.0简单的例子
-- by linmu0001 -
一个简单的DWR入门例子
谢谢,我的第一个ajax入门成功!!!
-- by yaojavaeye






评论排行榜