`
yaodi0818
  • 浏览: 135623 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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
  • springmvc.rar (12.4 KB)
  • 描述: 附件为本人做好的例子
  • 下载次数: 372
分享到:
评论
2 楼 yaodi0818 2009-01-04  
有报错信息吗?跑不起来是因为里面缺少spring支持的类库,由于jar包比较多,所以没有上传
1 楼 zt843217 2008-06-23  
你这例子根本都跑不起来啊!!!!!!!!!!!!!!!!!

相关推荐

    Spring MVC 入门实例

    首先, 我需要在你心里建立起 Spring MVC 的基本概念. 基于 Spring 的 Web 应用程序接收到 http://localhost:8080/hello.do(事实上请求路径是 /hello.do) 的请求后, Spring 将这个请求交给一个名为 helloController ...

    Spring MVC入门实例

    **Spring MVC 入门实例详解** Spring MVC 是 Spring 框架的一个重要模块,用于构建 Web 应用程序。它提供了模型-视图-控制器(MVC)架构,帮助开发者将业务逻辑、数据处理和用户界面分离,实现更加清晰的代码结构。...

    SPRING MVC入门实例

    在本入门实例中,`myspringmvc` 文件可能包含了项目的源代码、配置文件和 JSP 页面。通过学习和实践这个实例,初学者可以快速了解 Spring MVC 的基本架构和工作原理,为进一步深入学习和开发更复杂的 Web 应用奠定...

    spring3.0mvc自学教程ppt+注解教程+注解实例+springmybatis教程+项目实例+中文api (老师的心血)从入门到项目实战

    本自学教程集合了多种资源,旨在帮助初学者逐步掌握Spring 3.0 MVC的核心概念,并通过实际项目实例加深理解。 1. **Spring MVC基本概念**:Spring MVC是Spring框架的一部分,负责处理HTTP请求和响应。它遵循模型-...

    Spring MVC 的注解使用实例

    本实例将深入探讨Spring MVC中常见的注解及其应用。 1. `@Controller` 注解:这个注解用于标记一个类作为Spring MVC的控制器。当Spring容器启动时,会扫描带有@Controller的类,并将这些类实例化,用于处理HTTP请求...

    非注解Springmvc+spring+hibernate 入门实例

    下面我们将深入探讨"非注解SpringMVC+Spring+Hibernate入门实例"中的关键知识点。 首先,让我们从SpringMVC开始。SpringMVC是一个Model-View-Controller架构模式的实现,用于构建Web应用程序。在非注解方式下,我们...

    spring mvc入门小例子

    本教程将深入探讨Spring MVC的基本概念和关键组件,帮助初学者快速入门。 首先,让我们理解Spring MVC的核心组件: 1. **DispatcherServlet**:它是Spring MVC的前端控制器,负责接收HTTP请求,根据请求的URL和...

    spring3 MVC 入门hello world源码

    **Spring3 MVC 入门Hello World源码解析** Spring3 MVC是Spring框架的重要组成部分,它是一个用于构建Web应用程序的模型-视图-控制器(MVC)框架。本篇将深入探讨Spring3 MVC的基础知识,通过"Hello World"实例来...

    spring3.0 mvc和rest入门例子

    本文将深入探讨这两个概念以及如何通过一个入门实例来理解它们。 Spring MVC(Model-View-Controller)是 Spring 框架的一部分,用于构建Web应用程序。它遵循MVC设计模式,有助于分离业务逻辑、数据处理和用户界面...

    Spring MVC入门项目

    **Spring MVC 入门项目详解*...这个入门项目提供了一个简单的Spring MVC应用实例,通过实际操作可以更好地理解框架的工作原理和使用方式。对于Java Web开发者来说,掌握Spring MVC是提升开发效率和项目质量的重要步骤。

    一个Spring的入门实例;一个Struts的入门实例

    以上就是 Spring 和 Struts 的基础概念及入门实例的创建流程。这两个框架各有优势,Spring 更注重模块化和灵活性,而 Struts 则更侧重于 MVC 结构的实现。在实际项目中,两者常被一起使用,形成所谓的“Spring + ...

    Springmvc入门实例

    **Spring MVC 入门实例详解** Spring MVC 是一个基于 Java 的模型-视图-控制器(MVC)架构,是 Spring 框架的一部分,用于构建Web应用程序。它提供了丰富的功能,如请求处理、数据绑定、异常处理等,使得开发者能够...

    Spring mvc、 Spring、 Mybatis、 注解实例、 项目实例 从入门到项目实战

    通过这些实例,学习者将能够逐步掌握Spring MVC、Spring和MyBatis的用法,理解它们之间的协同工作,从而提高开发效率和代码质量。在实际工作中,这样的知识和技能是构建高效、可维护的企业级应用所必需的。对于初学...

    spring data jpa入门实例

    【Spring Data JPA 入门实例】 Spring Data JPA 是 Spring 框架的一个模块,它简化了数据库访问层(DAO)的开发,通过提供自动化的 Repository 实现,使得开发者无需编写大量的 CRUD(创建、读取、更新、删除)代码...

Global site tag (gtag.js) - Google Analytics