@RequestMapping详解

RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。这句话,太熟悉了。

一. RequestMapping路径详解

   (1)首先springmvc.xml配置

<!-- 定义跳转的文件的前后缀 ,视图模式配置-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>

(2)Controller 类

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; @Controller
@RequestMapping("/jsp")
public class RequestController { public static final String SUCCESS="success"; @RequestMapping("/login1")
public void hello(){
System.out.println("hello world");
} /*第一点
*1:@RequestMapping定义在类上,那就相当于根目录
*2:@RequestMapping定义在方法上,那就相当于相对于类定义处的URL。
* 上面代码在类定义处指定映射为"/jsp",在hello()方法处指定为"/login1"。
* 那么hello()方法的URL映射地址为:http://localhost:8080/ssm/jsp/login1
* ssm指的是你项目的名称
*/ /*第二点
* 1.@RequestMapping在类上定义不是必须的,如上如果我只在方法上定义@RequestMapping("/jsp/login1")
* 那么它同样能访问上面的URL映射地址。
* 2.@RequestMapping的默认属性为value,所以@RequestMapping(value="/login1")和@RequestMapping("/login1")是等价的。
*/ @RequestMapping("/login2")
public String getModel(){
System.out.println("hello world");
return SUCCESS;
}
/*第三点:需要返回界面
*1.这个return success;加上springMVC配置的路径
* 那么它返回的路径是:
* http://localhost:8080/ssm/WEB-INF/jsp/success.jsp
*/ @RequestMapping(value="/jsp/login3")
public ModelAndView paramBind(){
ModelAndView modelAndView = new ModelAndView();
//传到界面的数据
modelAndView.addObject("date", "nihao");
modelAndView.setViewName(SUCCESS);
return modelAndView;
} /*第四点:返回界面同时带上数据
* 1.好多时候,我们要的不是跳转界面,而是能够把后台的数据传到前端去
* modelAndView.addObject放的就是你要传的数据
* modelAndView.setViewName返回路径名称
* 所以它的返回路径和上面一样
*/ /*第五点:void类型无返回值跳转
* 1.根据上面无返回值那么它最终会跳转到
* http://localhost:8080/ssm/WEB-INF/jsp/jsp/login1.jsp
* 原则:
* prefix+类路径(类级别的mapping注解)+方法路径(方法级别的mapping注解)+prefix
*/ }

二.RequestMapping参数详解

请求参数的作用是使得请求的映射更加精细。

RequestMapping注解有六个属性,下面我们把她分成三类进行说明

 value:定义处理方法的请求的 URL 地址。(重点)

  method:定义处理方法的 http method 类型,如 GET、POST 等。(重点)

  params:   定义请求的 URL 中必须包含的参数。或者不包含某些参数。(了解)

  headers: 定义请求中 Request Headers 必须包含的参数。或者不包含某些参数。(了解)

下面也用个Controller 类来说明

1.  Controller 

@Controller
@RequestMapping("/hello")
public class TestController { public static final String SUCCESSS="successs"; /**
* post动作请求的测试
*/
@RequestMapping(method=RequestMethod.POST,value="/login1")
public String testMethodPost(){ return SUCCESSS;
} /**
* 测试url中带参数(未测试请求头信息)
*/
//url http://localhost:8080/ssm/hello/login2?username=zhangsan&password=123&sex=2
@RequestMapping(value="/login2",
params={"username","sex!=1","password=123"},
method=RequestMethod.GET)
public String testHeadersAndParams(){ return SUCCESSS;
} /**
* PathVariable 映射 URL 绑定占位 ( 映射URL路径里面的变量)
*
* 用Integer会比int严谨
*/
//http://localhost:8080/ssm/hello/login3/5
@RequestMapping(value="/login3/{id}",method=RequestMethod.GET)
public String testPathVariable(@PathVariable("id") Integer id){ System.out.println("id:"+id); return SUCCESSS;
} // http://localhost:8080/ssm/hello/login4/str
@RequestMapping(value="/login4/{name}",method=RequestMethod.GET)
public String testPathVariable2(@PathVariable("name") String name){
System.out.println("name :"+name); return SUCCESSS;
} /**
* 如果在方发上@RequestMapping()没有任何参数,那它就代表类上的value请求地址
*
*/
// http://localhost:8080/ssm/hello.jsp
@RequestMapping()
public String test(){
return SUCCESSS;
}
}

有关RequestMapping就先讲这么多。

想的太多,做的太少,中间的落差就是烦恼,要么去做,要么别想 少尉【9】

