springmvc高级篇

数组类型的参数绑定

springmvc高级篇_第1张图片ItemController修改queryItem方法:

/**
 * 包装类型 绑定数组类型,可以使用两种方式,pojo的属性接收,和直接接收
 * 
 * @param queryVo
 * @return
 */
@RequestMapping("queryItem")
public String queryItem(QueryVo queryVo, Integer[] ids) {

	System.out.println(queryVo.getItem().getId());
	System.out.println(queryVo.getItem().getName());

	System.out.println(queryVo.getIds().length);
	System.out.println(ids.length);

	return "success";
}

List类型的绑定springmvc高级篇_第2张图片前端页面应该显示的html代码,如下图:



分析发现:name属性必须是list属性名+下标+元素属性。
Jsp做如下改造:



	
	
		
		
	
	
	"/>
	
	
	修改



${current} 当前这次迭代的(集合中的)项
${status.first} 判断当前项是否为集合中的第一项,返回值为true或false
${status.last} 判断当前项是否为集合中的最
varStatus属性常用参数总结下:
${status.index} 输出行号,从0开始。
${status.count} 输出行号,从1开始。
${status.后一项,返回值为true或false
begin、end、step分别表示:起始序号,结束序号,跳跃步伐。

@RequestMapping注解的使用

通过@RequestMapping注解可以定义不同的处理器映射规则。
1.URL路径映射
@RequestMapping(value=“item”)或@RequestMapping("/item")
value的值是数组,可以将多个url映射到同一个方法

/**
 * 查询商品列表
 * @return
 */
@RequestMapping(value = { "itemList", "itemListAll" })
public ModelAndView queryItemList() {
	// 查询商品数据
	List list = this.itemService.queryItemList();

	// 创建ModelAndView,设置逻辑视图名
	ModelAndView mv = new ModelAndView("itemList");

	// 把商品数据放到模型中
	mv.addObject("itemList", list);
	return mv;
}

2.添加在类上面
在class上添加@RequestMapping(url)指定通用请求前缀, 限制此类下的所有方法请求url必须以请求前缀开头
springmvc高级篇_第3张图片3.请求方法限定
除了可以对url进行设置,还可以限定请求进来的方法
限定GET方法
@RequestMapping(method = RequestMethod.GET)

如果通过POST访问则报错:
HTTP Status 405 - Request method ‘POST’ not supported

例如:
@RequestMapping(value = “itemList”,method = RequestMethod.POST)

限定POST方法
@RequestMapping(method = RequestMethod.POST)

如果通过GET访问则报错:
HTTP Status 405 - Request method ‘GET’ not supported

GET和POST都可以
@RequestMapping(method = {RequestMethod.GET,RequestMethod.POST})

Controller方法返回值

@Controller web层方法返回值
1.ModelAndView mav 无敌的 带着数据 返回视图路径 不建议使用

return mav 
return "redirect:/itemEdit.action //重定向
return "forward:/itemEdit.action  //转发
 2.string   返回视图   model带数据	    官方推荐此种方式   解耦  数		据  		视		图  分离  MVC   建议使用
return "itemList";
  3.void   ajax   请求  合适  json格式数据(response  异步请求使用
  @return

Springmvc中异常处理

需要创建一个实现一个HandlerExceptionResolver接口

 * 异常处理器的自定义的实现类
 * */
public class yichanglmpl implements HandlerExceptionResolver  {

	public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object obj,
			Exception e) {
			//obj:是发生异常的地方Service层的方法 包名+类名+方法名(形参)字符串
		
		ModelAndView  mav=new ModelAndView();
		mav.addObject("error", "未知异常");
		mav.setViewName("error");
		return mav;
	}
然后在springmvc.xml配置

        

图片上传处理

需要导入两个包
springmvc高级篇_第4张图片在springmvc.xml中配置文件上传解析器



	
	

在商品修改页面,打开图片上传功能,如下图:
springmvc高级篇_第5张图片
设置表单可以进行文件上传,如下图:
springmvc高级篇_第6张图片`//提交修改页面 入参 为 Items对象
@RequestMapping(value = “/updateitem.action”)
// public ModelAndView updateitem(Items items){
public String updateitem(QueryVo vo,MultipartFile pictureFile) throws Exception{
//保存图片 replaceAll("-", “”);:之前的文件名跟之后的文件名 防止重复
String name = UUID.randomUUID().toString().replaceAll("-", “”);
//jpg
String ext = FilenameUtils.getExtension(pictureFile.getOriginalFilename());

	pictureFile.transferTo(new File("F:\\upload\\"+name+"."+ext));
	
	vo.getItems().setPic(name+"."+ext);
	
	//修改
	itemService.updateItemsById(vo.getItems());
	
	//ModelAndView mav = new ModelAndView();
	//mav.setViewName("success");
	return "redirect:/itemEdit.action?id="+vo.getItems().getId();
	//return mav;`

Json数据交互

需要导入js
springmvc高级篇_第7张图片



                    
                    

你可能感兴趣的:(springmvc高级篇)