SSM框架之批量增加示例(同步请求jsp视图解析)

简介: 准备环境:SSM框架+JDK8/JDK7+MySQL5.7+MAVEN3以上+Tomcat8/7应用服务器示例说明:分发给用户优惠券,通过checkbox选中批量分发,对应也就是批量增加。对于公司使用freemarket或者jsp或者volocity,有一定的启示意思。

准备环境: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代码如下所示:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>发放优惠券</title>
<link href="${APP_PATH}/css/main.css" type="text/css" rel="stylesheet">
<link rel="stylesheet" href="${APP_PATH}/layui/css/layui.css" media="all">
<script src="${APP_PATH}/js/easyui/jquery-1.8.0.min.js"
    type="text/javascript"></script>

</head>
<body>
    <div class="layui-container">
        <div class="layui-row">
    <h2>发放优惠券</h2>
        <script>
     function checkAll() {  
            var all=document.getElementById('all');//获取到点击全选的那个复选框的id  
            var one=document.getElementsByName('memberId');//获取到复选框的名称  
            if(all.checked==true){//因为获得的是数组,所以要循环 为每一个checked赋值  
                for(var i=0;i<one.length;i++){  
                    one[i].checked=true;  
                }  
      
            }else{  
                for(var j=0;j<one.length;j++){  
                    one[j].checked=false;  
                }  
            }  
        }  
     
    $(function(){
        $("#tishi").click(function(){
            alert("分发成功");
        });
    });
    
    </script>


        <div style="margin: 20px 0;"></div>
        <div class="easyui-layout" style="width: 700px; height: 350px;">
            <div
                data-options="region:'center',title:'Main Title',iconCls:'icon-ok'">
                <form action="${pageContext.request.contextPath}/json" method="post"
                    id="checkform">
                    <table class="easyui-datagrid"
                        data-options="url:'datagrid_data1.json',method:'get',border:false,singleSelect:true,fit:true,fitColumns:true">
                        <thead>
                            <tr>
                                <th data-options="field:'itemid'" width="80">昵称</th>
                                <th data-options="field:'productid'" width="100">手机号</th>
                                <th data-options="field:'listprice',align:'right'" width="80">操作</th>
                            </tr>
                        </thead>
                        <c:if test="${list!=null}">
                            <c:forEach items="${list}" var="app">
                                <tr>
                                    <td>${app.nickName}</td>
                                    <td>${app.account}</td>
                                    <td><input type="checkbox" name="memberId"
                                        value="${app.memberId}" /></td>
                                </tr>
                            </c:forEach>
                        </c:if>


                    </table>
                    
                    <input type="hidden" name="hotelNo" id="hotelNo" value="${hotelNo}"/>
                    
                    <input type="hidden" name="couponId" id="couponId_to" 
                        readonly="readonly" value="${couponId }" /> <input id="all"
                        onclick="checkAll()" type="checkbox" />全选 <br /> <input
                        type="submit"  id="tishi" onclick="checkAll()" value="提交" />
                </form>
            </div>
        </div>
        </div>
        </div>
        
            <!-- js -->
            <script src="${APP_PATH}/layui/layui.js" charset="utf-8"></script>
<script src="${APP_PATH}/js/layer/layer-v3.1.1/layer/mobile/layer.js"
    type="text/javascript"></script>

</body>
</html>

 

Controller代码:

    
    /**
     * 优惠券批量分发给用户
     * @param qv
     * @return
     */
   @RequestMapping(value = "json", method = {RequestMethod.POST })
   public Object save(QueryVo qv,HttpServletRequest request,Model model){

         String hotelNo = request.getParameter("hotelNo");
         
         Hotel hotel = hotelService.queryHotelNoInfo(hotelNo);
         
        logger.info("优惠券Id:"+qv.getCouponId());
        logger.info("所有数组:"+qv.getMemberId());
       
        //判断是否为空
        if (qv.getMemberId()!=null)
        {      
           int size=java.lang.reflect.Array.getLength(qv.getMemberId());  //获取传过来的数组长度 
           System.out.println(size);
           
           String memberId[]=qv.getMemberId();//获取数组中的值
           
           String couponId=qv.getCouponId();//获取优惠券ID
           
           for (int i = 0; i < memberId.length; i++) {
               AccountCoupon ac = new AccountCoupon();
               ac.setMemberId(memberId[i]);
               ac.setCouponId(couponId);
         
               ac.setFrom(null);

               SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
               String date = sdf.format(new Date());
               ac.setReceiveDate(date);

               ac.setStatus(new Consts().COUPON_UNUSED);//默认状态 "待使用"
               ac.setUsedDate(null);
               List<AccountCoupon> list = new ArrayList<AccountCoupon>();
             
               list.add(ac);//添加到集合中
               logger.info("批量分发优惠券成功");
               accountCouponService.insertAccountCouponInfo(list);//批量插入数据
           
           }
           
          }     
        model.addAttribute("hotel", hotel);
        return "/Set/transit4";

   }

 

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

DAO和Service代码相同不变

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

 

