准备环境:SSM框架+JDK8/JDK7+MySQL5.7+MAVEN3以上+Tomcat8/7应用服务器

示例说明:

分发给用户优惠券,通过checkbox选中批量分发,对应也就是批量增加。

对于公司使用freemarket或者jsp或者volocity,有一定的启示意思。

不论视图用的是jsp或者非jsp,都可以参考这个示例。

下面采用的是MVC模式。

简单说下MVC模式吧

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。

  • Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。
  • View(视图) - 视图代表模型包含的数据的可视化。
  • Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

下面的示例足以验证MVC,可供参考:

jsp代码如下所示:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8. <title>发放优惠券</title>
  9. <link href="${APP_PATH}/css/main.css" type="text/css" rel="stylesheet">
  10. <link rel="stylesheet" href="${APP_PATH}/layui/css/layui.css" media="all">
  11. <script src="${APP_PATH}/js/easyui/jquery-1.8.0.min.js"
  12. type="text/javascript"></script>
  13.  
  14. </head>
  15. <body>
  16. <div class="layui-container">
  17. <div class="layui-row">
  18. <h2>发放优惠券</h2>
  19. <script>
  20. function checkAll() {
  21. var all=document.getElementById('all');//获取到点击全选的那个复选框的id
  22. var one=document.getElementsByName('memberId');//获取到复选框的名称
  23. if(all.checked==true){//因为获得的是数组,所以要循环 为每一个checked赋值
  24. for(var i=0;i<one.length;i++){
  25. one[i].checked=true;
  26. }
  27.  
  28. }else{
  29. for(var j=0;j<one.length;j++){
  30. one[j].checked=false;
  31. }
  32. }
  33. }
  34.  
  35. $(function(){
  36. $("#tishi").click(function(){
  37. alert("分发成功");
  38. });
  39. });
  40.  
  41. </script>
  42.  
  43. <div style="margin: 20px 0;"></div>
  44. <div class="easyui-layout" style="width: 700px; height: 350px;">
  45. <div
  46. data-options="region:'center',title:'Main Title',iconCls:'icon-ok'">
  47. <form action="${pageContext.request.contextPath}/json" method="post"
  48. id="checkform">
  49. <table class="easyui-datagrid"
  50. data-options="url:'datagrid_data1.json',method:'get',border:false,singleSelect:true,fit:true,fitColumns:true">
  51. <thead>
  52. <tr>
  53. <th data-options="field:'itemid'" width="80">昵称</th>
  54. <th data-options="field:'productid'" width="100">手机号</th>
  55. <th data-options="field:'listprice',align:'right'" width="80">操作</th>
  56. </tr>
  57. </thead>
  58. <c:if test="${list!=null}">
  59. <c:forEach items="${list}" var="app">
  60. <tr>
  61. <td>${app.nickName}</td>
  62. <td>${app.account}</td>
  63. <td><input type="checkbox" name="memberId"
  64. value="${app.memberId}" /></td>
  65. </tr>
  66. </c:forEach>
  67. </c:if>
  68.  
  69. </table>
  70.  
  71. <input type="hidden" name="hotelNo" id="hotelNo" value="${hotelNo}"/>
  72.  
  73. <input type="hidden" name="couponId" id="couponId_to"
  74. readonly="readonly" value="${couponId }" /> <input id="all"
  75. onclick="checkAll()" type="checkbox" />全选 <br /> <input
  76. type="submit" id="tishi" onclick="checkAll()" value="提交" />
  77. </form>
  78. </div>
  79. </div>
  80. </div>
  81. </div>
  82.  
  83. <!-- js -->
  84. <script src="${APP_PATH}/layui/layui.js" charset="utf-8"></script>
  85. <script src="${APP_PATH}/js/layer/layer-v3.1.1/layer/mobile/layer.js"
  86. type="text/javascript"></script>
  87.  
  88. </body>
  89. </html>

