springMVC简易框架的搭建与改进

来源:互联网 发布:p2p网络摄像机说明书 编辑:程序博客网 时间:2024/06/05 16:42

项目中jar包下载地址:

(所需jar包下载地址:)点击打开链接

-其中spring jar包的下载:

spring jar 包下载:可根据以下网址学习下载过程:点击打开链接
也可以进入以下网址直接下载现成的spring所有的jar包:点击打开链接
一、springMVC入门实例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也位于此
包中。

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 )。可以简单地认为,它就是一个总控处理器,但事实上 它除了具备总控处理理器对请求进
行分发的能力外,还与spring 的IOC 容器完全集成在一起,从而可以 更好地使用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><!-- 简析视图定位 --><bean id="viewResolver"         class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/page/" /><property name="suffix" value=".jsp" /></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");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 加上前后缀进行定位。
原创粉丝点击