springmvc自学教程.docx

上传人:b****8 文档编号:9168024 上传时间:2023-05-17 格式:DOCX 页数:52 大小:51.89KB
下载 相关 举报
springmvc自学教程.docx_第1页
第1页 / 共52页
springmvc自学教程.docx_第2页
第2页 / 共52页
springmvc自学教程.docx_第3页
第3页 / 共52页
springmvc自学教程.docx_第4页
第4页 / 共52页
springmvc自学教程.docx_第5页
第5页 / 共52页
springmvc自学教程.docx_第6页
第6页 / 共52页
springmvc自学教程.docx_第7页
第7页 / 共52页
springmvc自学教程.docx_第8页
第8页 / 共52页
springmvc自学教程.docx_第9页
第9页 / 共52页
springmvc自学教程.docx_第10页
第10页 / 共52页
springmvc自学教程.docx_第11页
第11页 / 共52页
springmvc自学教程.docx_第12页
第12页 / 共52页
springmvc自学教程.docx_第13页
第13页 / 共52页
springmvc自学教程.docx_第14页
第14页 / 共52页
springmvc自学教程.docx_第15页
第15页 / 共52页
springmvc自学教程.docx_第16页
第16页 / 共52页
springmvc自学教程.docx_第17页
第17页 / 共52页
springmvc自学教程.docx_第18页
第18页 / 共52页
springmvc自学教程.docx_第19页
第19页 / 共52页
springmvc自学教程.docx_第20页
第20页 / 共52页
亲,该文档总共52页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

springmvc自学教程.docx

《springmvc自学教程.docx》由会员分享,可在线阅读,更多相关《springmvc自学教程.docx(52页珍藏版)》请在冰点文库上搜索。

springmvc自学教程.docx

springmvc自学教程

springmvc学习教程

(一)-入门实例

 

引言

1.MVC:

Model-View-Control

框架性质的C层要完成的主要工作:

封装web请求为一个数据对象、调用业务逻辑层来处理数据对象、

返回处理数据结果及相应的视图给用户。

2.简要概述springmvc

SpringC层框架的核心是DispatcherServlet,它的作用是将请求分发给不同的后端处理器,也即使用

了一种被称为FrontController的模式(后面对此模式有简要说明)。

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配置文件,代码如下:

1.

xmlversion="1.0"encoding="UTF-8"?

>

2.

3.      xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

4.      xsi:

schemaLocation=" 

5.      

6.      

7.          spring

8.          org.springframework.web.servlet.DispatcherServlet

9.          1

10.      

11.      

12.          spring

13.          *.do

14.      

15.

16.

17.

--所有请求都要由DispatcherServlet来处理,因此映射到"/"上面(包括静态页面),不加经测试也未见出错,而且如果要修改spring-servlet.xml的配置位置或名字, 

18.      可以加contextConfigLocation/WEB-INF/spring-servlet.xml 

19.      但一定要放到前面,否则xml校验出错(经测试)。

20.      

21.      简要说明:

DispatcherServlet就是一个Servlet,也是对请求进行转发的核心Servlet。

在这里即所

22.有.do的请求将首先被DispatcherServlet处理,而DispatcherServlet它要作的工作就是对请求进行分

23.发(也即是说把请求转发给具体的Controller)。

可以简单地认为,它就是一个总控处理器,但事实上

24.它除了具备总控处理理器对请求进行分发的能力外,还与spring的IOC容器完全集成在一起,从而可以

25.更好地使用spring的其它功能。

在这里还需留意spring,下面

26.步骤三会用到。

27.      -->

复制代码

步骤三、建立spring-servlet.xml文件,它的命名规则:

servlet-name-servlet.xml。

它的主要代码如下:

1.

xmlversion="1.0"encoding="UTF-8"?

>

2.

3.

//www.springframework.org/schema/beans"

4.      xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"xmlns:

p="http:

//www.springframework.org/schema/p"

5.      xmlns:

