zoukankan      html  css  js  c++  java
  • 限制action所接受的请求方式或请求参数

    原文:http://www.cnblogs.com/liukemng/p/3726897.html

    2.限制action所接受的请求方式(get或post):

    之前我们在HelloWorldController的index() action方法上配置的为@RequestMapping(value="/*", method = {RequestMethod.GET})我们把它改为@RequestMapping(value="/*", method = {RequestMethod.POST})再次请求http://localhost:8080/SpringMVCLesson/helloworld/index试一下:

    7

    这里可以看到结果映射到了urlTest这个action,这是因为我们在urlTest上配置的为@RequestMapping(value="/*", method = {RequestMethod.GET}),当index这个action映射不在符合时便映射到了urlTest。

    我们也可以这样配置@RequestMapping(value="/*", method = {RequestMethod.GET, RequestMethod.POST})表示该action可以接受get或post请求,不过更简单的是不对method做配置则默认支持所有请求方式。

    3.限制action所接受请求的参数:

    我们可以为某个action指定映射的请求中必须包含某参数,或必须不包含某参数,或者某参数必须等于某个值,或者某参数必须不等于某个值这些限制。

    3.1.指定映射请求必须包含某参数:

    在HelloWorldController添加一个paramsTest的action,内容如下:

    复制代码
    @RequestMapping(value="/paramstest", params="example", method = {RequestMethod.GET})
    public ModelAndView paramsTest(){
        
        ModelAndView modelAndView = new ModelAndView();   
        modelAndView.setViewName("paramstest");  
        return modelAndView;
    }
    复制代码

    在views文件夹中新加一个视图paramstest.jsp内容如下:

    复制代码
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        paramstest!
    </body>
    </html>
    复制代码

    请求http://localhost:8080/SpringMVCLesson/helloworld/paramstest查看结果:

    8

    这里可以看到没有找到paramsTest这个action结果还是映射到了urlTest这个action。

    请求http://localhost:8080/SpringMVCLesson/helloworld/paramstest?example查看结果:

    9

    这次可以看到请求映射到了paramsTest这个action。

    3.2.指定映射请求必须不包含某参数:

    把刚才添加的paramsTest的@RequestMapping(value="/paramstest", params="example", method = {RequestMethod.GET}) 改为@RequestMapping(value="/paramstest", params="!example", method = {RequestMethod.GET})

    重新请求http://localhost:8080/SpringMVCLesson/helloworld/paramstest?example查看结果:

    10

    可以看到又没有找到paramsTest这个action而映射到了urlTest这个action。

    3.3.指定映射请求中或者某参数必须等于某个值:

    把刚才添加的paramsTest的@RequestMapping(value="/paramstest", params="example", method = {RequestMethod.GET}) 改为@RequestMapping(value="/paramstest", params="example=AAA", method = {RequestMethod.GET})

    请求http://localhost:8080/SpringMVCLesson/helloworld/paramstest?example=BBB查看结果:

    11

    可以看到没有找到paramsTest这个action而映射到了urlTest这个action。

    请求http://localhost:8080/SpringMVCLesson/helloworld/paramstest?example=AAA查看结果:

    12

    这次可以看到请求映射到了paramsTest这个action。

    3.4.指定映射请求中或者某参数必须不等于某个值:

    把刚才添加的paramsTest的@RequestMapping(value="/paramstest", params="example", method = {RequestMethod.GET}) 改为@RequestMapping(value="/paramstest", params="example!=AAA", method = {RequestMethod.GET})

    请求http://localhost:8080/SpringMVCLesson/helloworld/paramstest?example=BBB查看结果:

    13

    可以看到请求映射到了paramsTest这个action。

    请求http://localhost:8080/SpringMVCLesson/helloworld/paramstest?example=AAA查看结果:

    14

    可以看到没有找到paramsTest这个action而映射到了urlTest这个action。

    注:当我们为params指定多个参数时如:params={"example1", "example2"},表示的是and关系,即两个参数限制必须同时满足。

    4.限制action所接受请求头参数:

    同限制action所接受的请求参数一样,我们也可以为某个action指定映射的请求头中必须包含某参数,或必须不包含某参数,或者某参数必须等于某个值,或者某参数必须不等于某个值这些限制。

    4.1.指定映射请求头必须包含某参数:

    @RequestMapping(value="/headerTest", headers = "example")。与限制请求参数是一样的,可以参考上面的例子进行测试。

    4.2.指定映射请求头必须不包含某参数:

    @RequestMapping(value="/headerTest", headers = "!example")。与限制请求参数是一样的,可以参考上面的例子进行测试。

    4.3.指定映射请求头中或者某参数必须等于某个值:

    @RequestMapping(value="/headerTest", headers = "Accept=text/html")。与限制请求参数是一样的,可以参考上面的例子进行测试。

    4.4.指定映射请求头中或者某参数必须不等于某个值:

    @RequestMapping(value="/headerTest", headers = "Accept!=text/html")。与限制请求参数是一样的,可以参考上面的例子进行测试。

    注:当我们为headers指定多个参数时如:headers={"example1", "example2"},表示的是and关系,即两个参数限制必须同时满足。

  • 相关阅读:
    关于在MAC上进行 LARAVEL 环境 Homestead 安装过程记录
    js 贷款计算器
    js 实现阶乘
    js 两点间距离函数
    composer Your requirements could not be resolved to an installable set of packages
    vue 项目优化记录 持续更新...
    vue 项目打包
    vue 真机调试页面出现空白
    vue 真机调试
    谈谈-Android状态栏的编辑
  • 原文地址:https://www.cnblogs.com/yunqing/p/6247659.html
Copyright © 2011-2022 走看看