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

<?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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值