zoukankan      html  css  js  c++  java
  • 框架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.如下:

    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.       
    5.     @RequestMapping("/index")  
    6.     public String index(Map<String, Object> map) {  
    7.         return "blog/index";  
    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,或者都返回,再或者什么都不返回。

      

  • 相关阅读:
    Git 分支管理
    Kubernetes 中文文档
    Docker 命令大全
    Redis 常用命令 大全
    Docker 资源汇总
    Docker 安装 Redis
    JavaScript闭包
    CSS选择器
    JavaScript类型转换
    javascript字符串处理方法
  • 原文地址:https://www.cnblogs.com/RunForLove/p/4346079.html
Copyright © 2011-2022 走看看