springmvc 以不同的跳转方式实现增删改查

优势:可以只用一个URL
不同功能对应的方式:
1.用户信息列表 get
2. 添加用户 add post
3.删除 delete delete
4.修改update put
方发之间的区别:

PUT和POST

PUT和POS都有更改指定URI的语义.但PUT被定义为idempotent的方法,POST则不是.idempotent的方法:如果一个方法重复执行多次,产生的效果是一样的,那就是idempotent的。也就是说:

PUT请求:如果两个请求相同,后一个请求会把第一个请求覆盖掉。(所以PUT用来改资源)

Post请求:后一个请求不会把第一个请求覆盖掉。(所以Post用来增资源)

get和post

1、GET参数通过URL传递,POST放在Request body中。

2、GET请求会被浏览器主动cache,而POST不会,除非手动设置。

3、GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

4、Get 请求中有非 ASCII 字符,会在请求之前进行转码,POST不用,因为POST在Request body中,通过 MIME,也就可以传输非 ASCII 字符。

5、 一般我们在浏览器输入一个网址访问网站都是GET请求

6、HTTP的底层是TCP/IP。HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本。GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。但是请求的数据量太大对浏览器和服务器都是很大负担。所以业界有了不成文规定,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。

7、GET产生一个TCP数据包;POST产生两个TCP数据包。对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

8、在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。但并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

列表

Controller层

@RequestMapping(value="/manage",method= {RequestMethod.GET})
	public String List(Map<String,Object> map) {
		map.put("userList",userService.getSUList());
		return "user/list";

增加

Controller层

	@RequestMapping(value = "/manage", method= {RequestMethod.POST})
	public String add(UserInfo userInfo) {
		System.out.println("===============>" + userInfo);
		userService.add(userInfo);
		return "redirect:manage";

在jsp中直接使用表单提交即可

修改

Controller层

@RequestMapping(value = "/manage", method= {RequestMethod.PUT})
	public String editUser(UserInfo userInfo) {
		
		System.out.println("=======editUser==========>" + userInfo);
		userService.update(userInfo);
		return "redirect:manage";
	}

在jsp的表单中应加入<input type="hidden" name="_method" value="put"> 才能以put方式提交
表单<form action="${pageContext.request.contextPath }/userInfo/manage" method="post">依旧写为post 注意:在表单将post改为put无用
表单的常用提交方式:1) GET 浏览器将提交表单中的字段信息放置在请求头中,不适合大数据量的传输,
适合根据关键字作查询。
2) POST
浏览器将提交表单中的字段信息放置在请求体中,适合大数据量的传输,
如:向服务器端上传文件等。
注意:
1) 若直接在地址栏中输入URL按回车,按GET方式提交.
2) 若属性method不指定任何值或者不加属性method默认按GET方式提交.
3) 只有在method指定为POST时才按POST方式提交

删除

Controller层

@RequestMapping(value = "/manage", method= {RequestMethod.DELETE})
	public String deleteUser(int userId) {
		userService.delect(userId);
		return "redirect:manage";
	}

在list.jsp页面中需要使用javascript

<c:forEach items="${userList }" var="user">
		<tr>
				<td>${user.userId } </td>
				<td>${user.userName } </td>
				<td>${user.passwd } </td>
				<td>${user.salt } </td>
				<td>${user.createTime } </td>
				<td><a href="javascript:deleteUserInfo(${user.userId })">删除</a></td>
				<td><a href="/springboot.mvc/views/user/update.jsp?userId=${user.userId}">修改</a></td>
		</tr>
		
		</c:forEach>
	
	
	</table>
	
	
	</div>
	<from id="deleteUserFrom" action="${pageContext.request.contextPath }/userInfo/manage" method="post">
		<input type="hidden" name="_method" value="delete">
		<input type="hidden" id="userId" name="userId">
	//独立建立一个表单以delete方式提交
	</from>
	<script type="text/javascript">
	
		function deleteUserInfo(userId){
			alert("----------->" + userId);
			var delFrom = document.getElementById("deleteUserForm");
			document.getElementById("userId").value = userId;
			delFrom.submit();
		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值