1.REST风格
具体说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:
GET用来获取资源;
POST用来新建资源;
PUT用来更新资源;
DELETE 用来删除资源。
2.配置文件
由于浏览器只支持POST和GET方法,因此需要使用_method隐藏字段通知Spring这是一个PUT/DELETE请求。
为此,Spring3.0增加了一个过滤器,可以将这些请求转换为标准的http方法,使得支持GET、POST、PUT与DELETE请求,该过滤器是HiddenHttpMethodFilter。
因此,我们需要在web.xml文件中配置此过滤器。
<!-- 过滤器 转化提交方式 -->
<filter>
<filter-name>hiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hiddenHttpMethodFilter</filter-name>
<servlet-name>DispatcherServlet</servlet-name>
</filter-mapping>
前后台代码
完成配置后,就可以在对应页面使用我们的的四种提交方式进行前后台数据的交互了。
前台提交数据:
<!-- 获得get -->
<form action="stuManager/${stu.stuNo }.action" method="get">
<input type="submit" value="查看">
</form>
<!-- 添加post -->
<form action="${ctxPath}/stuManager.action" method="post">
<input type="submit" value="添加">
</form>
<!-- 修改put -->
<form action="${ctxPath}/stuManager.action" method="post">
<input type="hidden" name="_method" value="put"/>
<input type="submit" value="修改">
</form>
<!-- 删除delete -->
<form action="stuManager/${stu.stuNo }.action" method="post">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="删除">
</form>
后台接收数据:
/**
* 提交方式GET
* 通过学生编号stuNo获得学生信息
*/
@RequestMapping(value="/stuManager/{stuNo}", method=RequestMethod.GET)
public String getStuInfo(@PathVariable("stuNo") String stuNo, Map<String,Object> map){
map.put("stu", us.getStuInfo(stuNo));
//实现Service层方法获得学生信息,并添加进map返回前台
return "queStu";
}
/**
* 提交方式POST
* 添加学生信息
*/
@RequestMapping(value="/stuManager", method=RequestMethod.POST)
public String addStu(Student stu, Map<String,Object> map){
us.addStu(stu);
//实现Service层方法添加学生信息
map.put("msg", "学生信息添加成功");
return "addStu";
}
/**
* 提交方式PUT
* 修改学生信息
*/
@RequestMapping(value="/stuManager", method=RequestMethod.PUT)
public String updateStu(Student stu){
us.updateStu(stu);
//实现Service层方法更新学生信息
return "redirect:/stuList";
}
/**
* 提交方式DELETE
* 通过学生编号stuNo删除学生信息
*/
@RequestMapping(value="/stuManager/{stuNo}", method=RequestMethod.DELETE)
public String delStu(@PathVariable("stuNo") String stuNo){
us.delStu(stuNo);
//实现Service层方法删除学生信息
return "redirect:/stuList";
}
其中get和post方法是html中自带的,但是不支持PUT和DELETE方法,所以需要通过POST方法模拟这两种方法,需要在表单中添加一个隐藏域,名为_method,值为PUT或DELETE。即如下代码:
<!-- 使用隐藏域修改提交方式 -->
<input type="hidden" name="_method" value="PUT/DELETE">
转载原文:https://blog.csdn.net/yueqi1125/article/details/78861365
文章大纲一、第十三天课程计划二、订单系统三、提交订单功能四、开发流程淘淘商城课程大纲课程大纲一共14天课程(1)第一天:电商介绍–互联网术语-SOA-分布式-集群介绍-环境配置-框架搭建(2)第二天:Dubbo介绍_dubbo框架整合_商品列表查询实现_分页_逆向工程(3)第三天:Git&.Nginx,类目选择,新增商品(4)第四天:门户网站介绍&商城首页搭建&内容系统创建&CMS实现(5)第五天:首页轮播图显示实现,Redis环境搭建,Redis实现
# Zabbix安装# 常见错误错误一:安装zabbix时提示:--> Processing Dependency: php-bcmath for package: zabbix-web-4.0.30-1.el7.noarch--> Finished Dependency ResolutionError: Package: zabbix-web-4.0.30-1.el7.noarch (zabbix) Requires: php-mbstringErr...
docker run -d --name=tinymediamanager \-v /share/data/docker/tinymediamanager/config:/config \-v /share/data/docker/tinymediamanager/media:/media \-e GROUP_ID=0 -e USER_ID=0 -e TZ=Europe/Madrid \-p 5800:5800 \-p 5900:5900 \romancin/tinymediamanager:l
背景、netty抛出完整的error信息如下:2018-02-08 14:30:43.098 [nioEventLoopGroup-5-1] ERROR io.netty.util.ResourceLeakDetector:176 - LEAK: ByteBuf.release() was not called before it's garbage-collected. Enable adva...
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n&lt;=39 这个题可以说是迭代(Iteration) VS 递归(Recursion),f(n) = f(n-1) + f(n-2),第一眼看就是递归啊,简直完美的递归环境,递归肯定很爽,这样想着关键代码两三行就搞定了,注意这题的n是从0开始的,注意这个递归的含义,是计算次数,而不是值...
用户名:admin密码:YourPaSsWoRd一、change [email protected]:~$ passwdChanging password for admin.(current) UNIX password:Enter new UNIX password:Retype new UNIX password:passwd: password updated successfullyecho USER:$(LANG=C perl -e 'print crypt("
org.apache.ibatis.exceptions.PersistenceException:Error querying database. Cause: java.lang.NullPointerExceptionThe error may exist in com/gaipian/dao/IAccoutDao.xmlThe error may involve com.gaipi...
rk3399pro:/ $ geteventadd device 1: /dev/input/event2 name: "adc-keys"add device 2: /dev/input/event4 name: "Wireless Dongle Wireless Dongle"add device 3: /dev/input/event5 name: "Wireless Dongle Wireless Dongle"add device 4: /dev/inp_1671465600
链表(以下内容均为单向链表)链表是用链节指针链在一起的自引用结构变量(称为结点)的线性集合,是线性表的一种存储结构。假设我们想随心所欲创建一个结构,输入多少次数据他就有多大,可以说是游刃有余。相比数组和动态分配,这两者其实都有缺陷:数组,比如一个字符串数组,要存储书名,在我不知道所有名字到底多长时,字符串长度只能设置为最长的哪那个,浪费内存;动态分配内存,恐怕就是不断在malloc和reall...
一、 个性化推荐系统简介个性化推荐系统是建立在海量数据挖掘基础上的一种智能平台,可以模拟商店销售人员向顾客提供商品信息和建议,为顾客购物提供完全个性化的决策支持和信息服务,它的目标是既满足用户意识到的需求,也能满足用户没有意识到的需求,或意识到,但没有表达出来的需求,让用户超越个体的视野,避免只见树木不见森林。好的推荐系统可以大大提高用户的忠诚度,并为电子商务带来了巨大的利益。个性化推荐是
Keil MDK3.20 在ULINK下调试stm32方法1. 程序在RAM中运行要点:(1)程序的下载地址改到RAM空间中 (2)程序的debug之前要设定SP,PC指针到Ram空间 新建工程,选择STM32 的具体型号,我买的万利的开发板,选择stm103Vb。设定程序下载地址,如下图所示,IROM1的地址指向了STM32的ram空间。空
声明:文章仅作知识整理、分享,如有侵权请联系作者删除博文,谢谢!实时视频处理中,紧靠CPU进行视频解码速度慢/占用CPU资源较多,导致整个系统处理效率不高,解码成为系统的瓶颈。需要进行GPU解码高清视频,降低解码所占用CPU资源,加速解码过程。以下来自网络测试结果:https://www.cnblogs.com/ahfuzhang/p/10855762.html视频大小:1168856 字节 画面尺寸:480*848 帧数:275 opencv + cuvid + tesla P4, 解码性