这篇文章要实现的功能是:在一个Action中,有些业务方法只能是post提交上来的才能执行,有些方法是只能get提交上来的才能执行。

比如上篇文章中的UserAction.java(代码如下)

package com.guigu.shen.Action6;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
/**
*
*
请求路径可以拆分为:根模块的名字+分模块的名字
就是相当于当访问http://127.0.0.1:8080:项目名/user/register时就会进入到
registerMethod方法。 */
@Controller
@RequestMapping(value="/user")//根模块的请求名字
public class UserAction {
/*
* 员工注册
*
*/
@RequestMapping(value="/register")//分模块的请求名字
/*
* 重点注意我这里写的参数名字。String username,String salary这里的username,salary和
* 表单提交上来的那个名字是一模一样的。神奇的是只要保证一模一样,就可以收集页面上的值,
* 这也是Springmvc和Struts2很不同的一点,Spring是基于参数收集数据的。Struts2是基于实体去
* 收集数据的。造成这个问题的原因是SpringMvc里面的Action(控制器类是单例模式),如果我们采用和Struts2
* 中一个的方式,里面定义一个Emp emp这样,emp只有一个,如由80个人提交这个请求执行这个方法的话,
* 会导致第80个人会把之前的人的数据都替换掉。所以SpringMvc这么做的话,80个人执行80个方法,就能把每次的
* 数据都保存下来了。
*
*
*/
public String registerMethod(Model model,String username,String salary)
{ model.addAttribute("message", "员工注册成功");
/*
* username参数只要和页面中的name属性一样,就会被赋值。
* salary同理
*/
System.out.print("员工的信息"+username+";"+salary);
return "/jsp/success.jsp";
}
@RequestMapping(value="/login")//分模块的请求名字
public String loginMethod(Model model,String username)
{
model.addAttribute("message", "员工注册成功");
System.out.println(username);
return "/jsp/success.jsp"; } }

我要把上面的public String registerMethod(Model model,String username,String salary)改为只能Post请求。

把上面的public String loginMethod(Model model,String username)即能Get请求也能接受Post请求。

怎么解决呢?通过注解。

代码修改如下:

package com.guigu.shen.Action6;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
*
*
请求路径可以拆分为:根模块的名字+分模块的名字
就是相当于当访问http://127.0.0.1:8080:项目名/user/register时就会进入到
registerMethod方法。 */
@Controller
@RequestMapping(value="/user")//根模块的请求名字
public class UserAction {
/*
* 员工注册
*
*/
@RequestMapping(method=RequestMethod.POST,value="/register")//分模块的请求名字
/*
* 重点注意我这里写的参数名字。String username,String salary这里的username,salary和
* 表单提交上来的那个名字是一模一样的。神奇的是只要保证一模一样,就可以收集页面上的值,
* 这也是Springmvc和Struts2很不同的一点,Spring是基于参数收集数据的。Struts2是基于实体去
* 收集数据的。造成这个问题的原因是SpringMvc里面的Action(控制器类是单例模式),如果我们采用和Struts2
* 中一个的方式,里面定义一个Emp emp这样,emp只有一个,如由80个人提交这个请求执行这个方法的话,
* 会导致第80个人会把之前的人的数据都替换掉。所以SpringMvc这么做的话,80个人执行80个方法,就能把每次的
* 数据都保存下来了。
*
*
*/
public String registerMethod(Model model,String username,String salary)
{ model.addAttribute("message", "员工注册成功");
/*
* username参数只要和页面中的name属性一样,就会被赋值。
* salary同理
*/
System.out.print("员工的信息"+username+";"+salary);
return "/jsp/success.jsp";
}
@RequestMapping(value="/login",method={RequestMethod.POST,RequestMethod.GET})//分模块的请求名字
public String loginMethod(Model model,String username)
{
model.addAttribute("message", "员工注册成功");
System.out.println(username);
return "/jsp/success.jsp"; } }

注意:如果不书写method=RequestMethod.POST的话,GET和POST请求都支持

13SpringMvc_限定某个业务控制方法,只允许GET或POST请求方式访问的更多相关文章

  1. 限定某个业务控制方法,只允许GET或POST请求方式访问

    可以在业务控制方法前,指明该业务控制方法只能接收GET或POST的请求 @Controller @RequestMapping(value="/user") public clas ...

  2. 15SpringMvc_在业务控制方法中写入模型变量收集参数,且使用@InitBind来解决字符串转日期类型

    之前第12篇文章中提到过在业务控制方法中写入普通变量收集参数的方式,也提到了这种凡方式的弊端(参数很多怎么办),所以这篇文章讲的是在业务控制方法中写入模型变量来收集参数.本文的案例实现的功能是,在注册 ...

  3. 在业务控制方法中写入包装User的模型来收集参数

    可以在业务控制方法中书写0个或多个模型来收集客户端的参数 1)  如果多个模型中有相同的属性时,可以用user.name或admin.name来收集客户端参数 2)  用一个新的模型将User和Adm ...

  4. 在业务控制方法中写入User,Admin多个模型收集参数

    1)  可以在业务控制方法中书写1个模型来收集客户端的参数 2)  模型中的属性名必须和客户端参数名一一对应 3)  这里说的模型不是Model对象,Model是向视图中封装的数据 @Controll ...

  5. 在业务控制方法中写入Request,Response等传统web参数

    可以在业务控制方法中书写传统web参数,这种方式我们不提倡,耦合了 @Controller @RequestMapping(value="/user") public class ...

  6. 17SpringMvc_在业务控制方法中写入包装User的模型来收集参数——解决问题

    在解决问题之前,我要说明一下jsp页面上填入信息,一个用户的信息比如用户的名字,用户的电话,用户的手机等等,在这个jsp页面上填好信息后,转到有个action处理这个信息.原理是什么? 在jsp页面上 ...

  7. 16SpringMvc_在业务控制方法中写入User,Admin多个模型收集参数——引出问题

    上面文章时普通的业务那个方法中收集一个实体类,这篇文章想收集两个实体类. 文本要做的是:在person.jsp页面上,有两个表单.分别是普通用户和管理员用户的表单(普通用户的表单和管理员用户的表单里面 ...

  8. 14SpringMvc_在业务控制方法中写入HttpServletRequest,HttpServletResponse等传统web参数(这个知识点知道就好了,不推荐这么去做)

    这篇文章解决的问题是怎么在业务方法里面引入我们熟悉的HttpServletRequest和HttpServletRespon? 答案:这种引入传统的web参数的做法不推荐去做,因为这么做会实行高度耦合 ...

  9. 19SpringMvc_在业务控制方法中收集List集合中包含JavaBean参数

    本文要实现的功能是给一张表单:

随机推荐

  1. 数据库表-DD01L DD02L DD03L-保存数据表和域的消息

    DD01L 定义域 DD02L SAP-表,记录每张数据库表和自定义表的表相关信息 DD03L 定义字段,记录数据表和自定义表中每个字段相关信息

  2. ArcGIS的许可文件问题

    ArcGIS我是从9.3版本开始使用的,当时破解非常麻烦,容易出现各种问题,当时生成的许可文件是一个单独的exe:后来10版本甚至10.1都出来,我还是使用的那个exe来生成许可文件,正常使用没有问题 ...

  3. 实验12:Problem C: 重载字符的加减法

    Home Web Board ProblemSet Standing Status Statistics   Problem C: 重载字符的加减法 Problem C: 重载字符的加减法 Time ...

  4. 快速排序(java版)

    public class QuickSortTest{ //比较与交换 private static int partition(int[] source, int low, int hight) { ...

  5. iOS开发之网络编程--小文件下载

    文件下载方式: 如果下载的文件比较小,下载方式: 直接用NSData的 +(id)dataWithContentsOfURL:(NSURL*)url; 利用NSURLConnection发送一个HTT ...

  6. Mac平台下启动MySQL到完全终止MySQL----终端八步走

    1.选中Finder的情况下,快捷键进入搜索目录:/usr/local 然后进入mysql目录下: 2.右键 "从这里启动" 打开终端: 3.输入执行:./scripts/mysq ...

  7. Java集合 之 List 集合

    1.什么是Lsit集合? List集合是一种元素有序的,可重复的集合,集合中每个元素都有自己的元素索引.List集合允许可重复的元素,可以通过索引来访问指定位置的元素. 2.Java8改进的List接 ...

  8. cocos2d-x之初试内存管理机制

    bool HelloWorld::init() { if ( !Layer::init() ) { return false; } Size visibleSize = Director::getIn ...

  9. 第一篇 UEditor入门部署和体验

    UEditor 是由百度「FEX前端研发团队」开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码. UEditor富文本编辑器,轻量, ...

  10. hdu 2583 permutation

    permutation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...