• 简介

  在基本的项目中,无非就是基本的增删改查,前面我们已经实现了一个简单的查询功能,现在来实现增删改功能,来了解实际开发中的运用,以修改功能为例,因为修改功能基本覆盖了增加和删除的运用。

  前面我们实现了查询列表的功能,现在根据查询列表进入到商品详情,然后修改商品信息然后再返回商品列表页面。

  • 修改功能

  1、开发Mapper:根据id查询商品信息、根据id更新Items表的数据

  这个可以使用逆向工程实现,也可以自己实现。

  2、开发service

  service接口:

 // 根据id查询商品信息
public ItemsCustom findItemsById(Integer id) throws Exception;
// 修改商品信息
public void updateItems(Integer id, ItemsCustom itemsCustom)
throws Exception;

  service实现类:

 public ItemsCustom findItemsById(Integer id) throws Exception {

         Items items = itemsMapper.selectByPrimaryKey(id);
// 中间对商品信息进行业务处理
// ....
// 返回ItemsCustom
ItemsCustom itemsCustom = new ItemsCustom();
// 将items的属性值拷贝到itemsCustom
BeanUtils.copyProperties(items, itemsCustom); return itemsCustom; } @Override
public void updateItems(Integer id, ItemsCustom itemsCustom)
throws Exception {
// 添加业务校验,通常在service接口对关键参数进行校验
// 校验 id是否为空,如果为空抛出异常 // 更新商品信息使用updateByPrimaryKeyWithBLOBs根据id更新items表中所有字段,包括 大文本类型字段
// updateByPrimaryKeyWithBLOBs要求必须转入id
itemsCustom.setId(id);
itemsMapper.updateByPrimaryKeyWithBLOBs(itemsCustom);
}

  3、开发Controller

 @Controller
@RequestMapping("/items")
public class ItemController {
@Autowired
private ItemsService itemsService;
@RequestMapping(value="/editItems",method={RequestMethod.POST,RequestMethod.GET})
//@RequestParam里边指定request传入参数名称和形参进行绑定。
//通过required属性指定参数是否必须要传入
//通过defaultValue可以设置默认值,如果id参数没有传入,将默认值和形参绑定。
public String editItems(Model model,@RequestParam(value="id",required=true) Integer items_id)throws Exception {
//调用service根据商品id查询商品信息
ItemsCustom itemsCustom = itemsService.findItemsById(items_id);
//通过形参中的model将model数据传到页面
//相当于modelAndView.addObject方法
model.addAttribute("itemsCustom", itemsCustom); return "items/editItems";
}
// 商品信息修改提交
@RequestMapping("/editItemsSubmit")
public String editItemsSubmit(HttpServletRequest request, Integer id,
ItemsCustom itemsCustom) throws Exception {
// 调用service更新商品信息,页面需要将商品信息传到此方法
itemsService.updateItems(id, itemsCustom);
// 重定向到商品查询列表
//return "redirect:queryItems.action";
// 页面转发
return "forward:queryItems.action";
//return "success";
}
}

  从这两个方法中有很多可以总结的:

  1、在类前面加@RequestMapping("/items"),可以窄化请求,是请求根据类的url和方法的url拼接,这样可以按控制器进行分类来实现不同的调用。

  2、在方法前面加@RequestMapping(value="/editItems",method={RequestMethod.POST,RequestMethod.GET}),这样可以对方法的访问进行限制,只要get和post的方法可以访问。

  3、Controller的方法的返回类型有多种,可以是ModelAndView、void或string。

    (1)、返回ModelAndView

          需要方法结束时,定义ModelAndView,将model和view分别进行设置。

    (2)、返回string

        表示返回逻辑视图名:真正视图(jsp路径)=前缀+逻辑视图名+后缀

        redirect重定向:"redirect:queryItems.action"

        forward页面转发:"forward:queryItems.action"

     (3)、返回void:

        在controller方法形参上可以定义request和response,使用request或response指定响应结果:

        1、使用request转向页面,如下:

        request.getRequestDispatcher("页面路径").forward(request, response);

        2、通过response页面重定向:

        response.sendRedirect("url")

        3、通过response指定响应结果,例如响应json数据如下:

        response.setCharacterEncoding("utf-8");

        response.setContentType("application/json;charset=utf-8");

        response.getWriter().write("json串");

