主题: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.如下:

  1. <servlet>
  2. <servlet-name>blog</servlet-name>
  3. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  4. <load-on-startup>1</load-on-startup>
  5. </servlet>
  6. <servlet-mapping>
  7. <servlet-name>blog</servlet-name>
  8. <url-pattern>*.do</url-pattern>
  9. </servlet-mapping>

  在这个配置文件中,我们申明了一个名字为blog的DispatcherServlet。该Servlet将处理所有以.do结尾的请求。在初始化DispatcherServlet的时候,Spring MVC默认会在/WEB-INF/目录下,寻找一个[servlet-name]-servlet.xml的配置文件(即blog-servlet.xml),来初始化里面的bean对象。。当然,如果我们不想使用默认的“配置文件的位置”,那么可以来配置。

  1. <servlet>
  2. <servlet-name>blog</servlet-name>
  3. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  4. <init-param>
  5. <param-name>contextConfigLocation</param-name>
  6. <param-value>/WEB-INF/blog-servlet.xml</param-value>
  7. </init-param>
  8. <load-on-startup>1</load-on-startup>
  9. </servlet>
  10. <servlet-mapping>
  11. <servlet-name>blog</servlet-name>
  12. <url-pattern>*.do</url-pattern>
  13. </servlet-mapping>

  如上,我们配置了配置文件的所在位置。

  DispatcherServlet会利用一些特殊的bean来处理Request请求和生成相应的视图返回。关于视图的返回,Controller只负责传回来一个值(通过model.addAttribute()方式或者Map<key, value>方式),它只负责传回一个值。最终到底返回的是什么视图,是由ViewResolver视图解析器来控制的。它可以控制返回视图基于jsp的,或者基于xml的等。我们在jsp中常用的视图解析器是InternalResourceViewResolver,它会要求有一个前缀和后缀。我们在blog-servlet.xml配置文件中,配置如下:

  1. <bean
  2. class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  3. <property name="prefix" value="/WEB-INF/" />
  4. <property name="suffix" value=".jsp" />
  5. </bean>

  如上,根据Controller传递回来的值拼接后,路径:http://localhost:8080/web-app/WEB-INF/值.jsp

  在Spring MVC中,Controller不需要继承什么类,也不需要实现什么接口。一切使用了@Controller进行标记的类都是Controller。有了Controller之后,我们是怎么请求一个Controller的具体的方法。它是通过一个@RequestMapping来标记的。@RequestMapping可以标记在类上,也可以标记在方法上。当方法上和类上都标记了@RequestMapping的时候,则访问方法的url就是类上的加上方法上的。

  1. @Controller
  2. @RequestMapping("/blog")
  3. public class BlogController {
  4. @RequestMapping("/index")
  5. public String index(Map<String, Object> map) {
  6. return "blog/index";
  7. }
  8. }

  如上,当类上有@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笔记系列 二 传值的更多相关文章

  1. 框架SpringMVC笔记系列 一 基础

    主题:SpringMVC 学习资料参考网址: 1.http://www.icoolxue.com 2.http://aokunsang.iteye.com/blog/1279322 1.SpringM ...

  2. Yii框架学习笔记(二)将html前端模板整合到框架中

    选择Yii 2.0版本框架的7个理由 http://blog.chedushi.com/archives/8988 刚接触Yii谈一下对Yii框架的看法和感受 http://bbs.csdn.net/ ...

  3. 框架Hibernate笔记系列 基础Session

    标题:框架Hibernate笔记 资料地址: 1. www.icoolxue.com 孔浩 1.背景简介 Hibenate是JBoss公司的产品.它是数据持久化的框架.Usually,我们使用JDBC ...

  4. WebX框架学习笔记之二----框架搭建及请求的发起和处理

    框架搭建 执行环境:windows.maven 执行步骤: 1.新建一个目录,例如:D:\workspace.注意在盘符目录下是无法执行成功的. 2.执行如下命令: mvn archetype:gen ...

  5. 《ASP.NET Core In Action》读书笔记系列二 ASP.NET Core 能用于什么样的应用,什么时候选择ASP.NET Core

    ASP.NET Core 能用于什么样的应用 ASP.NET Core 可以用作传统的web服务.RESTful服务.远程过程调用(RPC)服务.微服务,这归功于它的跨平台支持和轻量级设计.如下图所示 ...

  6. Python基础笔记系列二:分支和循环

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 分支:即是if-else和if-elif-else语句 循环:即是whil ...

  7. JavaWeb前端基础复习笔记系列 二

    课程:孔浩前端视频教程(JavaScript系列:1~5讲) <html> <head> <title></title> <!--html只负责显 ...

  8. 框架Maven笔记系列 一 基础

    主题:SpringMVC 学习资料参考网址: 1.http://www.icoolxue.com 2.http://maven.apache.org/ 1.Maven解决了什么问题? Maven基于项 ...

  9. 框架Spring笔记系列 一 基础

    主题:Spring 1.什么样的问题,使得Spring框架应用而生?使用Spring解决了那些问题? 2.

随机推荐

  1. ASP.NET Web API 2框架揭秘

    ASP.NET Web API 2框架揭秘(.NET领域再现力作顶级专家精讲微软全新轻量级通信平台) 蒋金楠 著   ISBN 978-7-121-23536-8 2014年7月出版 定价:108.0 ...

  2. python学习 操作mysql 环境搭建

    MySqlDB官网只支持Python3.4,这里Python3.5使用第三方库PyMysql连接Mysql数据库. 环境: window7.python3.5 下载PyMysql库:https://p ...

  3. 每天一个linux命令(42):kill命令

    Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须 ...

  4. 最新hadoop+hbase+spark+zookeeper环境安装(vmmare下)

    说明:我这里安装的版本是hadoop2.7.3,hbase1.2.4,spark2.0.2,zookeeper3.4.9 (安装包:链接:http://pan.baidu.com/s/1c25hI4g ...

  5. zabbix 3.0 安装 ubuntu环境

    zabbix 3.0 安装 标签(空格分隔): 开发 [TOC] 下载deb # wget http://repo.zabbix.com/zabbix/3.0/ubuntu/pool/main/z/z ...

  6. javascript运算符——算术运算符

    × 目录 [1]一元加 [2]一元减 [3]递增[4]递减[5]加法[6]减法[7]乘法[8]除法[9]求余 前面的话 javascript中的算术操作主要通过算术运算符来实现,本文将介绍算术运算符的 ...

  7. JSP网站开发基础总结《三》

    经过前两篇的总结,我想大家一定迫不及待的想学习今天的关于jsp与mysql的数据库连接的知识了.既然需要连接mysql数据库,你首先需要保证你的电脑已经安装过mysql数据库,mysql数据库的安装步 ...

  8. 邻接矩阵无向图(二)之 C++详解

    本章是通过C++实现邻接矩阵无向图. 目录 1. 邻接矩阵无向图的介绍 2. 邻接矩阵无向图的代码说明 3. 邻接矩阵无向图的完整源码 转载请注明出处:http://www.cnblogs.com/s ...

  9. [c++] Associative Containers

    关联容器 和 顺序容器 的本质差别在于: 关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素. Reference: http://www.cnblogs.c ...

  10. 如何用UE(UltraEdit)删除重复行?--转

    原文地址:https://www.zhengjie.com/question/bb148773 使用UE(UltraEdit)的高级排序功能就可以删除掉所有的重复行. 操作步骤 1.文件—排序(R)— ...