主题: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. Atitit 图像处理知识点  知识体系 知识图谱

    Atitit 图像处理知识点  知识体系 知识图谱 图像处理知识点 图像处理知识点体系 v2 qb24.xlsx 基本知识图像金字塔op膨胀叠加混合变暗识别与检测分类肤色检测other验证码生成 基本 ...

  2. SlickUpload Upload to disk

    The file upload stream provider is a built-in SlickUpload provider that uses the filesystem for uplo ...

  3. eclipse导入cordova创建的项目

    eclipse导入cordova创建的项目 看图不说话 run这个MainActivity就可以了,bin目录下会生成APK

  4. G2 DT时代的图形语法 正式发布

    G2有一个高大上的名字叫做:The Grammar Of Graphics——图形语法.它是一个强大的语义化图表生成工具,它提供了一整套图形语法,可以让用户通过简单的语法搭建出无数种图表,并且集成了大 ...

  5. ListView优化为何ViewHolder用static类(转载)

    如果有人还不了解ViewHolder为什么可以起到优化作用,我这边再做下简单说明:Android的findViewById动作是比较耗时的,需要遍历布局的树形结构,才能找到相应的视图.所以如果想在这一 ...

  6. Mina、Netty、Twisted一起学(九):异步IO和回调函数

    用过JavaScript或者jQuery的同学都知道,JavaScript特别是jQuery中存在大量的回调函数,例如Ajax.jQuery的动画等. $.get(url, function() { ...

  7. 最近修改的几个小bug

    最近修改的几个 bug,问题不大,查找起来却几番周折,汇总起来如下. 1.诡异电话号码 客服邮件反馈,很多用户服务热线变成了“0371-45875487”.看到这问题的第一反映是可能因为程序某个地方有 ...

  8. Android强制设定横屏时,SurfaceView一直黑屏

    接着上一个问题,解决了SurfaceView闪屏问题之后(http://www.cnblogs.com/Joanna-Yan/p/4829325.html),又有了一个新的问题.现在我想设置含有fra ...

  9. RobotFramework - Tips

    1 --- API的使用 Robot Framework的版本发展是向下包容,建议尽量使用robot本身的API. 例如:通过导入logger.py(...\Lib\site-packages\rob ...

  10. 漫谈可视化Prefuse(四)---被玩坏的Prefuse API

    这个双12,别人都在抢红包.逛淘宝.上京东,我选择再续我的“漫谈可视化”系列(好了,不装了,其实是郎中羞涩...) 上篇<漫谈可视化Prefuse(三)---Prefuse API数据结构阅读有 ...