Spring学习10-SpringMV核心组件2及SpringMVC项目示例
一、SpringMVC核心接口
5、ViewResolver接口--视图解析接口
5、View接口--视图接口
(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应用上下文中分离出来的。
Spring学习10-SpringMV核心组件2及SpringMVC项目示例的更多相关文章
- 【Spring学习笔记-MVC-4】SpringMVC返回Json数据-方式2
<Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...
- MyEclipse Spring 学习总结三 SpringMVC
MyEclipse Spring 学习总结三 SpringMVC 一.SpringMVC原理 1.Springmvc 框架介绍 1)Spring 框架停工了构建Web应用程序的全功能MVC模块.Spr ...
- 【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展
<Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...
- 【Spring学习笔记-MVC-9】SpringMVC数据格式化之日期转换@DateTimeFormat
作者:ssslinppp 1. 摘要 本文主要讲解Spring mvc数据格式化的具体步骤: 并讲解前台日期格式如何转换为java对象: 在之前的文章<[Spring学习笔记-MVC ...
- 【Spring学习笔记-MVC-3】SpringMVC返回Json数据-方式1
<Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...
- spring boot(10) 基础学习内容
A Spring boot(10) 基础学习内容 B SpringBoot(16) 基础学习内容
- Spring学习之——手写Spring源码V2.0(实现IOC、D、MVC、AOP)
前言 在上一篇<Spring学习之——手写Spring源码(V1.0)>中,我实现了一个Mini版本的Spring框架,在这几天,博主又看了不少关于Spring源码解析的视频,受益匪浅,也 ...
- maven -- 学习笔记(四)实现在Eclipse用maven搭建springmvc项目(附构建步骤和详细实现代码)
Learn from:http://www.cnblogs.com/fangjins/archive/2012/05/06/2485459.html,感谢楼主的分享,才有下面的这篇学习小结 一.环境准 ...
- 我的Spring学习记录(五)
在我的Spring学习记录(四)中使用了注解的方式对前面三篇做了总结.而这次,使用了用户登录及注册来对于本人前面四篇做一个应用案例,希望通过这个来对于我们的Spring的使用有一定的了解. 1. 程序 ...
随机推荐
- TYVJ 2002 扑克牌 题解
P2002 扑克牌 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Admin生日那天,Rainbow来找Admin玩扑克牌……玩着玩着Rainbow觉得太没 ...
- 由学习《软件设计重构》所想到的代码review(一)
前言 对于一个程序猿来讲怎样来最直接的来衡量他的技术能力和产出呢?我想最直观的作法是看他的代码编写能力,就拿我常常接触的一些程序猿来看,他们买了非常多技术重构类书籍.可是看完后代码编写能力并没有显著提 ...
- Android系统广播机制存在漏洞,恶意软件可绕过安全机制跟踪用户
前言 国外研究人员披露了Android漏洞(CVE-2018-9489)的信息.Android系统的内部广播机制会暴露敏感的用户和设备信息,手机上安装的应用可在用户不知情或未经许可的情况下访问获取这些 ...
- css整站规划
准备1 css reset /** * Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/) * http:/ ...
- EasyUI-EasyUI框架入门学习
前言 新项目的开发前端技术打算采用EasyUI框架(基于EasyUI较为丰富的UI组件库),项目组长将前端EasyUI这块的任务分配给了我.在进行开发之前,需要我这菜鸟对EasyUI框架进行一些基础的 ...
- 根据WSDL文件生成代理类
D:\Program Files\Microsoft Visual Studio 10.0\VC>wsdl /l:c# /n:cmsserver /out:E:\ospsoft\Trave ...
- 微信小程序 - wx:key
看官方源码以及代码示例: 示例官网:列表渲染wx:key 官方原话 如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如 <input/> ...
- PHP 杂项函数
PHP 杂项 函数 PHP 杂项函数简介 我们把不属于其他类别的函数归纳到杂项函数类别. 安装 杂项函数是 PHP 核心的组成部分.无需安装即可使用这些函数. Runtime 配置 杂项函数的行为受 ...
- tomcat服务器开启gzip功能的方法
http://blog.csdn.net/wang_159369/article/details/8107163 tomcat5.0以后的版本是支持对输出内容进行gzip格式的压缩的.该功能默认是关闭 ...
- myDate97 设置开始时间和结束时间
myDate97 设置开始时间和结束时间 CreationTime--2018年8月28日16点46分 Author:Marydon 1.简单示例 第一步:引入My97DatePicker/Wda ...