Spring MVC 学习 之 - URL参数传递详解

在学习 Spring Mvc 过程中,有必要来先了解几个关键参数:

@Controller:

在类上注解,则此类将编程一个控制器,在项目启动 Spring 将自动扫描此类,并进行对应URL路由映射。

@Controller

public class UserAction{ }

@RequestMapping

指定URL映射路径,如果在控制器上配置 RequestMapping  ,具体请求方法也配置路径则映射的路径为两者路径的叠加 常用映射如:RequestMapping("url.html")

配置映射路径:

@Controller
public class UserAction
{
  @RequestMapping(value = "/get_alluser.html")
  public ModelAndView GetAllUser(String Id)
  {
  }
} 

以上配置映射

http://***:8080:web1/get_alluser.html:

如在 @Controller添加 @RequestMapping(value = "/user"),则映射路径变成

http://***:8080:web1/user/get_alluser.html

@ResponseBody

将注解方法对应的字符串直接返回

@RequestParam

自动映射URL对应的参数到Action上面的数值,RequestParam 默认为必填参数。

 @PathVariable

获取@RequestMapping 配置指定格式的URL映射参数

 /*
   *  直接输出 HTML,或JSON 字符串
   *  请求路径:
   *    /web1/urlinfo/getcontent.html?key=rhythmk
   *   /web1/urlinfo/getcontent.json?key=rhythmk
   * */
  @ResponseBody
  @RequestMapping(value = "/getcontent.**")
  public String GetContent(
      @RequestParam("key") String key,
      @RequestParam(value = "key2", required = false, defaultValue = "defaultValue") String key2) {
    System.out.println("getcontent 被调用");
    String result = "直接返回内容 - key:" + key + ",key2:" + key2;
    System.out.println(result);
    return result;
  }
 /*
   * RequestMapping 支持 Ant 风格的URL配置 :
   * 请求路径:
   *   /urlinfo/geturlant/config.html?key=adddd
   */
  @ResponseBody
  @RequestMapping(value = "/geturlant/**.html")
  public String getUrlAnt(HttpServletRequest request) {
    String result = "?后面的参数为:" + request.getQueryString();
    return result;
  } 
 /*
   * 配置指定格式的URL,映射到对应的参数
   *  请求路径:/web1/urlinfo/geturlparam/12_123.html
   *
   * */

  @RequestMapping(value = "/geturlparam/{id}_{menuId}.html")
  public ModelAndView getUrlParam(@PathVariable("id") String id,
      @PathVariable("menuId") String menuId) {
    ModelAndView mode = new ModelAndView(ShowMsg);
    mode.addObject("msg", "获取到的Id:" + id + ",menuId:" + menuId);
    return mode;
  } 
  /*
   * 只接收Post 请求
   */
  @ResponseBody
  @RequestMapping(value = "/posturl.html", method = RequestMethod.POST)
  public String UrlMethod(@RequestParam String id) {
    return "只能是Post请求,获取到的Id:" + id;
  } 
  /*
   *  写入 cookie
   * */
  @RequestMapping("/writecookies.html")
  public ModelAndView writeCookies(@RequestParam String value,
      HttpServletResponse response) {

    response.addCookie(new Cookie("key", value));
    ModelAndView mode = new ModelAndView(ShowMsg);
    mode.addObject("msg", "cookies 写入成功");
    return mode ;
  }
  /*
    * 通过 @CookieValue 获取对应的key的值
    * */
  @RequestMapping("/getcookies.html")
  public ModelAndView getCookie(@CookieValue("key") String cookvalue) {
    ModelAndView mode = new ModelAndView(ShowMsg);
    mode.addObject("msg", "cookies=" + cookvalue);
    return mode;
  } 
  /*
   * 将 Servlet Api 作为参数传入
   *  可以在action中直接使用 HttpServletResponse,HttpServletRequest
   * */
  @RequestMapping("/servlet.html")
  public String Servlet1(HttpServletResponse response,
      HttpServletRequest request) {

    Boolean result = (request != null && response != null);
    ModelAndView mode = new ModelAndView();
    mode.addObject("msg", "result=" + result.toString());
    return ShowMsg;

  }
  /*
   *  根据URL传入的参数实例化对象
   *
   *  如: http://127.0.0.1:8080/web1/urlinfo/getobject.html?UserId=1&UserName=ad
   * */
  @RequestMapping("getobject.html")
  public ModelAndView getObject(UserInfo user) {
    String result = "用户ID:" + user.getUserId().toString() + ",用户名:"
        + user.getUserName().toString();
    ModelAndView mode = new ModelAndView(ShowMsg);
    mode.addObject("msg", "result=" + result.toString());
    return mode;
  } 

