`
86asm
  • 浏览: 203733 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

spring-mvc入门(一):入门实例

阅读更多

引言

1.MVC Model-View-Control

框架性质的C 层要完成的主要工作:封装web 请求为一个数据对象、调用业务逻辑层来处理数据对象、返回处理数据结果及相应的视图给用户。

2. 简要概述springmvc

Spring C 层框架的核心是 DispatcherServlet,它的作用是将请求分发给不同的后端处理器,也即 使用了一种被称为Front Controller 的模式(后面对此模式有简要说明)。 Spring 的C 层框架使用了后端控制器来、映射处理器和视图解析器来共同完成C 层框架的主要工作。并且spring 的C 层框架还真正地把业务层处理的数据结果和相应的视图拼成一个对象,即我们后面会经常用到的ModelAndView 对象。 

 

一、入门实例

1. 搭建环境

spring 的官方API 文档中,给出所有包的作用概述,现列举常用的包及相关作用:

org.springframework.aop-3.0.5.RELEASE.jar :与Aop 编程相关的包

org.springframework.beans-3.0.5.RELEASE.jar :提供了简捷操作bean 的接口

org.springframework.context-3.0.5.RELEASE.jar :构建在beans 包基础上,用来处理资源文件及国际化。

org.springframework.core-3.0.5.RELEASE.jar spring 核心包

org.springframework.web-3.0.5.RELEASE.jar web 核心包,提供了web 层接口

org.springframework.web.servlet-3.0.5.RELEASE.jar web 层的一个具体实现包,DispatcherServlet也位于此包中。

后文全部在spring3.0 版本中进行,为了方便,建议在搭建环境中导入spring3.0 的所有jar 包(所有jar 包位于dist 目录下)。

2. 编写HelloWorld 实例

步骤一、建立名为springMVC_01_helloword ,并导入上面列出的jar 包。

步骤二、编写web.xml 配置文件,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

	<servlet>
		<servlet-name>spmvc</servlet-name>
		<servlet-class>
			org.springframework.web.servlet.DispatcherServlet
		</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>spmvc</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
</web-app>

 

简要说明 DispatcherServlet 就是一个Servlet ,也是对请求进行转发的核心Servlet 。在这里即所有.do 的请求将首先被DispatcherServlet 处理,而DispatcherServlet 它要作的工作就是对请求进行分发(也即是说把请求转发给具体的Controller )。可以简单地认为,它就是一个总控处理器,但事实上它除了具备总控处理理器对请求进行分发的能力外,还与springIOC 容器完全集成在一起,从而可以更好地使用spring 的其它功能。在这里还需留意 < servlet-name > spmvc </ servlet-name > ,下面步骤三会用到。

步骤三、建立 spmvc-servlet.xml 文件,它的命名规则: servlet-name-servlet.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="simpleUrlHandlerMapping"		class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="/hello.do">helloControl</prop>					         
                        </props>
		</property>
	</bean>
	<bean id="helloControl" class="com.asm.HelloWord"></bean>
</beans>

 

说明: hello.do 的请求将给名为 helloControl bean 进行处理。

步骤四、完成 HelloWord.java 的编写,代码如下:

package com.asm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class HelloWord implements Controller {
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		ModelAndView mav = new ModelAndView("hello.jsp");
		mav.addObject("message", "Hello World!");
		return mav;
	}
}

 

说明 ModelAndView 对象是包含视图和业务数据的混合对象,即是说通过此对象,我们可以知道所返回的相应页面(比如这里返回hello.jsp 页面),也可以在相应的页面中获取此对象所包含的业务数据(比如这里message-hello worrld )。

步骤五、在当前项目web 根目录下编写hello.jsp ,主要代码如下:

< body >

    世界,你好!

    获取值: ${message }

</ body >

步骤六:输入 .../hello.do 进行测试。

4. 简析spring mvc 工作原理

1 )启动服务器,根据web.xml 的配置加载前端控制器(也称总控制器) DispatcherServlet 。在加载时、会完成一系列的初始化动作。

2 )根据servlet 的映射请求(上面的helloWorld 实例中针对.do 请求),并参照“控制器配置文件”(即spmvc-servlet.xml 这样的配置)文件,把具体的请求分发给特定的后端控制器进行处理(比如上例会分发给HelloWorld 控制器进行处理)

3 )后端控制器调用相应的逻辑层代码,完成处理并返回视图对象( ModelAndView )给前端处理器。

4 )前端控制器根据后端控制器返回的 ModelAndView 对象,并结合一些配置(后面有说明),返回一个相应的页面给客户端。

小结 :这种Front Controller 模式常应用在主流的web 框架中,比如典型的struts1.x 框架.Front Controller 模式:所有请求先交给一个前端处理器(总控处理器)处理,然后前端处理器会参照一些配置文件再把具体的请求交给相应的后端处理器。后端处理器调用逻辑层代码,并根据逻辑返回相应的视图对象给前端控制器。然后前端控制器再根据视图对象返回具体的页面给客户端(提示:和spring mvc 一样,在struts1.x 中前端控制器是Servlet, 而在struts2 中前端控制器是Filter )。 概述 Front Controller 模式:前端控制器预处理并分发请求给后端控制器,后端控制器进行真正的逻辑处理并返回视图对象,前端控器器根据视图对象返回具体页面给客户端。

5. 初识spring mvc 的视图

在前面的HelloWorld 实例中,在HelloWorld.java 中返回 ModelAndView mav = new ModelAndView( "hello.jsp" ) 参数为 hello.jsp ,它会对应于当前项目根目录下的 hello.jsp 页面。但 spring mvc 为我们提供了一个特别的视图定位方式,下面改进前面的 HelloWord 实例:


改进一 :在 spmvc-servlet.xml 中增加如下代码:

<bean id="viewResolver"		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/page/" />
		<property name="suffix" value=".jsp" />
</bean>

 

改进二 :在HelloWorld.java 重新定义返回的 ModelAndView 对象,即把 ModelAndView mav = new ModelAndView( "hello.jsp" )      改为   ModelAndView mav = new ModelAndView( "hello" )

改进三 :在/WEB-INF/page 目录下建立hello.jsp 页面

进行上面三个改进操作后,重新访问hello.do 会访问到WEB-INF/page/hello.jsp 页面。
简析视图定位 :当返回
ModelAndView 对象名称为hello 时,会给hello 加上前后缀变成

/WEB-INF/page/hello.jsp 。因此在给前后缀赋值时,应特别注意它和返回的 ModelAndView 对象能否组成一个正确的文件全路径。在前面的“简析spring mvc 工作原理(4) ”点中提到在根据ModelAndView 对象返回页面时,会结合一些配置。这里就是结合了视图定位方式,给viewName 加上前后缀进行定位。

 

 

14
4
分享到:
评论
11 楼 liouyan9 2017-02-08  
jiangshiwei2008 写道
老是提醒Servlet spmvc is currently unavailable
,请问是哪里配置的不正确啊?

建议检查一下tomcat版本和java版本是否匹配
9 楼 13_木木 2014-08-23  
谢谢分享,明白了很多
8 楼 jiangshiwei2008 2012-07-16  
老是提醒Servlet spmvc is currently unavailable
,请问是哪里配置的不正确啊?
7 楼 jiangshiwei2008 2012-07-16  
请问一下在哪个目录下建立spmvc-servlet.xml ?哪个hello.jsp具体代码是什么?希望能指教一下。
6 楼 jayslife 2012-06-28  
bu cuo de
5 楼 applepie 2012-03-07  
sgelove 写道
根据你给的示例,自己也写了一边,放在tomcat里面,请求localhost:8080/spring3test/hello.jsp

返回404.不明白为什么。


xml中已经写明了,control 拦截的是 hello.do,
如果改成 <prop key="/hello.jsp">helloControl</prop> 这样的话,你输入的方式可以访问到页面,但是message的值为空.
4 楼 sgelove 2012-02-15  
根据你给的示例,自己也写了一边,放在tomcat里面,请求localhost:8080/spring3test/hello.jsp

返回404.不明白为什么。
3 楼 peterchao_asch 2012-01-04  
不错 感谢
2 楼 Aurora_lr 2011-11-14  
以前不理解的东西 现在一下子就明白了!多谢! 
1 楼 liuzidong 2011-09-23  
  不错,学习了!

相关推荐

    spring-mvc.rar_spring mvc

    这个名为"spring-mvc.rar_spring mvc"的压缩包可能是为了帮助初学者理解和入门Spring MVC,解决他们在开发过程中可能遇到的问题。下面将详细阐述Spring MVC的核心概念和关键组件。 1. **DispatcherServlet**:它是...

    Spring MVC入门实例

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

    Spring-MVC-step-by-step.zip_Java MVC spring_Java spring mvc_sp

    本教程中的"Spring-MVC-step-by-step.pdf"文件将详细介绍上述概念,并通过实例代码演示如何配置和使用Spring MVC,帮助你一步步实践每个知识点。 总之,Spring MVC是Java Web开发的强大工具,理解并掌握其工作原理...

    Spring MVC 入门实例

    如果你手上有一本《Spring in Action》, 那么你最好从第三部分"Spring 在 Web 层的应用--建立 Web 层"开始看, 否则那将是一场恶梦! 首先, 我需要在你心里建立起 Spring MVC 的基本概念. 基于 Spring 的 Web 应用...

    spring-mvc DEMO

    在"spring-mvc DEMO"中,我们可以看到一个简单的Spring MVC应用实例。这个DEMO是为了帮助开发者快速理解和入门Spring MVC。当你将其导入到MyEclipse这样的集成开发环境中,你可以直接运行并观察其工作原理。 1. **...

    Spring之MVC 入门实例

    **Spring MVC 入门实例详解** Spring MVC 是 Spring 框架的重要组成部分,它是一个用于构建 Web 应用程序的模型-视图-控制器(MVC)架构。本实例将帮助初学者理解如何配置和使用 Spring MVC 实现一个简单的 Web ...

    Spring MVC Beginner's Guide

    入门指南主要围绕如何配置Spring MVC开发环境、理解Spring MVC架构以及进行项目部署等方面展开。以下是详细知识点: 1. 配置Spring开发环境 - 安装Java:初学者需要安装Java Development Kit(JDK),以便进行Java...

    spring3 MVC 入门hello world源码

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

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

    Spring 3.0 MVC 是一个强大的Java框架,用于构建企业级Web应用程序。它以其模块化、松耦合和高度可配置性而闻名。本自学教程集合了多种资源,旨在帮助初学者逐步掌握Spring 3.0 MVC的核心概念,并通过实际项目实例...

    Java EE 框架整合 开发入门到实战-Spring+Spring MVC+MyBatis微课版复习笔记

    Spring、Spring MVC和MyBatis是Java EE中最受欢迎的框架之一。这些框架的整合使用广泛用于构建企业级应用。下面将详细介绍这些框架的核心概念、模块组成、实例化Bean的方式以及依赖注入的机制和优势。 Spring框架...

    spring mvc+hibernate 简单 实例 代码,新手入门

    在这个简单的实例 "demo1" 中,你可以找到一个基础的 Spring MVC 和 Hibernate 结合的项目结构,包括配置文件、实体类、DAO、Service、Controller 和视图页面。通过这个实例,新手可以逐步了解和实践这两个框架的...

    SPRING MVC入门实例

    Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,专门用于构建 MVC(Model-View-Controller)架构的 Web 应用程序。本实例将帮助初学者理解并掌握 Spring MVC 的基本概念和使用方法。...

    spring-data-mongodb-reference 1.5.4

    - **域类 Web 绑定**:Spring MVC 中的绑定支持。 - **Web 分页**:支持 Web 上的分页功能。 #### 四、MongoDB 支持 **4.1 入门** - **安装 MongoDB**:确保已正确安装 MongoDB 服务器。 - **设置 Spring Data ...

    spring2-aop入门实例教程

    ### Spring2-AOP入门实例教程知识点详解 #### 一、Spring框架概述 - **轻量级J2EE开发框架**:Spring是一个轻量级的Java应用框架,它为开发复杂的企业级应用提供了一种简化的方法。 - **发展历程**:自2002年发布...

    spring mvc入门小例子

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

    Java EE 框架整合开发⼊⻔到实战——Spring+Spring MVC+MyBatis(微课版)课后习题答案.pdf

    这份文档名为《Java EE 框架整合开发入门到实战——Spring+Spring MVC+MyBatis(微课版)课后习题答案.pdf》,它显然是关于Java EE中流行的三个框架整合使用的教程。这三个框架分别是Spring、Spring MVC和MyBatis,...

    Spring MVC+EXT JS开发简单的增删改查入门实例

    **Spring MVC + EXT JS 开发简单的增删改查入门实例** 在Web开发中,Spring MVC作为Spring框架的一部分,被广泛用于构建后端服务,而EXT JS则是一款强大的前端JavaScript库,用于创建美观、交互丰富的用户界面。将...

Global site tag (gtag.js) - Google Analytics