开始学SpringMVC之Request方式

本文主要以一些简单的小例子,简述在SpringMVC开发过程中,经常用到的Request方面的内容,仅供学习分享使用,如有不足之处,还请指正。

概述

在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。如果要支持其他方式进行访问,则必须在表单中增加Hidden元素,然后再SpringMVC中过滤器进行拦截,再重新封装请求方式。

Request常见访问方式

  1. GET - 从指定的资源请求数据。
  2. POST - 向指定的资源提交要被处理的数据

GET方式

访问的特点:

  1. GET 请求可被缓存
  2. GET 请求保留在浏览器历史记录中
  3. GET 请求可被收藏为书签
  4. GET 请求不应在处理敏感数据时使用
  5. GET 请求有长度限制
  6. GET 请求只应当用于取回数据

SpringMVC中GET访问示例

如下所示:

 1 /**
 2      * GET请求方式
 3      * @return
 4      */
 5     @RequestMapping(value="testGet",method=RequestMethod.GET)
 6     public ModelAndView testGet(String uname){
 7         String msg="GET方式访问,uname="+uname;
 8         System.out.println(msg);
 9         ModelAndView mav=new ModelAndView("HelloWorld");
10         mav.addObject("msg", msg);
11         return mav;
12
13     } 

前端可以通过请求的URL访问,也可以表单(method=get)的方式访问,如下所示:

1     <form name="form1" action="testGet" method="get" >
2         <span>GET方式提交</span><br />
3         <input name="uname" type="text" />
4         <input name="submit" type="submit" value="提交" />
5     </form>

POST方式

访问特点

  1. POST 请求不会被缓存
  2. POST 请求不会保留在浏览器历史记录中
  3. POST 不能被收藏为书签
  4. POST 请求对数据长度没有要求

SpringMVC中POST方式示例

如下:

 1 /**
 2      * POST请求方式
 3      * @return
 4      */
 5     @RequestMapping(value="testPost",method=RequestMethod.POST)
 6     public ModelAndView testPost(String uname){
 7         String msg="POST方式访问,uname="+uname;
 8         System.out.println(msg);
 9         ModelAndView mav=new ModelAndView("HelloWorld");
10         mav.addObject("msg", msg);
11         return mav;
12
13     } 

前端访问代码

POST方式通常采用form的方式,如下所示:

1 <form name="form2" action="testPost" method="post" >
2         <span>POST方式提交</span><br />
3         <input name="uname" type="text" />
4         <input name="submit" type="submit" value="提交" />
5     </form>

PUT方式访问及步骤

PUT方式是把消息本体中的消息发送到一个URL,跟POST类似,但不常用。

SpringMVC中PUT方式步骤如下:

1. 设置路径的访问方式为PUT

 1 /**
 2      * PUT请求方式
 3      * 原始请求,默认只支持GET,POST请求方式,如有要支持PUT和DELETE,
 4      * 需要在Form表单(表单的请求方式必须为POST)中,增加一个hidden标签,name="_method" value="访问方式"
 5      * @return
 6      */
 7     @RequestMapping(value="testPut",method=RequestMethod.PUT)
 8     public ModelAndView testPut(String uname){
 9         String msg="PUT方式访问,uname="+uname;
10         System.out.println(msg);
11         ModelAndView mav=new ModelAndView("HelloWorld");
12         mav.addObject("msg", msg);
13         return mav;
14
15     } 

2. 在web.xml中设置过滤器

