SSM框架之批量增加示例(同步请求jsp视图解析)
准备环境: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;
}
}
SSM框架之批量增加示例(同步请求jsp视图解析)的更多相关文章
- ssm框架如果想要跨域请求,cors跨域
<!-- 跨域 --> <mvc:cors> <mvc:mapping path="/**"/> </mvc:cors> 在spri ...
- ssm框架下怎么批量删除数据?
ssm框架下批量删除怎么删除? 1.单击删除按钮选中选项后,跳转到js函数,由函数处理 2. 主要就是前端的操作 js 操作(如何全选?如何把选中的数据传到Controller中) 3.fun()函数 ...
- Java SSM 框架相关基础面试题
一.Spring 面试题 1. Spring 在 SSM 中起什么作用? Spring 是轻量级框架,作用是作为 Bean 工厂,用来管理 Bean 的声明周期和框架集成. Spring 的两大核心: ...
- SSM框架面试题及答案整理
一.Spring面试题 1.Spring 在ssm中起什么作用? Spring:轻量级框架 作用:Bean工厂,用来管理Bean的生命周期和框架集成. 两大核心:①. IOC/DI(控制反转/依赖注入 ...
- 9月腾讯、百度、阿里高频的29道SSM框架面试题解析
一.Spring面试题 1.Spring 在ssm中起什么作用? Spring:轻量级框架 作用:Bean工厂,用来管理Bean的生命周期和框架集成. 两大核心:1.IOC/DI(控制反转/依赖注入) ...
- 使用idea实现SSM框架整合
SM框架整合 1 使用idea创建一个maven webapp项目 到此为止项目初步建立,需要等待maven对项目结构进行组织,直到状态栏的进度条完成,且项目的目录结构如下: 2 ...
- SSM框架(1)
Spring MVC Framework有这样一些特点: 它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是java组件.并且和Spring提供的其他基础结构紧密集成. 不依 ...
- 搭建ssm框架经验
要想搭建好ssm框架的开发环境.首先我们需要知道ssm是什么?ssm就是spring,springmvc,mybatis. 然后我们要知道,他们分别都是怎样实现的和做什么用的,充当什么角色?这样我们就 ...
- 整合SSM框架必备基础—SpringMVC(下)
在上一篇文章<整合SSM框架必备基础-SpringMVC(上)>中,胖达介绍了关于SpringMVC的诞生.优势以及执行流程等理论知识点,这篇文章打算在实操中加深一下对SpringMVC的 ...
随机推荐
- sys模块 常用函数
sys模块是和python解释器打交道的 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1) s ...
- Oracle中的锁
Oracle中的锁 锁是一种机制,多个事务同时访问一个数据库对象时,该机制可以实现对并发的控制 按照用户系统锁可以分为自动锁和显示锁. 自动锁(系统上锁):DML锁.DDL锁.systemlocks锁 ...
- 基于jQuery的软键盘
基于jQuery的软键盘 前些天写了一个基于基于jQuery的数字键盘,今天给大家带来一个基于jQuery的全字母键盘插件(支持全字母大小写切换,数字输入,退格清除,关闭功能,可调整大小和键盘位置 ...
- 【代码笔记】iOS-获取现在的日历时间
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...
- CentOS7系列--1.6CentOS7配置sudo
CentOS7配置sudo 如果一些用户共享权限,配置sudo是为了分离用户的职责 1. 将root 的权限传递给所有用户 [root@centos7 ~]# visudo 添加下面的内容到最后一行, ...
- 数据是ERP系统搭建的基础,但,不要让数据毁了ERP
很难想象没有数据的ERP是什么样子的.然而,实际情况又是如何的呢? 根据AMT的研究,在那些上线不成功或者上线后掉线的案例中,有高达70%的项目都有一个共同的直接原因,那就是在数据上出了问题.有的是在 ...
- Spark2.x详解
一.概述 Apache Spark 是一个快速的, 多用途的集群计算系统. 它提供了 Java, Scala, Python 和 R 的高级 API,以及一个支持通用的执行图计算的优化过的引擎. 它还 ...
- RxJava + Retrofit完成网络请求
1.前言 本文基于RxJava.Retrofit的使用,若是对RxJava或Retrofit还不了解的简友可以先了解RxJava.Retrofit的用法再来看这篇文章. 在这片文章之前分别单独介绍过R ...
- java应用破解之破解 jeb mips 2.3.3
前言 jeb 的新版支持 mips的反编译 ,于是去官网申请一个试用版,试用版的限制还是比较多的,比如 使用时间验证,没法复制粘贴 等,于是想尝试看看能否破解,同时填了 java破解 这个坑. 修改版 ...
- 在weblogic下部署找不到授权文件的解决方法
很多用户在weblogic上部署的时候,会遇到类似的报错信息,提示授权找不到,解决这个问题的思路如下: 第一步确定授权的没有过期, 客户如果修改了系统时间,会对授权生效产生影响,在进行操作前先将 ...