mvc="http:

//www.springframework.org/schema/mvc"xmlns:

context="http:

//www.springframework.org/schema/context"

6.      xmlns:

util="http:

//www.springframework.org/schema/util"

7.      xsi:

schemaLocation="http:

//www.springframework.org/schema/beanshttp:

//www.springframework.org/schema/beans/spring-beans-3.0.xsd  

8.        http:

//www.springframework.org/schema/contexthttp:

//www.springframework.org/schema/context/spring-context-3.0.xsd  

9.        http:

//www.springframework.org/schema/mvchttp:

//www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  

10.        http:

//www.springframework.org/schema/utilhttp:

//www.springframework.org/schema/util/spring-util-3.0.xsd">

11.

12.      

13.          class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

14.          

15.                

16.                      helloControl

--说明:

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

-->

17.                

18.          

19.      

20.      

21.

22.

复制代码

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

1.packagecontroller;

2.

3.importjavax.servlet.http.HttpServletRequest;

4.importjavax.servlet.http.HttpServletResponse;

5.

6.importorg.springframework.web.servlet.ModelAndView;

7.importorg.springframework.web.servlet.mvc.Controller;

8.

9.publicclassHelloWordimplementsController{

10.      publicModelAndViewhandleRequest(HttpServletRequestrequest,HttpServletResponseresponse)

11.      throwsException{

12.      ModelAndViewmav=newModelAndView("hello.jsp");

13.      mav.addObject("message","HelloWorld!

");

14.      returnmav;

15.      }

16.      }

17./*

18.*说明:

ModelAndView对象是包含视图和业务数据的混合对象,即是说通过此对象,我们可以知道所

19.返回的相应页面(比如这里返回hello.jsp页面),也可以在相应的页面中获取此对象所包含的业务数据

20.(比如这里message-helloworrld)。

*/

21.

复制代码

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

1.<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>

2.<%

3.Stringpath=request.getContextPath();

4.StringbasePath=request.getScheme()+":

//"+request.getServerName()+":

"+request.getServerPort()+path+"/";

5.%>

6.

7.

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

8.

9.  

10.  ">

11.   

12.  MyJSP'hello.jsp'startingpage

13.   

14.      

15.      

16.         

17.      

18.      

19.      

--

20.      

21.      -->

22.

23.  

24.  

25.  

26.  获取值:

${message}

27.  

28.

29.

复制代码

步骤六:

输入.../hello.do进行测试。

如http:

//localhost/springmvc/hello.do

运行的结果是:

获取值:

HelloWorld!

4.简析springmvc工作原理

(1)启动服务器,根据web.xml的配置加载前端控制器(也称总控制器)DispatcherServlet。

在加载

时、会完成一系列的初始化动作。

(2)根据servlet的映射请求(上面的helloWorld实例中针对.do请求),并参照“控制器配置文

件”(即spring-servlet.xml这样的配置)文件,把具体的请求分发给特定的后端控制器进行处理(比

如上例会分发给HelloWorld控制器进行处理)

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

(4)前端控制器根据后端控制器返回的ModelAndView对象,并结合一些配置(后面有说明),返回一

个相应的页面给客户端。

小结:

这种FrontController模式常应用在主流的web框架中,比如典型的struts1.x框架.Front

Controller模式:

所有请求先交给一个前端处理器(总控处理器)处理,然后前端处理器会参照一些配

置文件再把具体的请求交给相应的后端处理器。

后端处理器调用逻辑层代码,并根据逻辑返回相应的视

图对象给前端控制器。

然后前端控制器再根据视图对象返回具体的页面给客户端(提示:

和springmvc

一样,在struts1.x中前端控制器是Servlet,而在struts2中前端控制器是Filter)。

概述Front

Controller模式:

前端控制器预处理并分发请求给后端控制器,后端控制器进行真正的逻辑处理并返回

视图对象,前端控器器根据视图对象返回具体页面给客户端。

5.初识springmvc的视图

在前面的HelloWorld实例中,在HelloWorld.java中返回ModelAndViewmav=newModelAndView(

"hello.jsp")参数为hello.jsp,它会对应于当前项目根目录下的hello.jsp页面。

但springmvc为我们提供了

一个特别的视图定位方式,下面改进前面的HelloWord实例:

改进一:

在spring-servlet.xml中增加如下代码:

1.

2.

3.

4.

复制代码

改进二:

在HelloWorld.java重新定义返回的ModelAndView对象,即把ModelAndViewmav=new

ModelAndView("hello.jsp")改为ModelAndViewmav=newModelAndView("hello")

改进三:

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

进行上面三个改进操作后,重新访问hello.do会访问到WEB-INF/page/hello.jsp页面。

简析视图定位:

当返回ModelAndView对象名称为hello时,会给hello加上前后缀变成

/WEB-INF/page/hello.jsp。

因此在给前后缀赋值时,应特别注意它和返回的ModelAndView对象能否

组成一个正确的文件全路径。

在前面的“简析springmvc工作原理(4)”点中提到在根

据ModelAndView对象返回页面时,会结合一些配置。

这里就是结合了视图定位方式,给viewName

加上前后缀进行定位

 

springmvc学习教程

(二)-后端控制器(上)

1.概述SpringMVC后端控制器

为了方便开发人员快捷地建立适合特定应用的后端控制器,springMVC实现Controller接口,自定义了许多特定控制器。

这些控制器的层次关系如下:

-AbstractController

-AbstractUrlViewController

-UrlFilenameViewController

-BaseCommandController

  -AbstractCommandController

  -AbstractFormController

-AbstractWizardFormController

-SimpleFormController

  -CancellableFormController

-MultiActionController 

-ParameterizableViewController

-ServletForwardingController

-ServletWrappingController

下面重点分析两个特色控制器:

2.SimpleFormController控制器

在正式开发前,请先熟悉上前面的HelloWord实例。

在保证熟悉前一个实例后,我们建立名为springMVC_02_controllerweb项目,并导入相关的jar包。

步骤一:

建立后端控制器RegControl.java代码如下:

1.packagecontroller;

2.

3.importjavax.servlet.http.HttpServletRequest;

4.importjavax.servlet.http.HttpServletResponse;

5.

6.importorg.springframework.validation.BindException;

7.importorg.springframework.web.servlet.ModelAndView;

8.importorg.springframework.web.servlet.mvc.SimpleFormController;

9.

10.publicclassRegControlextendsSimpleFormController{  

11.  @SuppressWarnings("deprecation")  

12.  publicRegControl(){  

13.      setCommandClass(User.class);  

14.  }  

15.  

16.  protectedModelAndViewprocessFormSubmission(HttpServletRequestarg0,HttpServletResponsearg1,  

17.        Objectformbean,BindExceptionarg3)throwsException{  

18.      Useruser=(User)formbean;  

19.      ModelAndViewmav=newModelAndView("hello");  

20.      mav.addObject("message","HelloWorld!

");  

21.      mav.addObject("user",user);  

22.      returnmav;  

23.  }  

24.  

25.  protectedModelAndViewshowForm(HttpServletRequestarg0,HttpServletResponsearg1,BindExceptionarg2)  

26.        throwsException{  

27.      returnnull;  

28.  }  

29.}  

复制代码

User.java,代码如下:

1.packagecontroller;

2.

3.publicclassUser{  

4.  privateStringusername;  

5.  privateintage;

6.    publicStringgetUsername(){

7.        returnusername;

8.    }

9.    publicvoidsetUsername(Stringusername){

10.        this.username=username;

11.    }

12.    publicintgetAge(){

13.        returnage;

14.    }

15.    publicvoidsetAge(intage){

16.        this.age=age;

17.    }  

18.   

19.}  

复制代码

简要说明:

如果熟悉struts1.x相信很容易理解Objectformbean参

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2