Controller代码:

  1. /**
  2. * 优惠券批量分发给用户
  3. * @param qv
  4. * @return
  5. */
  6. @RequestMapping(value = "json", method = {RequestMethod.POST })
  7. public Object save(QueryVo qv,HttpServletRequest request,Model model){
  8.  
  9. String hotelNo = request.getParameter("hotelNo");
  10.  
  11. Hotel hotel = hotelService.queryHotelNoInfo(hotelNo);
  12.  
  13. logger.info("优惠券Id:"+qv.getCouponId());
  14. logger.info("所有数组:"+qv.getMemberId());
  15.  
  16. //判断是否为空
  17. if (qv.getMemberId()!=null)
  18. {
  19. int size=java.lang.reflect.Array.getLength(qv.getMemberId()); //获取传过来的数组长度
  20. System.out.println(size);
  21.  
  22. String memberId[]=qv.getMemberId();//获取数组中的值
  23.  
  24. String couponId=qv.getCouponId();//获取优惠券ID
  25.  
  26. for (int i = 0; i < memberId.length; i++) {
  27. AccountCoupon ac = new AccountCoupon();
  28. ac.setMemberId(memberId[i]);
  29. ac.setCouponId(couponId);
  30.  
  31. ac.setFrom(null);
  32.  
  33. SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
  34. String date = sdf.format(new Date());
  35. ac.setReceiveDate(date);
  36.  
  37. ac.setStatus(new Consts().COUPON_UNUSED);//默认状态 "待使用"
  38. ac.setUsedDate(null);
  39. List<AccountCoupon> list = new ArrayList<AccountCoupon>();
  40.  
  41. list.add(ac);//添加到集合中
  42. logger.info("批量分发优惠券成功");
  43. accountCouponService.insertAccountCouponInfo(list);//批量插入数据
  44.  
  45. }
  46.  
  47. }
  48. model.addAttribute("hotel", hotel);
  49. return "/Set/transit4";
  50.  
  51. }

对应的DAO和Service及其实现类和xml如下:

DAO和Service代码相同不变

  1. //批量插入数据
  2. public void insertAccountCouponInfo(@Param("acs")List<AccountCoupon> acs);

Service实现类如下:

  1. @Override
  2. public void insertAccountCouponInfo(List<AccountCoupon> acs) {
  3. accountCouponMapper.insertAccountCouponInfo(acs);
  4.  
  5. }