SpringMVC学习--功能完善的更多相关文章

  1. springMVC+Java验证码完善注册功能

    这篇文章简单的写了一个java验证码,为之前写过的springMVC注册功能加上验证码,验证码的作用就不多说了,防止机器人程序恶意注册什么的.. 其中User.java,加上了password和cod ...

  2. springmvc学习笔记(10)-springmvc注解开发之商品改动功能

    springmvc学习笔记(10)-springmvc注解开发之商品改动功能 标签: springmvc springmvc学习笔记10-springmvc注解开发之商品改动功能 需求 开发mappe ...

  3. SpringMVC学习记录3

    这次的主题 最近一直在学习SpringMVC..(这句话我已经至少写了3,4遍了....).这次的研究主要是RequestMappingHandlerAdapter中的各种ArgumentsResol ...

  4. SpringMvc学习心得(五)控制器产生与构建

    SpringMvc学习心得(五)控制器产生与构建 标签: springspring mvc框架 2016-03-22 15:29 140人阅读 评论(0) 收藏 举报  分类: Spring(4)  ...

  5. springmvc学习笔记--REST API的异常处理

    前言: 最近使用springmvc写了不少rest api, 觉得真是一个好框架. 之前描述的几篇关于rest api的文章, 其实还是不够完善. 比如当遇到参数缺失, 类型不匹配的情况时, 直接抛出 ...

  6. springmvc学习笔记(常用注解)

    springmvc学习笔记(常用注解) 1. @Controller @Controller注解用于表示一个类的实例是页面控制器(后面都将称为控制器). 使用@Controller注解定义的控制器有如 ...

  7. SpringMVC学习笔记之二(SpringMVC高级参数绑定)

    一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...

  8. springmvc学习笔记(19)-RESTful支持

    springmvc学习笔记(19)-RESTful支持 标签: springmvc springmvc学习笔记19-RESTful支持 概念 REST的样例 controller REST方法的前端控 ...

  9. springMVC 学习笔记(一):springMVC 入门

    springMVC 学习笔记(一):spring 入门 什么是 springMVC springMVC 是 spring 框架的一个模块,springMVC 和 spring 无需通过中间整合层进行整 ...

随机推荐

  1. windows下 MySQL手动安装与卸载

    下载文件以后进行解压 ,指定文件的具体位置 1.安装 选择路径下的mysqld --intall 指定服务名称  --设置配置文件 例子: C:\Users\Administrator\Desktop ...

  2. git 学习使用总结一(本地操作)

    通过几天的学习,熟悉了 git 的一些常用命令,要用熟练和操作更复杂的功能还必须继续学习.不过 git 作为工具,它是用来提高我们的工作效率的工具,系统的学习之后可以暂且放放,等到以后实际项目中用到了 ...

  3. C++11 之 override

    1  公有继承 派生类公有继承自 (public inheritance) 基类,继承包含两部分:一是函数的 "接口" (interface),二是函数的 "实现&quo ...

  4. sublime安装package control组件

    第一步,首先到这个网站https://packagecontrol.io/installation去下载Package Control.sublime-package文件 第二步,将下载的文件放到C: ...

  5. childNodes的兼容性问题

    元素.childNodes:只读 属性 子节点列表集合 标准浏览器下:包含文本和元素类型节点,也会包含非法嵌套的子节点 非标准浏览器下:只包含元素类型节点,ie7下不会包含非法嵌套的子节点 child ...

  6. css相关问题

    display:none和visibility:hidden的区别? 前几天遇到的这个问题,表格布局:::::display:none 隐藏对应的元素,在文档布局中不再给它分配空间,它各边的元素会合拢 ...

  7. 关于a标签和submit标签

    a如果没有连接“#”:“javascript:void(0)”;或“(胡乱写一堆)” 这两个标签点击都有刷新功能,所以会清空你的数据.

  8. 【MVC版本】MVC3、MVC4之MODEL验证大比拼

    1.密码验证 MVC3 [System.ComponentModel.DataAnnotations.Compare("Password", ErrorMessage = &quo ...

  9. 十大经典排序算法总结——JavaScrip版

    首先,对于评述算法优劣术语的说明: 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面:即排序后2个相等键值的顺序和排序之前它们的顺序相同 不稳定:如果a原本在b的前面,而a=b,排序之后a ...

  10. Java应用程序项目的打包与发行(run.bat形式)

    参考: http://www.iteye.com/topic/57312 背景: 以前一直都是在eclipse上面创建应用程序,每次要要运行的时候都要打开eclipse, 直到有个同事叫我帮忙写一个应 ...