springMVC(1)---@RequestMapping详解的更多相关文章

  1. 一起学SpringMVC之RequestMapping详解

    本文以一个简单的小例子,简述SpringMVC开发中RequestMapping的相关应用,仅供学习分享使用,如有不足之处,还请指正. 什么是RequestMapping? RequestMappin ...

  2. SpringMVC RequestMapping 详解

    SpringMVC RequestMapping 详解 RequestMapping这个注解在SpringMVC扮演着非常重要的角色,可以说是随处可见.它的知识点很简单.今天我们就一起学习Spring ...

  3. SpringMVC 常用注解 详解

    SpringMVC 常用注解 详解 SpringMVC 常用注解 1.@RequestMapping                                      路径映射 2.@Requ ...

  4. Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解

    一.控制器定义 控制器提供访问应用程序的行为,通常通过服务接口定义或注解定义两种方法实现. 控制器解析用户的请求并将其转换为一个模型.在Spring MVC中一个控制器可以包含多个Action(动作. ...

  5. Spring MVC 学习)——控制器与@RequestMapping详解

    Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解 一.控制器定义 控制器提供访问应用程序的行为,通常通过服务接口定义或注解定义两种方法实现. 控制器解析用户的请求 ...

  6. springMVC的注解详解

    springmvc常用注解标签详解 1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业 ...

  7. SpringMVC异常处理机制详解[附带源码分析]

    目录 前言 重要接口和类介绍 HandlerExceptionResolver接口 AbstractHandlerExceptionResolver抽象类 AbstractHandlerMethodE ...

  8. SpringMvc测试框架详解----服务端测试

    随着RESTful Web Service的流行,测试对外的Service是否满足期望也变的必要的.从Spring 3.2开始Spring了Spring Web测试框架,如果版本低于3.2,请使用sp ...

  9. springmvc常用注解详解

    1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ...

随机推荐

  1. nova创建虚拟机源码分析系列之六 api入口create方法

    openstack 版本:Newton 注:博文图片采用了很多大牛博客图片,仅作为总结学习,非商用.该图全面的说明了nova创建虚机的过程,从逻辑的角度清晰的描述了前端请求创建虚拟机之后发生的一系列反 ...

  2. js 作用域,作用域链,闭包

    什么是作用域? 作用域是一种规则,在代码编译阶段就确定了,规定了变量与函数的可被访问的范围.全局变量拥有全局作用域,局部变量则拥有局部作用域. js是一种没有块级作用域的语言(包括if.for等语句的 ...

  3. 网页头部 lang的声明

    1. 简体中文页面:html lang=zh-cmn-Hans2. 繁体中文页面:html lang=zh-cmn-Hant3. 英语页面:html lang=en 4. <回来>的音频, ...

  4. 利用C#实现分布式数据库查询

    随着传统的数据库.计算机网络和数字通信技术的飞速发展,以数据分布存储和分布处理为主要特征的分布式数据库系统的研究和开发越来越受到人们的关注.但由于其开发较为复杂,在一定程度上制约了它的发展.基于此,本 ...

  5. PHP和java比较

    这样从几个方面来看:一.运行机制:Java代码被编译成字节码后,会在虚拟机里由JIT进行二次编译成为本地码,据传言其执行速度可以和C++相媲美,经过我自己测试,用Java实现一个简单的Memcache ...

  6. flex词法解析

    例子1.从标准输入的字数.单词.行数统计 %{ #include <string.h> int chars = 0; int lines = 0; int words = 0; %} %% ...

  7. 从零开始搭建ELK+GPE监控预警系统

    前言 本文可能不会详细记录每一步实现的过程,但一定程度上可以引领小伙伴走向更开阔的视野,串联每个环节,呈现予你不一样的效果. 业务规模 8个平台 100+台服务器 10+个集群分组 微服务600+ 用 ...

  8. JavaScript中的内存泄漏以及如何处理

    随着现在的编程语言功能越来越成熟.复杂,内存管理也容易被大家忽略.本文将会讨论JavaScript中的内存泄漏以及如何处理,方便大家在使用JavaScript编码时,更好的应对内存泄漏带来的问题. 概 ...

  9. js 图片转换为base64

    <input id="file" type="file"> <img id="img" style="max-h ...

  10. 十一、VueJs 填坑日记之使用Amaze ui调整列表和内容页面

    上一篇博文我们整合了Amaze ui,并且调整了一个头部header和底部footer文件,其实做起来也很简单,只要按照步骤来做,完全没有问题.今天我们来重新调整一下列表页面和内容页面,使我们做的后台 ...