准备开发环境和运行环境
开发工具:eclipse
运行环境:apache-tomcat-7.0.4
工程:动态web 工程
Spring 框架下载:
spring-framework-3.2.3.RELEASE-dist.zip
依赖jar 包:
Spring框架jar包:
将spring-framework-3.2.3.RELEASE-dist.zip/libs/下的所有jar包,去掉
XXX-javadoc.jar,还有去掉XXX-sources.jar,剩下的拷贝到项目的WEB-INF/lib
目录下
Spring框架依赖的jar包:
需要添加Apache commons logging日志,此处使用的是commons.logging-1.1.1.jar;

当然还需要引入tomcat/lib里面的servlet-api.jar

需要添加jstl标签库支持,此处使用的是jstl-1.2.jar和standard-1.1.2.jar;

前端控制器的配置
在web.xml中添加如下配置:

 <servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

load-on-startup :表示启动容器时初始化该Servlet;
url-pattern :表示哪些请求交给Spring Web MVC处理,“/” 是用来定义默认
servlet映射的。也可以如“*.html”表示拦截所有以html为扩展名的请求。
自此请求已交给SpringMVC框架处理,因此还需要配置Spring的配置文件,默认
DispatcherServlet会加载WEB-INF/[DispatcherServlet的Servlet名字]-
servlet.xml配置文件。本示例为WEB-INF/ springmvc-servlet.xml。

在Spring配置文件中配置HandlerMapping、HandlerAdapter

本示例在WEB-INF/springmvc-servlet.xml文件中:

 <!-- HandlerMapping -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!-- HandlerAdapter -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

BeanNameUrlHandlerMapping :
表示将请求的URL和Bean名字映射,如URL为 “上下文/hello”,则Spring配置文件必须有一个名字为“/hello”的Bean,上下文默认忽略。

SimpleControllerHandlerAdapter :
表示所有实现了org.springframework.web.servlet.mvc.Controller接口的Bean可以作为Spring Web MVC中的处理器。如果需要其他类型的处理器可以通过实现
HadlerAdapter来解决。

在Spring配置文件中配置ViewResolver
本示例在WEB-INF/springmvc-servlet.xml文件中:

 <!-- ViewResolver -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>

InternalResourceViewResolver :用于支持Servlet、JSP视图解析;
viewClass :JstlView表示JSP模板页面需要使用JSTL标签库,classpath中必须包含jstl的相关jar包;
prefix 和suffix :查找视图页面的前缀和后缀(前缀[逻辑视图名]后缀),比如传进来的逻辑视图名为hello,则该该jsp视图页面应该存放在“WEB-INF/jsp/hello.jsp”

开发处理器/页面控制器

 public class HelloWorldController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest req,HttpServletResponse resp) throws Exception {
//1、收集参数、验证参数
//2、绑定参数到命令对象
//3、将命令对象传入业务对象进行业务处理
//4、选择下一个页面
ModelAndView mv = new ModelAndView();
//添加模型数据 可以是任意的POJO对象
mv.addObject("message", "Hello World!");
//设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面
mv.setViewName("hello");
return mv;
}
}

org.springframework.web.servlet.mvc.Controller
页面控制器/处理器必须实现Controller接口,注意别选错了;后边我们会学习其他的处理器实现方式;比如注解的方式。
public ModelAndView handleRequest(HttpServletRequest req,HttpServletResponse resp) :
功能处理方法,实现相应的功能处理,比如收集参数、验证参数、绑定参数到命令对象、将命令对象传入业务对象进行业务处理、最后返回ModelAndView对象;
ModelAndView:包含了视图要实现的模型数据和逻辑视图名
“mv.addObject("message", "Hello World!");”表示添加模型数据,此处可以是任意POJO对象;

“mv.setViewName("hello");”表示设置逻辑视图名为“hello”,视图解析器会将其解析为具体的视图,

如前边的视图解析器InternalResourceViewResolver会将其解析为“WEB-INF/jsp/hello.jsp”

把HelloWorldController配置成为Spring的Bean
需要将其添加到Spring配置文件(WEB-INF/chapter2-servlet.xml),让其接受Spring
IoC容器管理:

 <!-- 处理器 -->
<bean name="/hello" class="cn.javass.springmvc.hello.HelloWorldController"/>

name=“/hello” :
前边配置的BeanNameUrlHandlerMapping,表示如过请求的URL为 “上下文/hello”,则将会交给该Bean进行处理。

开发视图页面, 来个最简单的,放到WEB-INF/jsp/hello.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
${message}

启动服务器运行测试
通过请求:http://localhost:9080/mvcexample/hello,如果页面输出“Hello World! ”就
表明成功了!

最新文章

  1. Excel转Html
  2. 分枝定界的matlab实现
  3. javascript匿名函数应用
  4. android中ColorStateList及StateListDrawable设置Selector
  5. python __call__内置函数
  6. 自然语言16_Chunking with NLTK
  7. 极客DIY:制作一个可以面部、自主规划路径及语音识别的无人机
  8. [补充工程统计case]科技活动经费sql2014
  9. 在Winform开发框架中,利用DevExpress控件实现数据的快速录入和选择
  10. .NET下单文件的上传处理
  11. C++之路起航——标准模板库(set)
  12. Git是目前世界上最先进的分布式版本控制系统
  13. Google设计理念
  14. ASP.NET MVC轻教程 Step By Step 10——模型验证
  15. ichartjs-基于html5的图表组件
  16. Vijos P1066 弱弱的战壕【多解,线段树,暴力,树状数组】
  17. Java基础学习笔记十四 常用API之基本类型包装类
  18. 多线程工具类:CountDownLatch、CyclicBarrier、Semaphore、LockSupport
  19. pytorch1.0 用torch script导出模型
  20. java调用微信扫一扫

热门文章

  1. 【Xamarin笔记】Events, Protocols and Delegates
  2. fenshijin
  3. Delphi XE5 如何与其他版本共存
  4. Python中定义字符串
  5. python的变量
  6. SQL2005的cte递归查询子树
  7. (转) java 简单工厂模式(实现一个计算器)
  8. 查询mysql当前连接数
  9. Mac终端命令行提示符格式更改方法
  10. node express 学习2