对于现有较成熟的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
分享到:
相关推荐
首先, 我需要在你心里建立起 Spring MVC 的基本概念. 基于 Spring 的 Web 应用程序接收到 http://localhost:8080/hello.do(事实上请求路径是 /hello.do) 的请求后, Spring 将这个请求交给一个名为 helloController ...
**Spring MVC 入门实例详解** Spring MVC 是 Spring 框架的一个重要模块,用于构建 Web 应用程序。它提供了模型-视图-控制器(MVC)架构,帮助开发者将业务逻辑、数据处理和用户界面分离,实现更加清晰的代码结构。...
在本入门实例中,`myspringmvc` 文件可能包含了项目的源代码、配置文件和 JSP 页面。通过学习和实践这个实例,初学者可以快速了解 Spring MVC 的基本架构和工作原理,为进一步深入学习和开发更复杂的 Web 应用奠定...
本自学教程集合了多种资源,旨在帮助初学者逐步掌握Spring 3.0 MVC的核心概念,并通过实际项目实例加深理解。 1. **Spring MVC基本概念**:Spring MVC是Spring框架的一部分,负责处理HTTP请求和响应。它遵循模型-...
本实例将深入探讨Spring MVC中常见的注解及其应用。 1. `@Controller` 注解:这个注解用于标记一个类作为Spring MVC的控制器。当Spring容器启动时,会扫描带有@Controller的类,并将这些类实例化,用于处理HTTP请求...
下面我们将深入探讨"非注解SpringMVC+Spring+Hibernate入门实例"中的关键知识点。 首先,让我们从SpringMVC开始。SpringMVC是一个Model-View-Controller架构模式的实现,用于构建Web应用程序。在非注解方式下,我们...
本教程将深入探讨Spring MVC的基本概念和关键组件,帮助初学者快速入门。 首先,让我们理解Spring MVC的核心组件: 1. **DispatcherServlet**:它是Spring MVC的前端控制器,负责接收HTTP请求,根据请求的URL和...
**Spring3 MVC 入门Hello World源码解析** Spring3 MVC是Spring框架的重要组成部分,它是一个用于构建Web应用程序的模型-视图-控制器(MVC)框架。本篇将深入探讨Spring3 MVC的基础知识,通过"Hello World"实例来...
本文将深入探讨这两个概念以及如何通过一个入门实例来理解它们。 Spring MVC(Model-View-Controller)是 Spring 框架的一部分,用于构建Web应用程序。它遵循MVC设计模式,有助于分离业务逻辑、数据处理和用户界面...
**Spring MVC 入门项目详解*...这个入门项目提供了一个简单的Spring MVC应用实例,通过实际操作可以更好地理解框架的工作原理和使用方式。对于Java Web开发者来说,掌握Spring MVC是提升开发效率和项目质量的重要步骤。
以上就是 Spring 和 Struts 的基础概念及入门实例的创建流程。这两个框架各有优势,Spring 更注重模块化和灵活性,而 Struts 则更侧重于 MVC 结构的实现。在实际项目中,两者常被一起使用,形成所谓的“Spring + ...
**Spring MVC 入门实例详解** Spring MVC 是一个基于 Java 的模型-视图-控制器(MVC)架构,是 Spring 框架的一部分,用于构建Web应用程序。它提供了丰富的功能,如请求处理、数据绑定、异常处理等,使得开发者能够...
通过这些实例,学习者将能够逐步掌握Spring MVC、Spring和MyBatis的用法,理解它们之间的协同工作,从而提高开发效率和代码质量。在实际工作中,这样的知识和技能是构建高效、可维护的企业级应用所必需的。对于初学...
【Spring Data JPA 入门实例】 Spring Data JPA 是 Spring 框架的一个模块,它简化了数据库访问层(DAO)的开发,通过提供自动化的 Repository 实现,使得开发者无需编写大量的 CRUD(创建、读取、更新、删除)代码...