自己的springmvc复习(二)springmvc提高

本文深入探讨SpringMVC框架的高级应用,包括参数绑定、@RequestMapping的灵活使用、多种控制器返回类型、异常处理机制、文件上传功能、JSON数据交互及Restful风格开发。通过实例演示如何提升开发效率和代码质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二、springmvc提高
1.参数绑定之数组(删除多个商品)
(1)修改jsp页面,添加CheckBox,添加删除按钮


(2)新建方法删除,将数组传到QueryVo里面
@RequestMapping(value = “/deletes.action”)
public ModelAndView deletes(QueryVo vo){
ModelAndView mav = new ModelAndView();
mav.setViewName(“success”);
return mav;

在QueryVo新创建对象ids,然后添加set 和get方法
Integer[] ids;

1.参数绑定之List
(1)修改jsp页面
显示前两个属性的input



(2)新建方法修改,将List传到QueryVo里面
2.@RequestMapping的使用
(1)后面的method方法的值,只有get或者只有post时候只能用一个方法提交,下面的写法两种方法都可以提交
@RequestMapping(value = “/updates.action”,method = {RequestMethod.POST,RequestMethod.GET})
(2)多个url映射到一个方法
@RequestMapping(value = “/updates.action”,"/updateshaha.action")
两个url映射方法相同
3.controller层方法返回值
(1)几种返回类型
* 1.ModelAndView 无敌的 带着数据 返回视图路径 不建议使用
* 2.String 返回视图路径 model带数据 官方推荐此种方式 解耦 数据 视图 分离 MVC 建议使用
*3.void ajax 请求 合适 json格式数据 (response 异步请求使用
(2)采用string返回值操作
第一,controller方法返回类型改为String
public String updateitem()
第二, 返回值为重定向
return “redirect:/itemEdit.action”;
4.异常处理器
(1)新建一个异常处理的类,跳转到error.jsp页面
public class CustomExceptionResolver implements HandlerExceptionResolver{
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object obj,
Exception e) {
ModelAndView mav = new ModelAndView();
//判断异常类型
if(e instanceof MessageException){
//预期异常
MessageException me = (MessageException)e;
mav.addObject(“error”, me.getMsg());
}else{
mav.addObject(“error”, “未知异常”);
}
mav.setViewName(“error”);
return mav;
}
}
(2)自定义异常
1. 新建一个自定义异常处理的类
public class MessageException extends Exception{public class MessageException extends Exception{
private String msg;
public MessageException(String msg) {
super();
this.msg = msg;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
2.在可能发生异常的地方写明异常信息
if(null == null){
throw new MessageException(“商品信息不能为空”);
}
(3)在配置文件中注入


5.上传图片
(1)在Tomcat中添加图片保存到本地的设置(F:\upload)
在这里插入图片描述

(2) 在controller层的修改类中实现图片上传功能代码
1.public String updateitem(QueryVo vo,MultipartFile pictureFile) throws Exception{
在修改类的入参里面添加MultipartFile pictureFile,pictureFile名字必须跟jsp页面中的name属性相同。
2.随机生成图片名
String name = UUID.randomUUID().toString().replaceAll("-", “”);
3.获取上传图片的后缀//jpg
String ext = FilenameUtils.getExtension(pictureFile.getOriginalFilename());
4.将图片存到本地盘符
pictureFile.transferTo(new File(“F:\upload\” + name + “.” + ext));
5.将图片修改到数据库
vo.getItems().setPic(name + “.” + ext);
(3) 在配置文件中添加上传图片实现类





(4)editItem.jsp页面图片代码

商品图片

<c:if test="item.pic!=null&quot;&gt;&lt;imgsrc=&quot;/pic/{item.pic !=null}&quot;&gt; &lt;img src=&quot;/pic/item.pic!=null"><imgsrc="/pic/{item.pic}" width=100 height=100/>


</c:if>



5.Json数据交互
(1)添加jq文件

(2)添加js数据
		<script type="text/javascript">
	$(function(){
		var params = '{"id": 1,"name": "测试商品","price": 99.9,"detail": "测试商品描述","pic": "123456.jpg"}';  //将json数据<k,v>写成字符串的格式
		$.ajax({
			url : "${pageContext.request.contextPath }/json.action",
			data : params,
			contentType : "application/json;charset=UTF-8",//发送数据的格式
			type : "post",
			dataType : "json",//回调
			success : function(data){
				alert(data.name);
			}				
		});
	});
	</script>
	(3)为数据交互编写java代码
		@RequestMapping(value = "/json.action")
		public @ResponseBody
			Items json(@RequestBody Items items){
				return items;
		}
		//两个@注解为了适应各种开发环境

5.Restful风格开发
(1)在路径映射的后面加上{id}字段
(2)在方法的入参上面加入id字段
@RequestMapping(value = “/itemEdit/{id}.action”)
public ModelAndView toEdit1(@PathVariable Integer id,
HttpServletRequest request,HttpServletResponse response
,HttpSession session,Model model){
Items items = itemService.selectItemsById(id);
ModelAndView mav = new ModelAndView();
//数据
mav.addObject(“item”, items);
mav.setViewName(“editItem”);
return mav;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值