SpringMVC 7:注解映射限定

论坛 期权论坛     
选择匿名的用户   2021-6-2 16:00   1745   0
<h3>※ .请求方法映射限定</h3>
<p>    一般获取数据为GET请求方法,提交表单一般为POST请求方法。但之前URL路径映射方式对任意请求方法都是接受的,<br>     因此我们需要某种方式来告诉相应的功能处理方法只处理如GET方式的请求或POST方式的请求。</p>
<p>  </p>
<pre class="blockcode"><code>    &#64;RequestMapping(value&#61;&#34;/user/{userId:\\d&#43;}&#34;,method&#61;RequestMethod.GET)
        可以匹配&#34;/user/100&#34;,并且请求方式只能是GET
   
    &#64;RequestMapping(value&#61;&#34;/hello&#34;, method&#61;{RequestMethod.POST,RequestMethod.GET})
        可以匹配&#34;/hello&#34;,并且请求方式只能是POST或者GET
    </code></pre>
<p><br>     注意:<br>     1、一般浏览器只支持GET、POST请求方法,如想浏览<br>     器支持PUT、DELETE 等请求方法只能模拟。(jquery中的ajax函数可以发送这些方式的请求)<br>     2、除了GET、POST,还有HEAD、OPTIONS、PUT、DELETE、TRACE(观察servlet源码也可获知)<br>     3、DispatcherServlet默认开启对GET、POST、PUT、DELETE、HEAD 的支持;<br>     4、如果需要支持OPTIONS、TRACE,请添加DispatcherServlet 在web.xml 的初始化参数:dispatchOptionsRequest 和<br>     dispatchTraceRequest 为true。(查看源码,在DispatcherServlet的父类中可以找到这个俩个属性)</p>
<pre class="blockcode"><code>1.控制器

package com.briup.web.annotation;

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/*
* http://localhost:8888/jd1811_MVC/user/act
* &#64;RequestMapping基于功能区分用的
*/
&#64;Controller
&#64;RequestMapping(&#34;/user&#34;)
public class ActionController {
// &#64;RequestMapping(&#34;/test/{userid}&#34;)
/*
  * method属性指定提交方式
  */
// &#64;RequestMapping(value&#61;&#34;/test/{userid}&#34;
//   ,method&#61;RequestMethod.GET)
// &#64;RequestMapping(value&#61;&#34;/test/{userid}&#34;
// ,method&#61;RequestMethod.POST)
// &#64;RequestMapping(value&#61;&#34;/test/{userid}&#34;
// ,method&#61;{RequestMethod.POST,RequestMethod.GET})
// public String method(&#64;PathVariable String userid,String username){
//  System.out.println(username&#43;&#34;&amp;&amp;&amp;&#34;&#43;userid);
//  return &#34;hello&#34;;
// }
&#64;RequestMapping(value&#61;&#34;/test1&#34;
   ,method&#61;RequestMethod.POST)
public String method(&#64;PathVariable String userid,String username){
  System.out.println(username&#43;&#34;&amp;&amp;&amp;&#34;&#43;userid);
  return &#34;hello&#34;;
}
&#64;RequestMapping(value&#61;&#34;/test1&#34;
   ,method&#61;RequestMethod.GET)
public String method1(&#64;PathVariable String userid,String username){
  System.out.println(username&#43;&#34;&amp;&amp;&amp;&#34;&#43;userid);
  return &#34;hello&#34;;
}
}


2.设置返回视图spring.xml

&lt;mvc:view-controller path&#61;&#34;/regiser&#34;
    view-name&#61;&#34;register&#34;/&gt;

3.返回视图
register.jsp


&lt;%&#64; page language&#61;&#34;java&#34; contentType&#61;&#34;text/html; charset&#61;UTF-8&#34;
    pageEncoding&#61;&#34;UTF-8&#34;%&gt;
    &lt;%
String path &#61; request.getContextPath();
String basePath &#61; request.getScheme()&#43;&#34;://&#34;&#43;request.getServerName()&#43;&#34;:&#34;&#43;request.getServerPort()&#43;path&#43;&#34;/&#34;;
%&gt;
&lt;!DOCTYPE html PUBLIC &#34;-//W3C//DTD HTML 4.01 Transitional//EN&#34; &#34;http://www.w3.org/TR/html4/loose.dtd&#34;&gt;
&lt;html&gt;
&lt;base href&#61;&#34;&lt;%&#61;basePath %&gt;&#34;&gt;
&lt;head&gt;
&lt;meta http-equiv&#61;&#34;Content-Type&#34; content&#61;&#34;text/html; charset&#61;UTF-8&#34;&gt;
&lt;title&gt;&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;form action&#61;&#34;user/test/tom&#34;
   method&#61;&#34;post&#34;&gt;
  姓名&lt;input type&#61;&#34;text&#34; name&#61;&#34;username&#34;/&gt;&lt;br&gt;
  &lt;input type&#61;&#34;submit&#34; value&#61;&#34;注册&#34;/&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
<h3>※ .请求参数映射限定(params)</h3>
<p>    <strong>1) 请求数据中有指定参数名</strong><br>   </p>
<pre class="blockcode"><code>    &#64;RequestMapping(&#34;/test&#34;)
    &#64;Controller
    public class HomeController {
        &#64;RequestMapping(params&#61;&#34;create&#34;,method&#61;RequestMethod.GET)
        public ModelAndView test1(){

            return null;
        }
        &#64;RequestMapping(params&#61;&#34;create&#34;,method&#61;RequestMethod.POST)
        public ModelAndView test2(){

            return null;
        }
    }</code></pre>
<p>    可以匹配的路径为:/test?create<br>     如果是get 方式的请求则访问test1方法<br>     如果是post方式的请求则访问test2方法</p>
<p><br>    <strong> 2) 请求数据中没有指定参数名</strong><br>     </p>
<pre class="blockcode"><code>&#64;RequestMapping(params&#61;&#34;!create&#34;, method&#61;RequestMethod.GET)</code></pre>
<p><br>    <strong> 3) 请求数据中指定参数名&#61;值</strong><br>   </p>
<pre class="blockcode"><code>  &#64;RequestMapping(params&#61;&#34;username&#61;tom&#34;)    </code></pre>
<p><br>     <strong>4) 请求数据中指定参数名!&#61;值</strong><br>   </p>
<pre class="blockcode"><code>  &#64;RequestMap
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP