框架SpringMVC笔记系列 二 传值
主题:SpringMVC(第一节中再回顾复习一次)
学习资料参考网址:
1.http://www.icoolxue.com
2.http://haohaoxuexi.iteye.com/blog/1343761(Great!)
3.推荐:http://haohaoxuexi.iteye.com/ (backUp)
1、Spring MVC中的若干基本注解。(基于注解的Spring MVC简单介绍)
SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是DispatcherServlet,DispatcherServlet负责转发每一个请求给Handler,Handler处理之后,再返回给相应的视图和模型.即(ModelAndView)。在使用注解的SpringMVC中,处理器Handler是基于@Controller和@RequestMapping这两个注解的,@Controller申明一个处理器类,@RequestMapping申明对应请求的映射关系。这样就可以提供一个非常灵活的匹配和处理方式。
DispatcherServlet是一种Servlet,它继承自HttpServlet,我们Spring MVC中的所有请求都要交给DispatcherServlet,所以我们在web.xml中要配置DispatcherServlet.如下:
- <servlet>
- <servlet-name>blog</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>blog</servlet-name>
- <url-pattern>*.do</url-pattern>
- </servlet-mapping>
在这个配置文件中,我们申明了一个名字为blog的DispatcherServlet。该Servlet将处理所有以.do结尾的请求。在初始化DispatcherServlet的时候,Spring MVC默认会在/WEB-INF/目录下,寻找一个[servlet-name]-servlet.xml的配置文件(即blog-servlet.xml),来初始化里面的bean对象。。当然,如果我们不想使用默认的“配置文件的位置”,那么可以来配置。
- <servlet>
- <servlet-name>blog</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/WEB-INF/blog-servlet.xml</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>blog</servlet-name>
- <url-pattern>*.do</url-pattern>
- </servlet-mapping>
如上,我们配置了配置文件的所在位置。
DispatcherServlet会利用一些特殊的bean来处理Request请求和生成相应的视图返回。关于视图的返回,Controller只负责传回来一个值(通过model.addAttribute()方式或者Map<key, value>方式),它只负责传回一个值。最终到底返回的是什么视图,是由ViewResolver视图解析器来控制的。它可以控制返回视图基于jsp的,或者基于xml的等。我们在jsp中常用的视图解析器是InternalResourceViewResolver,它会要求有一个前缀和后缀。我们在blog-servlet.xml配置文件中,配置如下:
- <bean
- class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/" />
- <property name="suffix" value=".jsp" />
- </bean>
如上,根据Controller传递回来的值拼接后,路径:http://localhost:8080/web-app/WEB-INF/值.jsp
在Spring MVC中,Controller不需要继承什么类,也不需要实现什么接口。一切使用了@Controller进行标记的类都是Controller。有了Controller之后,我们是怎么请求一个Controller的具体的方法。它是通过一个@RequestMapping来标记的。@RequestMapping可以标记在类上,也可以标记在方法上。当方法上和类上都标记了@RequestMapping的时候,则访问方法的url就是类上的加上方法上的。
- @Controller
- @RequestMapping("/blog")
- public class BlogController {
- @RequestMapping("/index")
- public String index(Map<String, Object> map) {
- return "blog/index";
- }
- }
如上,当类上有@RequestMapping的时候,url就是/blog/index.当无时,url为仅为/index.
在RequestMapping属性中,还可以指定一个属性method,method=RequestMethod.GET或者method=RequestMethod.POST。
@Controller
- @RequestMapping("/blog")
- public class BlogController {
- @RequestMapping(value="/*/index", method=RequestMethod.Get)
- public String index(Map<String, Object> map) {
- return "blog/index";
- }
- }
如上,只有Get方式才可以访问该方法,@RequestMapping还支持通配符 * .关于一些详细的参数规则,可以参照:http://haohaoxuexi.iteye.com/blog/1343761
2、在Controller的方法中,如果需要WEB元素HttpServletRequest,HttpServletResponse和HttpSession,只需要在给方法一个对应的参数,那么在访问的时候SpringMVC就会自动给其传值,但是需要注意的是在传入Session的时候如果是第一次访问系统的时候就调用session会报错,因为这个时候session还没有生成。
3、Controller给视图层传值。
我们给view层返回一个ModelAndView,其中,Model就是一个Map,里面存放了一对对的键值对,其可以直接在页面上使用。(页面上用${key},jsp页面中会显示values值。当要传多个值的时候,我们可以把多个值封装在一个对象中)。view是一个字符串,表示的是一个view的名称,结合prefix和suffix,我们可以拼接出完整的访问路径。那么,你想。我们可以仅仅返回一个Model,或者仅仅返回一个View,或者都返回,再或者什么都不返回。
框架SpringMVC笔记系列 二 传值的更多相关文章
- 框架SpringMVC笔记系列 一 基础
主题:SpringMVC 学习资料参考网址: 1.http://www.icoolxue.com 2.http://aokunsang.iteye.com/blog/1279322 1.SpringM ...
- Yii框架学习笔记(二)将html前端模板整合到框架中
选择Yii 2.0版本框架的7个理由 http://blog.chedushi.com/archives/8988 刚接触Yii谈一下对Yii框架的看法和感受 http://bbs.csdn.net/ ...
- 框架Hibernate笔记系列 基础Session
标题:框架Hibernate笔记 资料地址: 1. www.icoolxue.com 孔浩 1.背景简介 Hibenate是JBoss公司的产品.它是数据持久化的框架.Usually,我们使用JDBC ...
- WebX框架学习笔记之二----框架搭建及请求的发起和处理
框架搭建 执行环境:windows.maven 执行步骤: 1.新建一个目录,例如:D:\workspace.注意在盘符目录下是无法执行成功的. 2.执行如下命令: mvn archetype:gen ...
- 《ASP.NET Core In Action》读书笔记系列二 ASP.NET Core 能用于什么样的应用,什么时候选择ASP.NET Core
ASP.NET Core 能用于什么样的应用 ASP.NET Core 可以用作传统的web服务.RESTful服务.远程过程调用(RPC)服务.微服务,这归功于它的跨平台支持和轻量级设计.如下图所示 ...
- Python基础笔记系列二:分支和循环
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 分支:即是if-else和if-elif-else语句 循环:即是whil ...
- JavaWeb前端基础复习笔记系列 二
课程:孔浩前端视频教程(JavaScript系列:1~5讲) <html> <head> <title></title> <!--html只负责显 ...
- 框架Maven笔记系列 一 基础
主题:SpringMVC 学习资料参考网址: 1.http://www.icoolxue.com 2.http://maven.apache.org/ 1.Maven解决了什么问题? Maven基于项 ...
- 框架Spring笔记系列 一 基础
主题:Spring 1.什么样的问题,使得Spring框架应用而生?使用Spring解决了那些问题? 2.
随机推荐
- Ajax技术使用
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- salesforce 零基础学习(三十二)通过Streams和DOM方式读写XML
有的时候我们需要对XML进行读写操作,常用的XML操作主要有Streams和DOM方式. 一.Streams方式 Streams常用到的类主要有两个XmlStreamReader 以及XmlStrea ...
- iOS $299刀企业证书申请的过程以及细节补充(二)
上篇博客写的过程中,没有图,也没有相应的说明.这次再补充一些信息: 1.从 https://developer.apple.com/ios/enroll/dunsLookupForm.action 申 ...
- SSIS的DelayValidation属性
一,DelayValidation Property true if validation of the package is delayed until run time. false if the ...
- CSS中常见的6种文本样式
前面的话 CSS文本样式是相对于内容进行的样式修饰.由于在层叠关系中,内容要高于背景.所以文本样式相对而言更加重要.有些人对文本和字体样式之间的不同不太了解,简单地讲,文本是内容,而字体则用于显示这个 ...
- Android属性动画之ValueAnimation
ValueAnimation是ObjectAnimation类的父类,经过前几天的介绍,相信大家对ObjectAnimation有了 一定的认识,今天就为大家最后介绍一下ValueAnimation, ...
- backbone库学习-model
backbone库的结构: http://www.cnblogs.com/nuysoft/archive/2012/03/19/2404274.html 本文所有例子来自于http://blog.cs ...
- Spring学习总结(五)——Spring整合MyBatis(Maven+MySQL)二
接着上一篇博客<Spring整合MyBatis(Maven+MySQL)一>继续. Spring的开放性和扩张性在J2EE应用领域得到了充分的证明,与其他优秀框架无缝的集成是Spring最 ...
- 【转】图文详解YUV420数据格式
YUV格式有两大类:planar和packed. 对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V.对于packed的YUV格式,每个像素点的Y, ...
- 简单设置,解决使用webpack前后端跨域发送cookie的问题
最近用vue来做项目,用webpack来做前端自动化构建.webpack-dev-server会在本地搭建一个服务器,在和后端调试的时候,就会涉及到跨域的问题. 刚开始时,没有用vue-cli来构建项 ...