基于注解的springMVC使用总结
来源:互联网 发布:矩阵中r(a)是什么意思 编辑:程序博客网 时间:2024/06/05 07:42
参考: http://blog.csdn.net/chjttony/article/details/6286144
Spring 自 2.0 版本开始,陆续引入了一些注解用于简化 Spring 的开发。总结如下:
1、 在经典的三层结构上分别添加注解符号(@Repository、@Service、@Controller),在需要自动注入的地方添加注解符号@Autowired。这样spring的自动扫描机制,就会扫描这样带注解符号的类,实现自动注入。
2、 由于没有使用struts2,就不需要再action中接收参数时,定义成员变量privateString XXX,定义getXXX(),setXXX()。
3、 与struts2+spring+ibatis框架比较,开发起来更方便,不需要在xml文件中做其它的配置。
4、可见,使用基于注解的springMVC框架,可以减少很大的开发工作,提高了开发效率。由于,没有繁琐的配置文件,也方便了以后的维护工作。
一、传递不用类型的参数例子
1、 参数为普通类型
/** * 新闻发布,根据id,查找对象 * @author chen_zhenyu * @param newsId * @return */@RequestMapping(value="/getById")@ResponseBodypublic EcNews getById(Integer newsId){return newsService.getById(newsId);}
2、 参数为对象
/** * 新闻发布,修改 * @author chen_zhenyu * @param ecNews */@RequestMapping(value="/update")@ResponseBodypublic String updateEcNews(HttpServletRequest request,EcNews ecNews){Integer userId = (Integer) request.getSession().getAttribute("userId");String currentTime = DateUtils.longToDateAll(System.currentTimeMillis());ecNews.setEditTime(currentTime);ecNews.setEditUserId(userId);newsService.updateEcNews(ecNews);return "ok";}
3、参数为列表
如果参数为列表,需要转换为json格式的字符串,作为普通类型的参数传递。
二、返回不用类型的值例子(返回格式为json)
1、 返回值类型为普通类型
/** * 新闻发布,修改 * @author chen_zhenyu * @param ecNews */@RequestMapping(value="/update")@ResponseBodypublic String updateEcNews(HttpServletRequest request,EcNews ecNews){Integer userId = (Integer) request.getSession().getAttribute("userId");String currentTime = DateUtils.longToDateAll(System.currentTimeMillis());ecNews.setEditTime(currentTime);ecNews.setEditUserId(userId);newsService.updateEcNews(ecNews);return "ok";}
2、 返回值类型为对象
/** * 新闻发布,根据id,查找对象 * @author chen_zhenyu * @param newsId * @return */@RequestMapping(value="/getById")@ResponseBodypublic EcNews getById(Integer newsId){return newsService.getById(newsId);}
3、返回值类型为列表
/** * 生成新闻类别下拉框 * @return */@RequestMapping(value="/getNewsTypeList")@ResponseBodypublic List<Object> getNewsTypeList(){return newsService.findNewsTypeList();}
三、返回不同类型的值例子(非json格式返回)
1、 返回值类型为对象
/** * 我的订单详细 * @param request * @param orderId * @return */@RequestMapping(value="/myec/orderDetail/{orderId}")public String getOrderDetail(HttpServletRequest request, @PathVariable String orderId) {Integer customerId = (Integer) request.getSession().getAttribute("userId");OrderInfo orderInfo = new OrderInfo(); orderInfo.setCustomerId(customerId);orderInfo.setOrderId(Integer.parseInt(orderId));try {//订单基本信息OrderInfo orderDetail = orderService.getOrderDetail(orderInfo);request.setAttribute("order", orderDetail);//订单商品信息List<OrderItem> orderItemList = orderService.getOrderItemList(Integer.parseInt(orderId));request.setAttribute("orderItem", orderItemList);//配送信息List<OrderDelivery> orderDeliveryList = orderService.getOrderDeliveryList(Integer.parseInt(orderId));request.setAttribute("deliveryList", orderDeliveryList);} catch (Exception e) {e.printStackTrace();return returnErrorCode("404");}return "/jsp/shop/order_details.jsp";}
2、 返回值类型为列表
/** * 我的订单 * @param request * @param page * @return */@RequestMapping(value="/myec/orderlist/{page}")public String getOrderList(HttpServletRequest request, @PathVariable String page) {Integer customerId = (Integer) request.getSession().getAttribute("userId");OrderInfo orderInfo = new OrderInfo(); orderInfo.setCustomerId(customerId);orderInfo.setStrOrderId(request.getParameter("orderId"));orderInfo.setCommitTimeBg(request.getParameter("commitTimeBg"));orderInfo.setCommitTimeEd(request.getParameter("commitTimeEd"));try {Pagination pagination = getPagination(page);if(pagination.getPage() == 0)pagination.setPage(1);if(request.getParameter("pageSize") != null){pagination.setPageSize(Integer.valueOf(request.getParameter("pageSize")));}pagination = orderService.getOrderList(orderInfo, pagination);request.setAttribute("pagination", pagination);} catch (Exception e) {e.printStackTrace();return returnErrorCode("404");}return "/jsp/shop/order_list.jsp";}
四、其它说明
1、 从访问路径中,获取参数
/** * 我的订单详细 * @param request * @param orderId * @return */@RequestMapping(value="/myec/orderDetail/{orderId}")public String getOrderDetail(HttpServletRequest request, @PathVariable String orderId) {Integer customerId = (Integer) request.getSession().getAttribute("userId");OrderInfo orderInfo = new OrderInfo(); orderInfo.setCustomerId(customerId);orderInfo.setOrderId(Integer.parseInt(orderId));try {//订单基本信息OrderInfo orderDetail = orderService.getOrderDetail(orderInfo);request.setAttribute("order", orderDetail);//订单商品信息List<OrderItem> orderItemList = orderService.getOrderItemList(Integer.parseInt(orderId));request.setAttribute("orderItem", orderItemList);//配送信息List<OrderDelivery> orderDeliveryList = orderService.getOrderDeliveryList(Integer.parseInt(orderId));request.setAttribute("deliveryList", orderDeliveryList);} catch (Exception e) {e.printStackTrace();return returnErrorCode("404");}return "/jsp/shop/order_details.jsp";}
2、可以规定请求的方式
/** * 更新会员资料 * @param request * @param customer * @return * @throws Exception */@RequestMapping(value="/myec/customerinfo-update",method=RequestMethod.POST)public String updateCustomer(HttpServletRequest request,EcCustomer ecCustomer)throws Exception{ecCustomer.setEditTime(DateUtils.getCurrentDateString());ecCustomerService.updateEcCustomer(ecCustomer);Integer customerId = (Integer)request.getSession().getAttribute("userId");EcCustomer customer=shoppingCartService.getCustomerListById(customerId);request.setAttribute("customer", customer);request.setAttribute("rtMsg", "会员信息修改成功!");return "/jsp/myec/edit_members_info.jsp";}
五、注解符号说明
1、@Repository,用来标识数据访问层组件,即需要在dao实现类上添加该注解符号。
2、@Service,用来标识业务层组件,即需要在service实现类上添加该注解符号。
3、@Controller,用来标识控制层组件,即需要action类上添加该注解符号。
4、@Autowired,当action层需要调用serivice层方法,或service层需要调用dao层方法时,添加该注解符号,即可。
5、@RequestMapping(value="/ecNews"),用来在Action类中定义访问的映射关系。
6、@ResponseBody,表示把返回值存放到http的ResponseBody中返回。
7、@PathVariable,表示访问地址参数的映射关系。
8、@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。该注解一般不使用。
- 基于注解的springMVC使用总结
- 基于注解的SpringMVC
- 基于注解的springmvc
- 基于注解的springmvc
- 基于注解的SpringMVC
- 基于注解的SpringMVC
- 基于注解的SpringMVC
- 基于注解的SpringMVC
- 基于注解的SpringMVC
- 基于注解的SpringMVC
- springmvc 注解使用的小总结
- 使用基于注解的springmvc+mybatis的测试问题
- 基于注解的SpringMVC入门
- SpringMVC基于注解的配置
- 基于注解的SpringMVC 讲解
- 简单的Springmvc基于注解
- SpringMVC基于Controller的注解
- 基于注解的SpringMVC原理
- STL之list容器的实现框架
- Handler sendMessage 与 obtainMessage (sendToTarget)比较
- 标准C的标记化结构初始化语法
- C++杂记:类成员指针
- Java运算符详解& >> <<
- 基于注解的springMVC使用总结
- 高并发
- 使用Memory Analyzer tool(MAT)分析内存泄漏(二)
- C++的函数重载原理分析
- 润乾——参数定义
- C/C++ &与&& |与|| 的区别
- UVA 11997 K Smallest Sums
- java生成大小写字母加数字的随机数
- Spring MVC @ModelAttribute T t 报错问题