Spring学习10-SpringMV核心组件2及SpringMVC项目示例

一、SpringMVC核心接口
    
5、ViewResolver接口--视图解析接口

继承体系:

    
5、View接口--视图接口

  二、SpringMVC项目示例

 
(1)建立动态web工程,导入spring的jar包(不要忘加SpringMVC.jar)。

  (2)配置DispatcherServlet
   
DispatcherServlet是SpringMVC的核心,将下面Servlet的注册信息登记在web.xml中。一定要记住:Servlet跟伴侣一样,要结婚,先得注册登记!

<servlet>
 <servlet-name>test</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath*:/springMVC.xml</param-value>

</init-param> 

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>
 
<servlet-name>test</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>
  说明:
 红题字指明了配置文件的文件名,不使用默认配置文件名,而使用springMVC.xml配置文件。

其中<param-value>**.xml</param-value>
这里可以使用多种写法
1、红题字不写,使用默认值:/WEB-INF/<servlet-name>-servlet.xml

2、<param-value>/WEB-INF/classes/springMVC.xml</param-value>

3、<param-value>classpath*:springMVC-mvc.xml</param-value>

4、多个值用逗号分隔
5、在全局定义中加载配置文件
 
<context-param>
   
   
<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/applicationContext.xml,classpath*:springMVC-mvc.xml</param-value>

</context-param>

其中:<context-param>和<servlet>是同一级的元素,并不是父子元素关系

(3)编写Controller,做核心配置文件,并配置url和Controller的映射
package com.wepull.test;
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 HelloController implements
Controller
{

public
ModelAndView handleRequest(HttpServletRequest request,

HttpServletResponse response) throws Exception {

request.setAttribute("hello", "welcome to spring!");

return new ModelAndView("welcome");

}

}

我们知道Struts有个XML格式的核心配置文件,springMVC当然也有,在WEB-INF下新建一XML文件:test-
servlet.xml.注意,这里的test取决于servlet的名字.当DispatcherServlet载入后,它将试图从这个文件中载入应用
上下文。

<?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="beanNameUrlMapping"
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">

</bean>

<!-- 这里的name属性有两个职责,既定义Bean的名字,也定义需要这个控制器处理的URL样式
-->

<bean name="/hello.do"
    
class="com.wepull.test.HelloController">
   
</bean>

</beans>

上面可能有人奇怪,为什么不用id属性,而设置name属性。这里是因为URL中含有XML
id属性非法字符——特别是斜杠(/);

(4)配置一个视图解析器将控制器与JSP结合起来。
将解析器的配置片段加到上面的test-servlet.xml中。

<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix" value="/WEB-INF/jsp/"
/>
     
<property name="suffix" value=".jsp"
/>
</bean>

InternalResourceViewResolver在ModelAndView返回的视图名前加上prefix属性配置的前缀,再在最
后加上suffix属性配置的后缀。由于HelloController返回的ModelAndView中视图名为welcome,所以
InternalResourceViewResolver将在/WEB-INF/jsp/welcome.jsp处查找视图。

(5)编写呈现给用户的jsp文件。
/WEB-INF/jsp/welcome.jsp

<%@ page contentType="text/html;
charset=UTF-8"%>
<%@ page isELIgnored="false" %>
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=utf-8" />
<title>Hello
World!</title>
  </head>
  <body>
  
<h2>${hello}</h2>

</body>
</html>

完成后启动服务器,在浏览器地址栏上输入http://locahost:8080/projectName/hello.do      
就可以访问了。

对照一下,我们发现SpringMVC跟Struts大同小异。只是有两处映射,SpringMVC做的相对灵活。哪两处呢?

(1) url和动作(后端控制器)的映射。

springMVC里有个映射处理器(HandlerMapping)的概念。它实际上是一个处理器映射Bean,用来将一个控制器指定到一个URL上。Spring提供了三种有用的HandlerMapping的实现:

—— BeanNameUrlHandlerMapping

根据控制器的名字将控制器映射到URL

—— SimpleUrlHandlerMapping

用上下文配置文件中定义的属性集合将控制器映射到URL

—— CommonsPathMapHandlerMapping

使用控制器代码中的元数据将控制器映射到URL

(2) 逻辑视图名和视图对象的映射。