Service实现类如下:

    @Override
    public void insertAccountCouponInfo(List<AccountCoupon> acs) {
        accountCouponMapper.insertAccountCouponInfo(acs);
        
    }

 

xml:

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

 

对应的实体如下:

public class AccountCoupon {
    /** 自增主键*/
    private String id;
    
    /** 用户id*/
    private String memberId;
    
    /** 优惠券id*/
    private String couponId;
    
    /** 状态  未领取0   待使用1   已使用2  已过期3  冻结4  已核销5*/
    private String status;
    
    /** 领取优惠券日期*/
    private String receiveDate;
    
    /** 优惠券来源发放或主动领取*/
    private String from;
    
    /** 使用日期*/
    private String usedDate;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getMemberId() {
        return memberId;
    }

    public void setMemberId(String memberId) {
        this.memberId = memberId;
    }

    public String getCouponId() {
        return couponId;
    }

    public void setCouponId(String couponId) {
        this.couponId = couponId;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getReceiveDate() {
        return receiveDate;
    }

    public void setReceiveDate(String receiveDate) {
        this.receiveDate = receiveDate;
    }

    public String getFrom() {
        return from;
    }

    public void setFrom(String from) {
        this.from = from;
    }

    public String getUsedDate() {
        return usedDate;
    }

    public void setUsedDate(String usedDate) {
        this.usedDate = usedDate;
    }
    
    

}

 

目录
相关文章
|
9月前
|
人工智能 API 开发者
HarmonyOS Next~鸿蒙应用框架开发实战:Ability Kit与Accessibility Kit深度解析
本书深入解析HarmonyOS应用框架开发,聚焦Ability Kit与Accessibility Kit两大核心组件。Ability Kit通过FA/PA双引擎架构实现跨设备协同,支持分布式能力开发;Accessibility Kit提供无障碍服务构建方案,优化用户体验。内容涵盖设计理念、实践案例、调试优化及未来演进方向,助力开发者打造高效、包容的分布式应用,体现HarmonyOS生态价值。
597 27
|
9月前
|
人工智能 自然语言处理 搜索推荐
ViDoRAG:开源多模态文档检索框架,多智能体推理+图文理解精准解析文档
ViDoRAG 是阿里巴巴通义实验室联合中国科学技术大学和上海交通大学推出的视觉文档检索增强生成框架,基于多智能体协作和动态迭代推理,显著提升复杂视觉文档的检索和生成效率。
652 8
ViDoRAG:开源多模态文档检索框架,多智能体推理+图文理解精准解析文档
|
9月前
|
机器学习/深度学习 人工智能 Java
Java机器学习实战:基于DJL框架的手写数字识别全解析
在人工智能蓬勃发展的今天,Python凭借丰富的生态库(如TensorFlow、PyTorch)成为AI开发的首选语言。但Java作为企业级应用的基石,其在生产环境部署、性能优化和工程化方面的优势不容忽视。DJL(Deep Java Library)的出现完美填补了Java在深度学习领域的空白,它提供了一套统一的API,允许开发者无缝对接主流深度学习框架,将AI模型高效部署到Java生态中。本文将通过手写数字识别的完整流程,深入解析DJL框架的核心机制与应用实践。
573 3
|
12月前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
Java 容器
【学习笔记】Jsp与Servlet技术
【学习笔记】Jsp与Servlet技术
293 0
|
SQL Java 数据库
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
该博客文章介绍了在JSP应用中使用Servlet查询SQL Server数据库的表信息,并通过JavaBean封装图书信息,将查询结果展示在Web页面上的方法。
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
|
前端开发 安全 Java
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
164 1
|
供应链 前端开发 Java
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
这篇文章通过一个服装库存管理系统的实例,展示了在Spring Boot项目中使用Ajax、JSON、layui、MVC架构和iframe等技术,涵盖了注册登录、权限管理、用户管理、库存管理等功能,并提供了系统运行环境和技术要求的详细说明。
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
|
自然语言处理 前端开发 Java
Servlet与JSP:Java Web开发的基石技术详解
【6月更文挑战第23天】Java Web的Servlet与JSP是动态网页的核心。Servlet是服务器端的Java应用,处理HTTP请求并响应;JSP则是结合HTML与Java代码的页面,用于动态内容生成。Servlet通过生命周期方法如`init()`、`service()`和`destroy()`工作,而JSP在执行时编译成Servlet。两者在MVC架构中分工,Servlet处理逻辑,JSP展示数据。尽管有Spring MVC等框架,Servlet和JSP仍是理解Web开发基础的关键。
332 12
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
【6月更文挑战第23天】构建Java Web应用,Servlet与JSP携手打造在线图书管理系统,涵盖需求分析、设计、编码到测试。通过实例展示了Servlet如何处理用户登录(如`LoginServlet`),JSP负责页面展示(如`login.jsp`和`bookList.jsp`)。应用基于MySQL数据库,包含用户和图书表。登录失败显示错误信息,成功后展示图书列表。部署到Tomcat服务器测试功能。此基础教程为深入Java Web开发奠定了基础。
328 10

热门文章

最新文章

推荐镜像

更多
  • DNS