1 <!-- 设置过滤器 -->
2   <filter>
3       <filter-name>filter</filter-name>
4       <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
5   </filter>
6   <filter-mapping>
7       <filter-name>filter</filter-name>
8       <url-pattern>/*</url-pattern>
9   </filter-mapping>

3. form表单中增加hidden访问控件

如下所示:method必须为post,hidden的name=_method,value=PUT,属于固定写法。

1 <form name="form3" action="testPut" method="post" >
2         <span>PUT方式提交</span><br />
3         <input type="hidden" name="_method" value="PUT">
4         <input name="uname" type="text" />
5         <input name="submit" type="submit" value="提交" />
6     </form>

DELETE方式访问及步骤

DELETE主要用于删除指定资源。

SpringMVC支持Delete方式访问的步骤

1. 设置路径访问方式为DELETE

如下所示:

 1 /**
 2      * DELETE请求方式
 3      * @return
 4      */
 5     @RequestMapping(value="testDelete",method=RequestMethod.DELETE)
 6     public ModelAndView testDelete(String uname){
 7         String msg="DELETE方式访问,uname="+uname;
 8         System.out.println(msg);
 9         ModelAndView mav=new ModelAndView("HelloWorld");
10         mav.addObject("msg", msg);
11         return mav;
12
13     } 

2. 在配置好过滤器的前提下,前端访问

方式如下:

1 <form name="form4" action="testDelete" method="post" >
2         <span>DELETE方式提交</span><br />
3         <input type="hidden" name="_method" value="DELETE">
4         <input name="uname" type="text" />
5         <input name="submit" type="submit" value="提交" />
6     </form>

请求参数

请求参数可以采用的restful的方式进行提取,也可以采用参数的方式进行获取。如果前端请求参数和函数参数名一致,则可以自动匹配。

如果不一致,则可以使用@RequestParam("uname")来声明

如下所示:

 1     /**
 2      * 测试请求参数,如果参数名称和前端页面参数不一致,则可以使用@RequestParam("uname")来声明
 3      * @param uname
 4      * @return
 5      */
 6     @RequestMapping(value="testParam",method=RequestMethod.POST)
 7     public ModelAndView testParam(@RequestParam("uname") String name){
 8         String msg="POST方式访问,请求参数,name="+name;
 9         System.out.println(msg);
10         ModelAndView mav=new ModelAndView("HelloWorld");
11         mav.addObject("msg", msg);
12         return mav;
13
14     }

前端访问方式

1     <form name="form6" action="testParam" method="post" >
2         <span>测试Param</span><br />
3         <input name="uname" type="text" /><br />
4         <input name="uage" type="text" /><br />
5         <input name="submit" type="submit" value="提交" />
6     </form>

设置是否必须访问和默认值

 1 /**
 2      * 请求参数,设置参数是否必填
 3      * @param name
 4      * @param age
 5      * @return
 6      */
 7     @RequestMapping(value="testParam2",method=RequestMethod.POST)
 8     public ModelAndView testParam2(@RequestParam("uname") String name,@RequestParam(value="uage",required=false,defaultValue="11")int age){
 9         String msg="POST方式访问,请求参数,name="+name;
10         String msg1="POST方式访问,请求参数,age="+age;
11         System.out.println(msg);
12         System.out.println(msg1);
13         ModelAndView mav=new ModelAndView("HelloWorld");
14         mav.addObject("msg", msg+"\r\n"+msg1);
15         return mav;
16
17     }

获取请求Header信息

@RequestHeader注解可以轻松获取请求的Header信息,如下所示:获取Accept-Language,并赋给参数header

 1 /**
 2      * 获取请求头部信息,如果多个value,用数组表示
 3      * @param header
 4      * @return
 5      */
 6     @RequestMapping(value="testHeader",method=RequestMethod.POST)
 7     public ModelAndView testHeader(@RequestHeader("Accept-Language") String header){
 8         String msg="请求头部信息,header="+header;
 9         System.out.println(msg);
10         ModelAndView mav=new ModelAndView("HelloWorld");
11         mav.addObject("msg", msg);
12         return mav;
13
14     }

获取请求cookie信息

