SpringMVC入门(二)—— 参数的传递、Controlle…
2018-06-18 01:38:30来源:未知 阅读 ()
一、参数的传递
1、简单的参数传递
1 /* @RequestParam用法:入参名字与方法名参数名不一致时使用{ 2 * value:传入的参数名,required:是否必填,defaultValue:默认值 3 * } 4 */ 5 @RequestMapping("itemEdit") 6 public ModelAndView itemEdit(@RequestParam(value="id",required=true,defaultValue="1")Integer id){....}
2、Model/ModelMap
1 /** 2 * 演示返回String,通过Model/ModelMap返回数据模型 3 * 跳转修改商品信息页面 4 * @param id 5 * @return 6 */ 7 @RequestMapping("itemEdit") 8 public String itemEdit(@RequestParam("id")Integer ids,Model m,ModelMap model){ 9 //查询商品信息 10 Item item = itemServices.getItemById(ids); 11 //通过Model把商品数据返回页面 12 model.addAttribute("item", item); 13 //返回String视图名字 14 return "itemEdit"; 15 }
3、pojo与包装pojo
要点:表单提交的name属性必需与pojo的属性名称一致。
1 /** 2 * 演示传递pojo参数 3 * 更新商品信息 4 * @return 5 */ 6 @RequestMapping("updateItem") 7 public String updateItem(Item item,Model model){ 8 //更新商品 9 itemServices.update(item); 10 //返回商品模型 11 model.addAttribute("item", item); 12 //返回担任提示 13 model.addAttribute("msg", "修改商品成功"); 14 //返回修改商品页面 15 return "itemEdit"; 16 }
4、自定义参数绑定
①自定义转换器
1 /** 2 * 日期转换器 3 * S:source 要转换的源类型 4 * T:目标,要转换成的数据类型 5 * @author Steven 6 */ 7 public class DateConvert implements Converter<String, Date> { 8 9 @Override 10 public Date convert(String source) { 11 Date result = null; 12 try { 13 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 14 result = sdf.parse(source); 15 } catch (ParseException e) { 16 e.printStackTrace(); 17 } 18 return result; 19 } 20 }
② 配置日期转换器
1 <!-- 配置注解驱动,相当于同时使用最新处理器映射跟处理器适配器,对json数据响应提供支持 --> 2 <!-- 使用自定义转换器 --> 3 <mvc:annotation-driven conversion-service="MyConvert" /> 4 5 <!-- 定义转换器 --> 6 <bean id="MyConvert" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> 7 <property name="converters"> 8 <set> 9 <bean class="com.cenobitor.springmvc.utils.DateConvert" /> 10 </set> 11 </property> 12 </bean>
5、数组参数传递
1 @RequestMapping("/queryItem") 2 public String queryItem(QueryVo vo,Integer[] ids){ 3 System.out.println(vo); 4 if (ids != null && ids.length > 0){ 5 for (Integer id : ids) { 6 System.out.println(id); 7 } 8 } 9 return "itemList"; 10 }
二、Controller方法返回值
1、返回ModelAndView
1 @RequestMapping("itemList") 2 public ModelAndView queryItemList(){ 3 4 ModelAndView modelAndView = new ModelAndView(); 5 modelAndView.setViewName("itemList"); 6 List<Item> list = itemService.getItemList(); 7 modelAndView.addObject("itemList",list); 8 return modelAndView; 9 }
2、返回void:使用原始的request、response处理
3、返回String
①返回视图的名字
②转发,跳转action
1 @RequestMapping(value = "updateItem",method = RequestMethod.POST) 2 public String updateItem(Item item, Model model){ 3 model.addAttribute("item",item); 4 return "forward:/itemEdit.action"; 5 }
③重定向,跳转action
return "redirect:/itemEdit.action";
三、json数据交互
1、依赖jar包
jackson-annotation-2.4.0.jar
jackson-cort-2.4.0.jar
jackson-databind-2.4.2.jar
2、代码演示
1 /** 2 * json数据交互演示 3 * @param item2 4 * @return 5 */ 6 @RequestMapping("getItem") 7 //@ResponseBody把pojo转成json串响应用户 8 @ResponseBody 9 //@RequestBody用于接收用户传入json串转成pojo 10 public Item getItem(@RequestBody Item item2) { 11 System.out.println("接收到的json商品数据为:" + item2); 12 Item item = itemServices.getItemById(3); 13 return item; 14 }
四、异常处理
1、需实现HandlerExceptionResolver
1 /** 2 * 全局异常处理器 3 * @author Steven 4 * 5 */ 6 public class CustomerException implements HandlerExceptionResolver { 7 8 @Override 9 public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object hanlder, 10 Exception e) { 11 //记录日志 12 e.printStackTrace(); 13 //错误消息 14 String msg = "很抱歉,系统发生异常了,请联系管理员"; 15 16 //响应用户错误提示 17 ModelAndView mav = new ModelAndView(); 18 //返回错误消息 19 mav.addObject("msg", msg); 20 //响应错误提示页面 21 mav.setViewName("msg"); 22 return mav; 23 } 24 }
2、在springmvc.xml中配置全局异常处理器
1 <!-- 配置全局异常处理器 --> 2 <bean class="com.cenobitor.exception.CustomerException"/>
五、图片上传
1、需要支持的jar包
commons-fileupload-1.2.2.jar
commons-io-2.4.jar
2、配置多媒体解析器
<!-- 配置多媒体处理器 --> <!-- 注意:这里id必须填写:multipartResolver --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 最大上传文件大小 --> <property name="maxUploadSize" value="8388608" /> </bean>
3、注意事项
① 表单需添加enctype="multipart/form-data" 属性
② controller层接收的入参需要添加MultipartFile picFile,其中picFile为表单中对应的文件name属性名。
③ 保存图片使用绝对路径,访问使用虚拟路径
4、controller代码
1 @RequestMapping(value = "updateItem", method = { RequestMethod.POST, RequestMethod.GET }) 2 public String updateItem(Item item, Model model, MultipartFile picFile) throws Exception { 3 4 // 图片新名字 5 String name = UUID.randomUUID().toString(); 6 // 图片原名字 7 String oldName = picFile.getOriginalFilename(); 8 // 后缀名 9 String exeName = oldName.substring(oldName.lastIndexOf(".")); 10 11 File pic = new File("D:\\WebWork\\" + name + exeName); 12 // 保存图片到本地磁盘 13 picFile.transferTo(pic); 14 // 更新商品图片信息 15 item.setPic(name + exeName); 16 17 itemServices.update(item); 18 model.addAttribute("item", item); 19 model.addAttribute("msg", "修改商品成功"); 20 return "itemEdit"; 21 }
六、拦截器
1、需实现HandlerInterceptor
1 /** 2 * 自定义拦截器 3 * @author Steven 4 * 5 */ 6 public class MyInterceptor1 implements HandlerInterceptor { 7 8 //在preHandle方法返回true并且Controller方法完全执行完后被执行 9 //处理异常、记录日志 10 @Override 11 public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) 12 throws Exception { 13 System.out.println("MyInterceptor1.afterCompletion....."); 14 } 15 16 //在Controller方法执行后,返回ModelAndView之前被执行 17 //设置或者清理页面共用参数等等 18 @Override 19 public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) 20 throws Exception { 21 System.out.println("MyInterceptor1.postHandle....."); 22 } 23 24 //在Controller方法执行前被执行 25 //登录拦截、权限认证等等 26 @Override 27 public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception { 28 29 System.out.println("MyInterceptor1.preHandle....."); 30 31 //返回true放行,false拦截 32 return true; 33 } 34 35 }
2、在springmvc.xml配置拦截器
1 <!-- 拦截器定义 --> 2 <mvc:interceptors> 3 <!-- 定义一个拦截器 --> 4 <mvc:interceptor> 5 <!-- path配置</**>拦截所有请求,包括二级以上目录,</*>拦截所有请求,不包括二级以上目录 --> 6 <mvc:mapping path="/**"/> 7 <bean class="com.cenobitor.springmvc.interceptor.MyInterceptor1" /> 8 </mvc:interceptor> 9 </mvc:interceptors>
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- logstash系列-入门整理 2020-06-10
- Java 入门教程 2020-06-09
- RocketMQ4.4 入门进阶+实战 2020-06-08
- 因为 MongoDB 没入门,我丢了一份实习工作 2020-06-07
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