xml:

  1. <!-- 批量發放优惠券 -->
  2. <insert id="insertAccountCouponInfo">
  3. INSERT INTO `account_coupon` (`member_id`, `coupon_id`, `status`, `receive_date`, `from`, `used_date`)
  4. VALUES
  5. <foreach collection="acs" item="ac" index="index" separator=",">
  6. (#{ac.memberId,jdbcType=VARCHAR}, #{ac.couponId,jdbcType=VARCHAR}, #{ac.status,jdbcType=VARCHAR}, #{ac.receiveDate,jdbcType=VARCHAR}, #{ac.from,jdbcType=VARCHAR} , #{ac.usedDate})
  7. </foreach>
  8. </insert>

对应的实体如下:

  1. public class AccountCoupon {
  2. /** 自增主键*/
  3. private String id;
  4.  
  5. /** 用户id*/
  6. private String memberId;
  7.  
  8. /** 优惠券id*/
  9. private String couponId;
  10.  
  11. /** 状态 未领取0 待使用1 已使用2 已过期3 冻结4 已核销5*/
  12. private String status;
  13.  
  14. /** 领取优惠券日期*/
  15. private String receiveDate;
  16.  
  17. /** 优惠券来源发放或主动领取*/
  18. private String from;
  19.  
  20. /** 使用日期*/
  21. private String usedDate;
  22.  
  23. public String getId() {
  24. return id;
  25. }
  26.  
  27. public void setId(String id) {
  28. this.id = id;
  29. }
  30.  
  31. public String getMemberId() {
  32. return memberId;
  33. }
  34.  
  35. public void setMemberId(String memberId) {
  36. this.memberId = memberId;
  37. }
  38.  
  39. public String getCouponId() {
  40. return couponId;
  41. }
  42.  
  43. public void setCouponId(String couponId) {
  44. this.couponId = couponId;
  45. }
  46.  
  47. public String getStatus() {
  48. return status;
  49. }
  50.  
  51. public void setStatus(String status) {
  52. this.status = status;
  53. }
  54.  
  55. public String getReceiveDate() {
  56. return receiveDate;
  57. }
  58.  
  59. public void setReceiveDate(String receiveDate) {
  60. this.receiveDate = receiveDate;
  61. }
  62.  
  63. public String getFrom() {
  64. return from;
  65. }
  66.  
  67. public void setFrom(String from) {
  68. this.from = from;
  69. }
  70.  
  71. public String getUsedDate() {
  72. return usedDate;
  73. }
  74.  
  75. public void setUsedDate(String usedDate) {
  76. this.usedDate = usedDate;
  77. }
  78.  
  79. }

SSM框架之批量增加示例(同步请求jsp视图解析)的更多相关文章

  1. ssm框架如果想要跨域请求,cors跨域

    <!-- 跨域 --> <mvc:cors> <mvc:mapping path="/**"/> </mvc:cors> 在spri ...

  2. ssm框架下怎么批量删除数据?

    ssm框架下批量删除怎么删除? 1.单击删除按钮选中选项后,跳转到js函数,由函数处理 2. 主要就是前端的操作 js 操作(如何全选?如何把选中的数据传到Controller中) 3.fun()函数 ...

  3. Java SSM 框架相关基础面试题

    一.Spring 面试题 1. Spring 在 SSM 中起什么作用? Spring 是轻量级框架,作用是作为 Bean 工厂,用来管理 Bean 的声明周期和框架集成. Spring 的两大核心: ...

  4. SSM框架面试题及答案整理

    一.Spring面试题 1.Spring 在ssm中起什么作用? Spring:轻量级框架 作用:Bean工厂,用来管理Bean的生命周期和框架集成. 两大核心:①. IOC/DI(控制反转/依赖注入 ...

  5. 9月腾讯、百度、阿里高频的29道SSM框架面试题解析

    一.Spring面试题 1.Spring 在ssm中起什么作用? Spring:轻量级框架 作用:Bean工厂,用来管理Bean的生命周期和框架集成. 两大核心:1.IOC/DI(控制反转/依赖注入) ...

  6. 使用idea实现SSM框架整合

    SM框架整合 1      使用idea创建一个maven webapp项目 到此为止项目初步建立,需要等待maven对项目结构进行组织,直到状态栏的进度条完成,且项目的目录结构如下: 2      ...

  7. SSM框架(1)

    Spring MVC Framework有这样一些特点: 它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是java组件.并且和Spring提供的其他基础结构紧密集成. 不依 ...

  8. 搭建ssm框架经验

    要想搭建好ssm框架的开发环境.首先我们需要知道ssm是什么?ssm就是spring,springmvc,mybatis. 然后我们要知道,他们分别都是怎样实现的和做什么用的,充当什么角色?这样我们就 ...

  9. 整合SSM框架必备基础—SpringMVC(下)

    在上一篇文章<整合SSM框架必备基础-SpringMVC(上)>中,胖达介绍了关于SpringMVC的诞生.优势以及执行流程等理论知识点,这篇文章打算在实操中加深一下对SpringMVC的 ...

随机推荐

  1. nginx+tomcat实现Windows系统下的负载均衡搭建的案例

    刚入行没多久就听过‘负载均衡’的大名,到现在因为工作接触的少,所以没什么太多的认识.但自己又对其非常的好奇,所以前两天通过查资料,在自己的笔记本上就搭建了一个超简单的案例(工作中没有时间,晚上到家了条 ...

  2. Centos7 安装 ActiveMq

    1.安装 # cd /usr/local/src/# wget http://mirrors.shu.edu.cn/apache//activemq/5.15.3/apache-activemq-5. ...

  3. Python Django Ajax 传递列表数据

    function getTableContent(node) { event.preventDefault(); var tr = node.parentNode.parentNode; var id ...

  4. python Django html 一对多数据实例 模态对话框添加数据

  5. python开发必备神器 Virtualenv及管理工具Virtualenvwrapper

    如果在一台机器上,想开发多个不同的项目,需要用到同一个包的不同版本,如果还在本地继续安装,在同一个目录下安装或者更新,其它的项目必须就无法运行了,怎么办呢? 解决方案:虚拟环境 虚拟环境可以搭建独立的 ...

  6. html5备忘录——张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1544 一.前言兼图片 ...

  7. SESSION机制(转)

    转自:http://www.cnblogs.com/zyf-zhaoyafei/p/4477175.html 一:Session与Cookie Session:在服务器端创建并存放在服务器的内存中的, ...

  8. JQuer.HoverDir的基本使用方法

    首先引入JQ和HoverDir库 HTML部分: <ul id="da-thumbs" class="da-thumbs"> <li> ...

  9. RabbitMQ,Windows环境下安装搭建

    切入正题:RabbitMQ的Windows环境下安装搭建 一.首先安装otp_win64_20.1.exe,,, 二.然后安装,rabbitmq-server-3.6.12.exe, 安装完成后,在服 ...

  10. 多表批量导出txt及打压缩包下载

     在一些特殊的业务系统中,有些客户查看报表数据时不需要在浏览器上逐一查看,需要在页面端选择要查看的报表名称(可多选),选择条件,然后将所选中的报表批量导出到txt文件中并且要把批量导出的结果文件打 ...