如下所示:获取cookie中的JESSIONID并赋给参数

 1 /**
 2      * 获取cookie中的值,服务端在客户端第一次请求时,会分配一个session给客户端,其中包含sessionid
 3      * @param sessionId
 4      * @return
 5      */
 6     @RequestMapping(value="testCookie",method=RequestMethod.POST)
 7     public ModelAndView testCookie(@CookieValue("JSESSIONID") String sessionId){
 8         String msg="请求cookie信息,JSESSIONID="+sessionId;
 9         System.out.println(msg);
10         ModelAndView mav=new ModelAndView("HelloWorld");
11         mav.addObject("msg", msg);
12         return mav;
13
14     }

备注

快乐很简单,就是春天的鲜花,夏天的绿荫,秋天的野果,冬天的漫天飞雪。

原文地址:https://www.cnblogs.com/hsiang/p/11406460.html

时间: 2024-08-12 11:19:54

开始学SpringMVC之Request方式的相关文章

spring--处理器拦截器详解——跟着开涛学SpringMVC

5.1.处理器拦截器简介 Spring Web MVC的处理器拦截器(如无特殊说明,下文所说的拦截器即处理器拦截器) 类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.   5.1.1.常见应用场景 1.日志记录:记录请求信息的日志,以便进行信息监控.信息统计.计算PV(Page View)等. 2.权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面: 3.性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时

SpringMVC从Request域中获取数据

SpringMVC从Request域中获取数据的三种方式 SpringMVC环境自行搭建, 约定存在如下目录和文件:/WEB-INF/pages/success.jsp 方式一:传入Model对象 前端界面 <a href="${pageContext.request.ContextPath}/项目名/getRequestValue">获取request域中的值</a>${value} 后台代码 @RequestMapping("/getRequest

跟我学SpringMVC目录汇总贴、PDF下载、源码下载

跟我学SpringMVC目录汇总贴.PDF下载.源码下载 http://jinnianshilongnian.iteye.com/blog/1752171 跟开涛学SpringMVC 在线版目录 第一章 Web MVC简介 第二章 Spring MVC入门 第三章 DispatcherServlet详解 第四章 Controller接口控制器详解(1) 第四章 Controller接口控制器详解(2) 第四章 Controller接口控制器详解(3) 第四章 Controller接口控制器详解(

SpringMVC的注解方式

mvc-servlet.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springf

一篇非常经典的springMVC注解实现方式详解

今天公司让搭建个springMVC的注解框架,研究了好半天,网络搜罗了半天,好不容易找到篇,拿来分享下: 原文出处:http://www.itxxz.com/a/kuangjia/2014/0531/4.html 大家好,我是IT学习者的螃蟹,前两天写了一个spring MVC的注解实例,目前看来下载使用的人数已有不少,使用过程中也有不少人对其中的配置存有一些不解和疑问,在这里螃蟹就那个实例中的spring配置详细说明一下,算作是对spring注解模式的一次全方位解析.         在实例中

spring+springMVC集成(annotation方式)

spring+springMVC集成(annotation方式) SpringMVC+Spring4.0+Hibernate 简单的整合 MyBatis3整合Spring3.SpringMVC3

springMVC系列之(三) spring+springMVC集成(annotation方式)

个人认为使用框架并不是很难,关键要理解其思想,这对于我们提高编程水平很有帮助.不过,如果用都不会,谈思想就变成纸上谈兵了!!!先技术,再思想.实践出真知. 1.基本概念 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来.它是为了解决企业应用开发的复杂性而创建的.Spring使用

Struts2,springMVC获取request和response

springMVC获取request和response1:在BaseController中加入: protected HttpServletRequest request;   protected HttpServletResponse response;   protected HttpSession session; @ModelAttribute   public void setReqAndRes(HttpServletRequest request, HttpServletRespon

基于SpringMVC国际化资源配置方式

基于SpringMVC国际化资源配置方式. 1.首先需要在spring-mvc-servlet.xml 中配置拦截器: <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" /> 2.如果要浏览器自适应语言方式(cookie方式):还需要在spring-mvn-servlet.xml 中配置: 2.1