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的接口t-3.0.5.RELEASE.jar:构建在beans包基础上,用来处理资源文件及国际化。
-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 包。
步骤二、编写l配置文件,代码如下:
<?xml version="1.0" encoding="UTF-‐8"?>
<web-‐app version="2.5"
xmlns="java.sun/xml/ns/javaee"
xmlns:xsi="/2001/XMLSchema-‐instance"
xsi:schemaLocation="java.sun/xml/ns/javaee
java.sun/xml/ns/javaee/web-‐app_2_5.xsd">
<servlet>
<servlet-‐name>spring</servlet-‐name>
<servlet-‐class>org.springframework.web.servlet.Dispat cherServlet</servlet-‐class>
<load-‐on-‐startup>1</load-‐on-‐startup>
</servlet>
springmvc常用标签<servlet-‐mapping>
<servlet-‐name>spring</servlet-‐name>
<url-‐pattern>*.do</url-‐pattern>
</servlet-‐mapping>
</web-‐app>
<!-‐-‐ 所有请求都要由DispatcherServlet来处理,因此映射到"/"上面
(包括静态页面), <load-‐on-‐startup>不加经测试也未见出错,而且如
果要修改spring-‐l的配置位置或名字,
可以加 <init-‐param>
<param-‐name>contextConfigLocation</param-‐name>
<param-‐value>/WEB-‐INF/spring-‐l</param-‐value>
</init-‐param> 但一定要放到<load-‐on-‐startup>前面,否则
xml校验出错(经测试)。
简要说明:DispatcherServlet就是一个Servlet,也是对请
求进行转发的核心Servlet。在这里即所
有.do 的请求将首先被DispatcherServlet处理,而
DispatcherServlet它要作的工作就是对请求进行分
发(也即是说把请求转发给具体的Controller)。可以简单地认为,它就
是一个总控处理器,但事实上
它除了具备总控处理理器对请求进行分发的能力外,还与spring的IOC
容器完全集成在一起,从而可以
更好地使用spring的其它功能。在这里还需留意
<servlet-‐name>spring</servlet-‐name>,下面
步骤三会用到。
-‐-‐>
步骤三、建立l文件,它的命名规则:l。它的主要代码如下:
1.<?xml version="1.0" encoding="UTF-‐8"?>
2.
3.<beans xmlns="/schema/beans"
4. xmlns:xsi="/2001/XMLSchema-‐instan
ce" xmlns:p="/schema/p"
5. xmlns:mvc="/schema/m
vc"
xmlns:context="/schema/conte
xt"
6. xmlns:util="/schema/
util"
7. xsi:schemaLocation="
/schema/beans
/schema/beans/spring-‐beans-‐3
.0.xsd
8. /schema/context
/schema/context/spring-‐conte
xt-‐3.0.xsd
9. /schema/mvc
/schema/mvc/spring-‐mvc-‐3.0.x
sd
10. /schema/util
/schema/util/spring-‐util-‐3.0
.xsd">
11.
12. <bean id="simpleUrlHandlerMapping"
13. c lass="org.springframework.web.servlet.han
dler.SimpleUrlHandlerMapping">
14. <property name="mappings">
15. <props>
16. <prop
key="/hello.do">helloControl</prop><!-‐-‐ 说明:hello.do的请求
将给名为helloControl的bean进行处理。 -‐-‐>
17. </props>
18. </property>
19. </bean>
20. <bean id="helloControl"
class="controller.HelloWord"></bean>
21.</beans>
22.
复制代码
步骤四、完成HelloWord.java的编写,代码如下:
1.package controller;
2.
3.import javax.servlet.http.HttpServletRequest;
4.import javax.servlet.http.HttpServletResponse;
5.
6.import org.springframework.web.servlet.ModelAndView;
7.import org.springframework.web.servlet.mvc.Controller;
8.
9.public class HelloWord implements Controller {
10. public ModelAndView
handleRequest(HttpServletRequest request,
HttpServletResponse response)
11. throws Exception {
12. ModelAndView mav = new ModelAndView("hello.jsp");
13. mav.addObject("message", "Hello World!");
14. return mav;
15. }
16. }
17./*
18.* 说明:ModelAndView对象是包含视图和业务数据的混合对象,即是说
通过此对象,我们可以知道所
19.返回的相应页面(比如这里返回hello.jsp页面),也可以在相应的页面
中获取此对象所包含的业务数据
20.(比如这里message-‐hello worrld)。*/
21.
复制代码
步骤五、在当前项目web根目录下编写hello.jsp,主要代码如下:
1.<%@ page language="java" import="java.util.*"
pageEncoding="UTF-‐8"%>
2.<%
3.String path = ContextPath();
4.String basePath =
5.%>
6.
7.<!DOCTYPE HTML PUBLIC "-‐//W3C//DTD HTML 4.01
Transitional//EN">
8.<html>
9. <head>
10. <base href="<%=basePath%>">
11.
12. <title>My JSP 'hello.jsp' starting page</title>
13.
14. <meta http-‐equiv="pragma" content="no-‐cache">
15. <meta http-‐equiv="cache-‐control"
content="no-‐cache">
16. <meta http-‐equiv="expires" content="0">
17. <meta http-‐equiv="keywords"
content="keyword1,keyword2,keyword3">
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论