`
JavaCrazyer
  • 浏览: 3008809 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类

SpringMVC入门实例及详细讲解

阅读更多

      Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
  Spring 的 Web MVC 框架是围绕 DispatcherServlet 设计的,它把请求分派给处理程序,同时带有可配置的处理程序映射、视图解析、本地语言、主题解析以及上载文件支持。默认的处理程序是非常简单的 Controller 接口,只有一个方法 ModelAndView handleRequest(request, response)。Spring 提供了一个控制器层次结构,可以派生子类。如果应用程序需要处理用户输入表单,那么可以继承 AbstractFormController。如果需要把多页输入处理到一个表单,那么可以继承 AbstractWizardFormController。

     Spring MVC对于现在较成熟的Model-View-Control框架而言,其解决的主要问题无外乎下面几部分:
     1》将web页面中的输入元素封装为一个(请求)数据对象。
     2》根据请求的不同,调度相应的逻辑处理单元,并将(请求)数据对象作为参数传入。
     3》逻辑处理单元完成运算后,返回一个结果数据对象。
     4》将结果数据对象中的数据与预先设计的表现层相融合并展现给用户。
开发步骤:

 首先新建web Project项目:MySpringMvc

1.加载项目所需要的jar包;
   spring.jar -------------------------这个在spring2.5.6资源包的dist下面
   spring-webmvc.jar---------------这个在spring2.5.6资源包的dist/module下面

2.配置web.xml文件

 <?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">
	<servlet>
		<servlet-name>dd</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!--		<init-param>-->
		<!--  		<param-name>contextConfigLocation</param-name>-->
		<!--  		<param-value>/WEB-INF/applicationContext.xml</param-value>-->
		<!--  	        </init-param>-->
	</servlet>
	<!--
		applicationContext.xml文件代表示应用程序服务的配置和 bean 配置。如果想装入多个配置文件,可以在
		<param-value>标记中用逗号作分隔符。
		springmvc配置文件与spring配置的servlet名称有关[如本配置中是dd]
		通常springmvc配置文件名称结构为:[servlet-name]-servlet.xml,
		如果你没有指定init-param里面contextCofigLocation的值中对应的XML文件的话
		(也就是applicationContext全局配置文件没有配置在web.xml中的话),那么像本
		段代码对应在springmvc中的配置文件就应该是/WEB-INF/dipatcher-servlet.xml这样的文件,
		否则如果配置了applicaitonContext.xml这样的spring全局配置文件,如本配置那么就必须为/WEB-INF/dd-servlet.xml
	-->
	<servlet-mapping>
		<servlet-name>dd</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
</web-app>

 

 

2.由于上面的初始化参数中没有指定名字的XML文件,因此在WEB-INF下面建立

  dispatcher-servlet.xml 

<?xml version="1.0" encoding="UTF-8"?>
<!--看到下面的beans这个元素标签没有,必须有标签的声明-->
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

<!-- URL Mapping -->
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
	<property name="mappings">
		<props>
			<prop key="/regAction.do">regAction</prop>
		</props>
	</property>
</bean>

<!-- definition of View Resolver -->
<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>/view/</value>
	</property>
	<property name="suffix">
		<value>.jsp</value>
	</property>
</bean>
<!-- formController ,这个formController可以配置也可以不配置-->
 <bean id="formController"
 class="org.springframework.web.servlet.mvc.ParameterizableViewController">
  <property name="viewName">
   <value>form</value>
  </property>
 </bean>

<!-- Action Definition -->
<bean id="regAction" class="org.lee.springmvc.demo.RegAction">
<!--在MySpringMvc这个项目中就没有配置这个commandClass,
因为它提前调用了setCommandClass(LoginForm.class)这个方法;这样跟下面效果一样
不过还是建议配成下面这样的更好
-->
	<property name="commandClass">
		<value>org.lee.springmvc.demo.RegInfo</value>
	</property>
	<property name="error_view">
		<value>error</value>
	</property>
	<property name="success_view">
		<value>success</value>
	</property>
	<property name="commandName">
		<value>myCommand</value>
	</property>
</bean>
</beans>

  

 3.建立JSP文件

form.jsp

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib prefix="spring" 
                 uri="http://www.springframework.org/tags"%>
                 
<%@taglib prefix="c" 
                 uri="http://java.sun.com/jsp/jstl/core"%>
<html>
    <head>
        <meta http-equiv="Content-Type" 
              content="text/html; charset=UTF-8">
        <title>Login Form</title>
    </head>
    <body>
    <h1>登入表单</h1>
    <spring:bind path="command.*"> 
        <font color="red">
            <b>${status.errorMessage}</b>
        </font><br> 
    </spring:bind> 
    
    请输入使用者名称与密码:<p> 
    <form name="loginform" action="login.do" method="post"> 
    
        <spring:bind path="command.userName"> 
        名称 <input type="text" name="${status.expression}" value="${status.value}"/>
            <font color="red"><c:out value="${status.errorMessage}" /></font><br/>
        
        </spring:bind> 
    
        <spring:bind path="command.password"> 
        密码 <input type="password" name="${status.expression}" value="${status.value}"/>
         <font color="red"><c:out value="${status.errorMessage}" /></font><br/>
        </spring:bind> 
    
        <input type="submit" value="确定"/> 
    </form> 
    注意:输入错误会再回到这个页面中。      
    </body>
</html>

 

 4.建立jsp文件
success.jsp

<%@page contentType="text/html"%>
<%@page pageEncoding="GBK"%>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=GBK">
        <title>登入成功</title>
    </head>
    <body>
        <H1>哈啰! ${welcomeuser}!!</H1> 
        这是您的神秘礼物!^o^<a href="login.do">退出登录</a>
    </body>
</html>

 5.建立一个java bean LoginForm.java

package zz.it.beans;

public class LoginForm {
	private String userName;
	private String password;

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	
}

 

6.建立controller LoginController.java

package zz.it.controller;


import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

import zz.it.beans.LoginForm;

public class LoginController extends SimpleFormController {
	/**
	 * 构造方法
	 */
	public LoginController() {
		// TODO Auto-generated constructor stub
		//setCommandClass(LoginForm.class); 
		//这句话要是不写的话,那么在dd-servlet.xml中的loginController里面配置上如下:
		// <property name="commandClass">
		//<value>zz.it.beans.LoginForm</value>
		//</property>
		//这样效果也是一样的
	}

	public ModelAndView onSubmit(Object cmd, BindException errors) {
		LoginForm loginForm = (LoginForm) cmd;
		if (loginForm.getUserName().equals("test")
				&& loginForm.getPassword().equals("test")) {
			return new ModelAndView(getSuccessView(), "welcomeuser", loginForm
					.getUserName());
		} else {
			errors.reject("ccc", "用户名或密码有误!");
			errors.rejectValue("userName", "nameErr", null, "用户名错误");
			errors.rejectValue("password", "passErr", null, "密码错误");
			return new ModelAndView(getFormView(), errors.getModel());
		}
	}
}

 

7.最后,整合部署,访问http://localhost:1234/MySpringMvc/login.do  

 效果图

 初始登录界面



 

 登录成功页面



 

   
登录失败页面



 

 

我估计初学者,最关心的大都有这两个问题

 1.这个controller是怎样像struts那样进行封装数据的

 2.<spring:bind>为什么这么用,为什么取值只能是command.xxx

 

关于这两个,我将在下篇文章中继续来解释

 

  • 大小: 6.1 KB
  • 大小: 3.4 KB
  • 大小: 7.2 KB
20
22
分享到:
评论
24 楼 yuanliangding 2015-09-15  
看了。感谢楼主的文章。
23 楼 2047699523 2015-03-16  
spring mvc demo教程源代码下载:http://www.zuidaima.com/share/kspringmvc-p1-s1.htm
22 楼 qq342806869 2014-05-05  
懂得spring和springmvc 在看这个就没问题了
21 楼 raidyue 2013-11-20  
有点乱啊!
20 楼 qq342806869 2013-10-18  
真能坑,不行就别出来,要不你给个提示,不能通。啥也不说垃圾
19 楼 weidong_py 2013-10-07  
weidong_py 写道
JavaCrazyer 写道
guozhiwen 写道
你这例子 扒下来可以运行?? 扯淡呢,不然就别做些乱七八糟的,不然就做的都能用。

爱用不用,我又没让你用,只是我的笔记,你可以不看

此文只与有MVC经验者阅较易,无MVC框架经验则需更多实践,看官勿愤



Java 各MVC框架大同小异,无优劣之显,亦然略繁,Python的Django框架 MVC简易,喜欢简的同学可学之~
18 楼 weidong_py 2013-10-07  
JavaCrazyer 写道
guozhiwen 写道
你这例子 扒下来可以运行?? 扯淡呢,不然就别做些乱七八糟的,不然就做的都能用。

爱用不用,我又没让你用,只是我的笔记,你可以不看

此文只与有MVC经验者阅较易,无MVC框架经验则需更多实践,看官勿愤
17 楼 xh421041075 2013-08-23  
16 楼 飞翔神话 2013-07-17  
新手刚学习springMVC,花了半下午没能调通,希望楼主能发布一个可以完整运行的代码
15 楼 arrowbest 2013-07-11  
果断支持。好东西啊。
14 楼 734303106 2013-06-09  
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 这个坑都加载不上
13 楼 飞翔_1990 2013-04-17  
不过作者也不容易,支持一下!应该写完整点
12 楼 飞翔_1990 2013-04-17  
这么乱,就这还算写的好啊,纯属扯淡
11 楼 doufuguolyl 2013-03-22  
好乱,RegAction和RegInfo两个类都没有……
10 楼 JavaCrazyer 2013-03-05  
sundongyadh 写道
  这篇文章写的很好,通俗易懂,那些喜欢拷贝代码直接的,滚还差不多,谁该给你们准备的。看了别人的经验,还说写的差。看了就不爽。

哈哈,感谢支持
9 楼 sundongyadh 2013-02-25  
  这篇文章写的很好,通俗易懂,那些喜欢拷贝代码直接的,滚还差不多,谁该给你们准备的。看了别人的经验,还说写的差。看了就不爽。
8 楼 JavaCrazyer 2012-12-25  
guozhiwen 写道
你这例子 扒下来可以运行?? 扯淡呢,不然就别做些乱七八糟的,不然就做的都能用。

爱用不用,我又没让你用,只是我的笔记,你可以不看
7 楼 guozhiwen 2012-12-25  
你这例子 扒下来可以运行?? 扯淡呢,不然就别做些乱七八糟的,不然就做的都能用。
6 楼 19774279 2012-11-09  
用Eclipse怎么各种缺包...
5 楼 湫龙天使 2012-07-10  
command.*这是什么?

相关推荐

    ssm整合入门实例 带注释说明

    这个入门实例提供了详细的配置文件和注释,为初学者理解这三者如何协同工作提供了很好的学习资源。下面我们将深入探讨这三个框架的核心概念、整合过程以及它们在实际应用中的作用。 首先,Spring作为核心的依赖注入...

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

    6. **Spring 3.1.0中文版API帮助文档**:这份PDF文档是学习Spring API的重要参考,它详细介绍了每个类和方法的功能,对于理解和使用Spring框架的各个部分非常有帮助。 7. **自学过程**:本教程适合初学者,按照从浅...

    跟我学SpringMVC 教程

    第二章SpringMVC入门讲解了如何快速上手SpringMVC。通过创建一个简单的SpringMVC项目来展示其基本工作流程。这一章将介绍SpringMVC的环境搭建,以及如何配置DispatcherServlet,这是SpringMVC的前端控制器,用来分发...

    springmvc系列教程PDF精讲.

    这个PDF精讲教程应该涵盖了以上所有知识点,并通过实例代码和详细解释,帮助读者逐步提升SpringMVC的实战技能。无论你是Java新手还是有经验的开发者,都能从中受益,增强自己在Web开发领域的专业能力。

    Spring之MVC 入门实例

    在这个入门实例中,我们将深入理解 Spring MVC 的基本概念和工作原理,并通过实际操作来学习如何创建一个简单的应用程序。 1. **模型(Model)**:在 Spring MVC 中,模型对象负责存储应用程序的数据。它们可以是 ...

    springmvc.7z

    总的来说,"springmvc.7z" 提供了一个基础的 Spring MVC 教程,通过这个实例,新手可以学习如何配置 Spring MVC 项目,编写控制器,理解和运用 MVC 设计模式,以及如何在无数据库的情况下实现基本的 HTTP 请求响应。...

    Spring_MVC_教程_快速入门_深入分析

    1. 入门实例:对于SpringMVC的新手而言,通过实例化步骤快速进入SpringMVC的学习是非常必要的。入门实例通常包括创建一个Spring MVC项目、配置DispatcherServlet、编写一个控制器、配置视图解析器以及创建视图模板等...

    spring+springmvc+mybatis简单增删查

    下面将详细讲解这三个组件及其整合应用。 **Spring框架** Spring是一个全面的企业级应用框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等核心功能。DI...

    SpringMVC:生成Excel和PDF

    本文将详细讲解如何利用Spring MVC结合开源库实现Excel和PDF的生成。 首先,我们要引入两个关键的库:Apache POI用于生成Excel,iText或Flying Saucer用于生成PDF。Apache POI是一个流行的API,它允许Java程序员...

    intellij idea 2017 spring mvc 入门

    【标签】:“springmvc, spring, 入门, 简单, springmvc” 这些标签强调了本教程的核心内容:Spring MVC的基础知识,适合初学者,并且讲解过程简单易懂。无论你是Spring框架的新手,还是对MVC设计模式不熟悉,都...

    SSM入门增删改查例子

    这个入门实例旨在帮助初学者理解如何将这三个组件整合在一起,实现基本的增删改查(CRUD)操作。下面将详细解释SSM框架的核心组件以及它们在实际应用中的作用。 **Spring框架** 是一个全面的后端应用框架,它提供了...

    Spring&Mybatis&SpringMVC总结笔记-最全最基础.pdf

    本总结笔记是Spring、Mybatis、SpringMVC的综合学习资源,涵盖了这些框架的基本概念、配置方式、优点与适用场景,以及它们各自组件和功能点的详细解释。适用于初学者入门学习,同时也可以作为面试时的参考资料,帮助...

    Spring框架、SpringMVC框架、Maven高级(缺)、SpringBoot框架、MyBatis-Plus框架

    1.7 部分讨论了 Bean 的实例化方式,包括构造方法、静态工厂和实例工厂的使用。1.7.3 中的 FactoryBean 提供了一种更灵活的 Bean 创建方式。1.8-1.9 介绍了 Bean 的生命周期,包括初始化、使用和销毁等阶段,以及...

    狂神springmvc 笔记,同b站课程

    1. **SpringMVC入门**: - MVC模式:理解模型、视图和控制器之间的关系,如何通过它们分离业务逻辑和用户界面。 - DispatcherServlet:作为SpringMVC的前端控制器,负责调度请求到相应的处理器。 2. **配置...

    入门学习SSM框架的一个小例子

    以下是关于SSM框架及其实例的详细解释: **Spring框架**:Spring是Java领域的一个全面的开源应用框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等核心...

    搭建ssm demo例子

    下面将详细讲解如何利用注解来搭建这个DEMO。 首先,我们需要了解SpringMVC中的注解。SpringMVC通过注解简化了控制器类的编写,如@Controller定义控制器,@RequestMapping处理请求映射,@RequestParam获取请求参数...

Global site tag (gtag.js) - Google Analytics