springMVC里还有个视图解析器(ViewResolver)的概念。它决定了ModelAndView对象的逻辑视图名如何解析成一个用于将结果渲染给用户的视图Bean..Spring有四种ViewResolver实现:

—— InternalResourceViewResolver

将逻辑视图名解析成一个用模板文件(如JSP和Velocity模板)渲染的视图对象

—— BeanNameViewResolver

将逻辑视图名解析成一个DispatcherServlet应用上下文中的视图Bean

—— ResourceBundleViewResolver

将逻辑视图名解析成一个ResourceBundler中的视图对象

—— XmlViewResolver

从一个XML文件中解析视图Bean,这个文件是从DispatcherServlet应用上下文中分离出来的。

时间: 2024-10-19 14:29:21

Spring学习10-SpringMV核心组件2及SpringMVC项目示例的相关文章

Spring学习笔记-springMVC基于注解的控制器(Demo)

springmvc的整体运行流程图: 基于@Controller和@RequestMapping是springmvc示例代码 在web.xml中配置springmvc核心分发器DispatcherServlet .... <servlet> <servlet-name>springmvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </

【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展

<Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www.cnblogs.com/ssslinppp/p/4528892.html [Spring学习笔记-MVC-4]返回Json数据-方式2:http://www.cnblogs.com/ssslinppp/p/4530002.html [Spring学习笔记-MVC-3.1]SpringMVC返回Json数据-

【Spring学习笔记-MVC-9】SpringMVC数据格式化之日期转换@DateTimeFormat

作者:ssslinppp       1. 摘要 本文主要讲解Spring mvc数据格式化的具体步骤: 并讲解前台日期格式如何转换为java对象: 在之前的文章<[Spring学习笔记-MVC-8]SpringMVC之类型转换Converter>(对应链接: http://www.cnblogs.com/ssslinppp/p/4598102.html ) 中讲解了Spring MVC的类型转换,在此回顾下. 数据格式化,从本质上讲属于数据转换的范畴.Spring就是基于数据转换框架植入&q

【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回

作者:ssslinppp      时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MVC与json参考文章:[spring学习笔记-mvc-3]返回json数据-方式1  和 [spring学习笔记-mvc-4]返回json数据-方式2. 使用到的技术主要如下: Ajax:使用JQuery 提供的ajax:==>需要引入jquery.min.js文件: Spring MVC: Jso

Struts2 + Spring 学习(一)搭建struts开发环境

·为Web应用增加Struts2支持 1. 登陆struts2官网下载struts2的最新版,本文所用的是Struts 2.3.16.2 我们所下载的压缩包内内容应给如下 其中,apps包含了struts2的实例应用,docs包含了struts2的相关文档,lib包含了Struts2框架的核心类库以及struts2的第三方插件类库,src包含了struc包含了struts2框架的全部源码. 2. 在Eclipse新建Web工程,将是所用到的类库放到WEB-INF/路径下 3. 编辑Web应用的w

Spring学习总结

spring是当前流行的一个框架.在学习spring之前当然的先准备一些jar包.可以在官网找找,(也可以留言,网盘分享): 基于IDEA环境学习. 第一天完成的任务: 1.使用spring框架输出一句话: 2.熟悉spring的注入. 3.使用配置的方式在spring中连接数据库. 代码1: 1 package test; 2 3 /** 4 * Created by Administrator on 2016/12/4. 5 * 1.用spring框架输出一句话 6 */ 7 public

不错的Spring学习笔记(转)

Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是spring.jar和commons-logging.jar.此外为了便于测试加入了JUnit包.   在Myeclipse中创建Java项目.   编写一个接口类,为了简单,只加入了一个方法.   Java代码   1.package com.szy.spring.interfacebean;  

Spring学习进阶一【初识Spring】

1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4

springmvc学习笔记---idea创建springmvc项目

前言: 真的是很久没搞java的web服务开发了, 最近一次搞还是读研的时候, 想来感慨万千. 英雄没落, Eclipse的盟主地位隐隐然有被IntelliJ IDEA超越的趋势. Spring从2.x到现在4.x, 一眨眼已是二代的积淀. 本文想借助Idea, 来简单搭建一个基于springmvc的web程序, 一为体验, 二为技术积累. 环境配置: idea版本为14.0.2, tomcat版本为8.0.23, idea创建的springmvc为4.1.1.RELEASE. 网上有很多图文并