springmvc经典自学教程Word文件下载.docx
《springmvc经典自学教程Word文件下载.docx》由会员分享,可在线阅读,更多相关《springmvc经典自学教程Word文件下载.docx(41页珍藏版)》请在冰豆网上搜索。
1.<
?
xmlversion="
1.0"
encoding="
UTF-8"
>
2.<
web-appversion="
2.5"
xmlns="
3.
xmlns:
xsi="
http:
//www.w3.org/2001/XMLSchema-instance"
4.
xsi:
schemaLocation="
5.
6.
<
servlet>
7.
<
servlet-name>
spring<
/servlet-name>
8.
servlet-class>
org.springframework.web.servlet.DispatcherServlet<
/servlet-class>
9.
load-on-startup>
1<
/load-on-startup>
10.
/servlet>
11.
servlet-mapping>
12.
13.
url-pattern>
*.do<
/url-pattern>
14.
/servlet-mapping>
15.<
/web-app>
16.
17.<
!
--所有请求都要由DispatcherServlet来处理,因此映射到"
/"
上面(包括静态页面),<
不加经测试也未见出错,而且如果要修改spring-servlet.xml的配置位置或名字,
18.
可以加<
init-param>
param-name>
contextConfigLocation<
/param-name>
param-value>
/WEB-INF/spring-servlet.xml<
/param-value>
19.
/init-param>
但一定要放到<
前面,否则xml校验出错(经测试)。
20.
21.
简要说明:
DispatcherServlet就是一个Servlet,也是对请求进行转发的核心Servlet。
在这里即所
22.有.do的请求将首先被DispatcherServlet处理,而DispatcherServlet它要作的工作就是对请求进行分
23.发(也即是说把请求转发给具体的Controller)。
可以简单地认为,它就是一个总控处理器,但事实上
24.它除了具备总控处理理器对请求进行分发的能力外,还与spring的IOC容器完全集成在一起,从而可以
25.更好地使用spring的其它功能。
在这里还需留意<
,下面
26.步骤三会用到。
27.
-->
复制代码
步骤三、建立spring-servlet.xml文件,它的命名规则:
servlet-name-servlet.xml。
它的主要代码如下:
2.
3.<
beansxmlns="
//www.springframework.org/schema/beans"
xmlns:
p="
//www.springframework.org/schema/p"
mvc="
//www.springframework.org/schema/mvc"
context="
//www.springframework.org/schema/context"
util="
//www.springframework.org/schema/util"
//www.springframework.org/schema/beanshttp:
//www.springframework.org/schema/beans/spring-beans-3.0.xsd
//www.springframework.org/schema/contexthttp:
//www.springframework.org/schema/context/spring-context-3.0.xsd
//www.springframework.org/schema/mvchttp:
//www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
//www.springframework.org/schema/utilhttp:
//www.springframework.org/schema/util/spring-util-3.0.xsd"
11.
beanid="
simpleUrlHandlerMapping"
class="
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"
propertyname="
mappings"
15.
props>
16.
propkey="
/hello.do"
helloControl<
/prop>
--说明:
hello.do的请求将给名为helloControl的bean进行处理。
-->
17.
/props>
/property>
/bean>
helloControl"
controller.HelloWord"
21.<
/beans>
22.
步骤四、完成HelloWord.java的编写,代码如下:
1.packagecontroller;
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{
publicModelAndViewhandleRequest(HttpServletRequestrequest,HttpServletResponseresponse)
throwsException{
ModelAndViewmav=newModelAndView("
hello.jsp"
);
mav.addObject("
message"
"
HelloWorld!
"
returnmav;
}
17./*
18.*说明:
ModelAndView对象是包含视图和业务数据的混合对象,即是说通过此对象,我们可以知道所
19.返回的相应页面(比如这里返回hello.jsp页面),也可以在相应的页面中获取此对象所包含的业务数据
20.(比如这里message-helloworrld)。
*/
21.
步骤五、在当前项目web根目录下编写hello.jsp,主要代码如下:
%@pagelanguage="
java"
import="
java.util.*"
pageEncoding="
%>
%
3.Stringpath=request.getContextPath();
4.StringbasePath=request.getScheme()+"
:
//"
+request.getServerName()+"
+request.getServerPort()+path+"
;
5.%>
6.
7.<
DOCTYPEHTMLPUBLIC"
-//W3C//DTDHTML4.01Transitional//EN"
8.<
html>
head>
basehref="
%=basePath%>
title>
MyJSP'
hello.jsp'
startingpage<
/title>
metahttp-equiv="
pragma"
content="
no-cache"
cache-control"
expires"
0"
keywords"
keyword1,keyword2,keyword3"
description"
Thisismypage"
--
linkrel="
stylesheet"
type="
text/css"
href="
styles.css"
23.
/head>
24.
25.
body>
26.
获取值:
${message}
/body>
28.<
/html>
29.
步骤六:
输入.../hello.do进行测试。
如http:
//localhost/springmvc/hello.do
运行的结果是:
获取值:
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
前端控制器预处理并分发请求给后端控制器,后端控制器进行真正的逻辑处理并返回
视图对象,前端控器器根据视图对象返回具体页面给客户端。
5.初识springmvc的视图
在前面的HelloWorld实例中,在HelloWorld.java中返回ModelAndViewmav=newModelAndView(
)参数为hello.jsp,它会对应于当前项目根目录下的hello.jsp页面。
但springmvc为我们提供了
一个特别的视图定位方式,下面改进前面的HelloWord实例:
改进一:
在spring-servlet.xml中增加如下代码:
viewResolver"
org.springframework.web.servlet.view.InternalResourceViewResolver"
prefix"
value="
/WEB-INF/page/"
/>
suffix"
.jsp"
4.<
改进二:
在HelloWorld.java重新定义返回的ModelAndView对象,即把ModelAndViewmav=new
ModelAndView("
)改为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代码如下:
6.importorg.springframework.validation.BindException;
7.importorg.springframework.web.servlet.ModelAndView;
8.importorg.springframework.web.servlet.mvc.SimpleFormController;
9.
10.publicclassRegControlextendsSimpleFormController{
@SuppressWarnings("
deprecation"
)
publicRegControl(){
setCommandClass(User.class);
}
protectedModelAndViewprocessFormSubmission(HttpServletRequestarg0,HttpServletResponsearg1,
Objectformbean,BindExceptionarg3)throwsException{
Useruser=(User)formbean;
user"
user);
22.
protectedModelAndViewshowForm(HttpServletRequestarg0,HttpServletResponsearg1,BindExceptionarg2)
throwsException{
returnnull;
28.
29.}
User.java,代码如下:
3.publicclassUser{
privateStringusername;
privateintage;
publicStringgetUsername(){
returnusername;
}
publicvoidsetUsername(Stringusername){
this.username=username;
publicintgetAge(){
returnage;
publicvoidsetAge(intage){
this.age=age;
19.}
如果熟悉struts1.x相信很容易理解Objectformbean参