实现页面跳转:

  /*
   * 实现页面跳转
   * /web1/urlinfo/redirectpage.html
   * */
  @RequestMapping("/redirectpage.html")
  public String RedirectPage()
  {
    return "redirect:getcookies.html?r=10"; 

  } 

直接回传JSON

请求的URL地址一定是以.json结尾,否则异常

Failed to load resource: the server responded with a status of 406 (Not Acceptable) : The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers ()

回传实体:

@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class UserInfo {

   private Integer UserId;
   public Integer getUserId() {
    return UserId;
  }
  public void setUserId(Integer userId) {
    UserId = userId;
  }
  public String getUserName() {
    return UserName;
  }
  public void setUserName(String userName) {
    UserName = userName;
  }
  private String UserName;

}

回传 action

@ResponseBody
  @RequestMapping("/getuser.json")
  public UserInfo GetUser()
  {
    System.out.println("getuser");
    UserInfo model=new UserInfo();
    model.setUserId(100);
    model.setUserName("王坤");
    return model;
  }

请求:

/web1/urlinfo/getuser.json

输出:

 {"userId":100,"userName":"王坤"}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Spring Mvc中传递参数方法之url/requestMapping详解

    前言 相信大家在使用spring的项目中,前台传递参数到后台是经常遇到的事, 我们必须熟练掌握一些常用的参数传递方式和注解的使用,本文将给大家介绍关于Spring Mvc中传递参数方法之url/requestMapping的相关内容,分享出来供大家参考学习,话不多说,直接上正文. 方法如下 1. @requestMapping: 类级别和方法级别的注解, 指明前后台解析的路径. 有value属性(一个参数时默认)指定url路径解析,method属性指定提交方式(默认为get提交) @Reques

  • Spring MVC之@RequestMapping注解详解

    引言: 前段时间项目中用到了REST风格来开发程序,但是当用POST.PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没有加任何注解),查看了提交方式为application/json, 而且服务器端通过request.getReader() 打出的数据里确实存在浏览器提交的数据.为了找出原因,便对参数绑定(@RequestParam. @RequestBody. @RequestHeader . @PathVariable)进行了研究,同时也看了一下HttpMessage

  • 详解获取Spring MVC中所有RequestMapping以及对应方法和参数

    在Spring MVC中想要对每一个URL进行权限控制,不想手工整理这样会有遗漏,所以就动手写程序了.代码如下: /** * @return * @author Elwin ZHANG * 创建时间:2017年3月8日 上午11:48:22 * 功能:返回系统中的所有控制器映射路径,以及对应的方法 */ @RequestMapping(value = "/maps", produces = "application/json; charset=utf-8") @Re

  • spring MVC中传递对象参数示例详解

    前言 初学java,由于项目紧急,来不及仔细的研究,在传递参数时就老老实实的一个一个的采用@RequestParam注解方式传递,最近认真看了一下,发现java也具有类似Asp.net Mvc传递对象做参数的方式,即采用@ModelAttribute注解的方式,接收方式如下: @RequestMapping("hello") public String Hello(@ModelAttribute("user") User user) { System.out.pri

  • Spring MVC 学习 之 - URL参数传递详解

    在学习 Spring Mvc 过程中,有必要来先了解几个关键参数: @Controller: 在类上注解,则此类将编程一个控制器,在项目启动 Spring 将自动扫描此类,并进行对应URL路由映射. @Controller public class UserAction{ } @RequestMapping 指定URL映射路径,如果在控制器上配置 RequestMapping  ,具体请求方法也配置路径则映射的路径为两者路径的叠加 常用映射如:RequestMapping("url.html&q

  • Spring MVC学习教程之RequestMappingHandlerAdapter详解

    前言 RequestMappingHandlerAdapter实现了HandlerAdapter接口,顾名思义,表示handler的adapter,这里的handler指的是Spring处理具体请求的某个Controller的方法,也就是说HandlerAdapter指的是将当前请求适配到某个Handler的处理器.RequestMappingHandlerAdapter是HandlerAdapter的一个具体实现,主要用于将某个请求适配给@RequestMapping类型的Handler处理.

  • spring mvc 组合mybatis框架实例详解

    说明 本项目采用 maven 结构,主要演示了 spring mvc + mybatis,controller 获取数据后以json 格式返回数据. 项目结构 包依赖 与说明 pom文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://

  • Spring MVC 拦截器 interceptor 用法详解

    Spring MVC-拦截器 今天就是把有关拦截器的知识做一个总结. 1.拦截器概述 1.1 什么是拦截器? Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理.例如通过拦截器可以进行权限验证.记录请求信息的日志.判断用户是否登录等. 要使用Spring MVC中的拦截器,就需要对拦截器类进行定义和配置.通常拦截器类可以通过两种方式来定义. 1.通过实现HandlerInterceptor接口,或继承Han

  • Spring MVC数据处理和乱码问题详解

    一.数据处理 1.1 处理提交数据 1.1.1 提交的域名称和处理方法的参数名一致 提交数据:http://localhost:8080/hello?name=test 处理方法: @RequestMapping("/hello") public String hello(String name){ System.out.println(name); return "hello"; } 后台输出test 1.1.2 提交的域名称和处理方法的参数名不一致 提交数据:h

  • Spring框架学习之Cache抽象详解

    目录 1.简介 cache和buffer 2.缓存抽象 3.spring缓存抽象与多进程 官方文档  8.0 Spring为不同缓存做了一层抽象,这里通过阅读文档以及源码会对使用以及原理做一些学习笔记. 1.简介 从3.1版开始,Spring Framework提供了对现有Spring应用程序透明地添加缓存的支持. 与事务支持类似,缓存抽象允许一致地使用各种缓存解决方案,而对代码的影响最小. 从Spring 4.1开始,通过JSR-107注释和更多自定义选项的支持,缓存抽象得到了显着改进. ca

  • Spring MVC学习之DispatcherServlet请求处理详析

    前言 要深入理解spring mvc的工作流程,就需要先了解spring mvc的架构: 从上图可以看到 前端控制器DispatcherServlet在其中起着主导作用,理解了DispatcherServlet 就完全可以说弄清楚了spring mvc. DispatcherServlet作为Spring用于处理web请求注册的唯一一个Servlet,所有的请求都是经由DispatcherServlet进行分发处理的.本文主要讲解DispatcherServlet是如何对请求进行分发,处理,并且

  • Spring MVC的web.xml配置详解

    spring是目前最流行的框架.创建java web项目时,我们首先会遇到的配置文件就是web.xml,这是javaweb为我们封装的逻辑,不在今天的研究中.下面我们将简单讲讲web.xml中的配置. 一.一个空的web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns:xsi="http://www.w3.org/2001/

  • Spring MVC数据绑定概述及原理详解

    数据绑定概述 在执行程序时,Spring MVC根据客户端请求参数的不同,将请求消息中的信息以一定的方式转换并绑定到控制器类的方法参数中. 这种将请求消息数据与后台方法参数建立连接的过程就是 Spring MVC中的数据绑定. 在数据绑定过程中,Spring MVC框架会通过数据绑定组件(DataBinder)将请求参数串的内容进行类型转换,然后将转换后的值赋给控制器类中方法的形参,这样后台方法就可以正确绑定并获取客户端请求携带的参数.具体的信息处理过程的步骤如下. (1)Spring MVC将

  • Spring MVC项目中的异常处理详解

    目录 前言 1. 基于配置的简单异常处理 2. 基于注解的全局异常处理 总结 前言 我们在项目的开发中,难免会遇到各种可预知的.不可预知的异常需要处理.每个过程都单独处理异常,系统的代码耦合度高,工作量大且不好统一,维护的工作量也很大. 那么,能不能将所有类型的异常处理从各处理过程解耦出来,这样既保证了相关处理过程的 功能较单一,也实现了异常信息的统一处理和维护?答案是肯定的.下面将介绍Spring MVC是如何处理异常的. 1. 基于配置的简单异常处理 在SpringMVC中拥有一套非常强大的

随机推荐