在本月我们学习了redis的缓存,数据导入,导出 ,图片的上传,MQ以及柱状图和饼状图,这里总结了开发中一些常用的功能,以及处理异常的方法,若本文对你有所收获,请一键三连,就是对我最大的支持。

redis 的缓存:

首先我们需要导入redis 的jar包:

       <!--jedis整合jar包-->
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.0.1</version>
</dependency>

applicationContext.xml  需要配置:

<!-- =======================jedis配置=========================== -->
<bean id="jedisPollConfig" class="redis.clients.jedis.JedisPoolConfig"><property name="maxTotal" value="50" /><property name="maxIdle" value="20" /><property name="testOnBorrow" value="true" />
</bean>
<bean id="jedisPool" class="redis.clients.jedis.JedisPool"><constructor-arg name="poolConfig" ref="jedisPollConfig" /><constructor-arg name="host" value="localhost" /><constructor-arg name="port" value="6379" /><constructor-arg name="timeout" value="10000" /><constructor-arg name="password" value="root" />
</bean>

在Controller中注意:要加注解

@Autowired
private JedisPool  jedisPool;

在实体类中要加@GeneratedValue(generator = "JDBC")

增加的时候:

                String json = JSONObject.toJSONString(actore);//       String 类型的    jedisPool.getResource().set(actore.getId()+"",json);
//             使用Hash类型jedisPool.getResource().hset("actore",actore.getId()+"",json);

删除的时候:

jedisPool.getResource().del(id);

导入的前端代码:

<%--导入--%>
<div class="modal fade" id="modal_actor_import" role="dialog" aria-labelledby="modal_actor_import" aria-hidden="true"><div class="modal-dialog"><div class="modal-content"><div class="modal-body"><form id="form_import" method="post" action="import1.htm" enctype="multipart/form-data"><input type="file" name="impfile"/><div class="modal-footer"><button type="submit" class="btn btn-primary">保存</button><button type="button" class="btn btn-default" data-dismiss="modal">关闭</button></div></form></div></div></div></div>

隐藏显示:

        var validator = $("#form_import").validate({submitHandler: function (form) {$(form).ajaxSubmit({dataType: "json",success: function (data) {if (data.success && !data.errorMsg) {validator.resetForm();$('#modal_actor_import').modal('hide');$("#btn_search").click();} else {$("#select_message").text(data.errorMsg);$("#alertmod_table_actor_mod").show();}}});}});

Controller中:

@RequestMapping("/import1")public void import1 (MultipartFile impfile,HttpServletResponse response) throws Exception {//      创建空的工作薄HSSFWorkbook workbook = new HSSFWorkbook(impfile.getInputStream());//       获取表HSSFSheet sheetAt = workbook.getSheetAt(0);//       获取最后一个交表int lastRowNum = sheetAt.getLastRowNum();for (int i = 1; i <=lastRowNum; i++) {HSSFRow row = sheetAt.getRow(i);String name = row.getCell(0).getStringCellValue();int filmLength = (int)row.getCell(1).getNumericCellValue();String spec = row.getCell(2).getStringCellValue();String bir = row.getCell(3).getStringCellValue();String state = row.getCell(4).getStringCellValue();String img = row.getCell(5).getStringCellValue();String cname = row.getCell(6).getStringCellValue();int cid;Complees b = new Complees();b.setName(cname);List<Complees>  list=compleesMapper.select(b);if(list==null||list.size()==0){compleesMapper.insertSelective(b);cid=b.getCid();}else {cid=list.get(0).getCid();}
////                1姓名为黑海,部门为随时约---导入数据库    if(name.equals("黑海")&&cid==1){
//
//              }
//              2导入状态为是的信息,导入数据库
//              if(state.equals("是")){
//
//              }//大于2012年的导入数据库Date d2 = new SimpleDateFormat("yyyy-MM-dd").parse("2012-10-10");Date d1 = new SimpleDateFormat("yyyy-MM-dd").parse(bir);
//                if(d1.compareTo(d2)>0){
//
//                }Actore a = new Actore();a.setName(name);a.setState(state.equals("是")?1:0);a.setImg(img);a.setFilmLength(filmLength);a.setBir(d1);a.setCid(cid);a.setSpec(spec);actoreService.addActore(a);}//8.给前端返回结果JSONObject result=new JSONObject();result.put("success", true);WriterUtil.write(response, result.toString());}

导出前端:

导出$("#btn_export").click(function () {location.href = "export1.htm";});//导入$("#btn_import").click(function () {$('#modal_actor_import').modal('show');});

后台:

 @RequestMapping("/export1")public void export1(HttpServletResponse response) throws Exception {//创建空的工作薄HSSFWorkbook workbook = new HSSFWorkbook();//       创建空的表HSSFSheet sheet = workbook.createSheet();//创建一个数组String[] tital = {"姓名", "个数", "爱好", "时间", "是否上架", "图片", "所属公司"};HSSFRow row = sheet.createRow(0);for (int i = 0; i < tital.length; i++) {row.createCell(i).setCellValue(tital[i]);}//        查询数据库List<Actor> list = actorService.fan3();for (int i = 0; i < list.size(); i++) {row = sheet.createRow(i + 1);row.createCell(0).setCellValue(list.get(i).getName());row.createCell(1).setCellValue(list.get(i).getFilmLength());row.createCell(2).setCellValue(list.get(i).getSpec());row.createCell(3).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(list.get(i).getBir()));row.createCell(4).setCellValue(list.get(i).getState()==1?"是":"否");row.createCell(5).setCellValue(list.get(i).getImg());row.createCell(6).setCellValue(list.get(i).getCname());}//7.把工作簿对象返回给前端浏览response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("艺人列表.xls", "UTF-8"));response.setHeader("Connection", "close");response.setHeader("Content-Type", "application/octet-stream");workbook.write(response.getOutputStream());workbook.close();}

MQ的配置:

导入两个xml文件:注意在web.xml一定要修改*.否则报错

<param-value>classpath:applicationContext*.xml</param-value>

Controller:

         @Autowiredprivate JmsTemplate  jmsTemplate;@Autowiredprivate Destination   destination;jmsTemplate.send(destination, new MessageCreator() {@Overridepublic Message createMessage(Session session) throws JMSException {String json = JSONObject.toJSONString(actore);TextMessage textMessage = session.createTextMessage();return textMessage;}});

异常总结:

package com.xiaoshu.listener;import com.alibaba.fastjson.JSONObject;
import com.xiaoshu.entity.Actor;
import com.xiaoshu.entity.Actore;
import org.springframework.beans.factory.annotation.Autowired;
import redis.clients.jedis.JedisPool;import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;public class MQMessageListener   implements MessageListener {@Autowiredprivate JedisPool  jedisPool;@Overridepublic void onMessage(Message message) {TextMessage   textMessage=(TextMessage) message;String json = null;try {json = textMessage.getText();} catch (JMSException e) {e.printStackTrace();}Actore actor = JSONObject.parseObject(json, Actore.class);jedisPool.getResource().set(actor.getId()+"",json);}
}

前端代码:

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<!DOCTYPE html>
<html>
<head><title>用户主页</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><%@ include file="/WEB-INF/common.jsp" %><linkhref="${path }/resources/css/plugins/bootstrap-table/bootstrap-table.min.css"rel="stylesheet"><link href="${path }/resources/css/animate.css" rel="stylesheet"><link href="${path }/resources/css/style.css?v=4.1.0" rel="stylesheet"></head>
<body class="gray-bg">
<div class="panel-body"><div id="toolbar" class="btn-group"><c:forEach items="${operationList}" var="oper"><privilege:operation operationId="${oper.operationid }" id="${oper.operationcode }"name="${oper.operationname }" clazz="${oper.iconcls }"color="#093F4D"></privilege:operation></c:forEach></div><div class="row"><div class="col-lg-2"><div class="input-group"><span class="input-group-addon">用戶名 </span><input type="text" name="actorname" class="form-control" id="txt_search_actorname"></div></div><div class="col-lg-2"><div class="input-group"><span class="input-group-addon">角色</span><select class="form-control" name="txt_search_roleid" id="txt_search_roleid"><option value="">---请选择---</option><c:forEach items="${roleList }" var="r"><option value="${r.cid }">${r.name}</option></c:forEach></select></div></div><div class="form-horizontal m-t"><div class="form-group col-lg-7"><label class="col-sm-2 control-label">操作时间</label><div class="col-sm-8"><input placeholder="开始时间" id="txt_search_start" name="start"class="laydate-icon form-control layer-date"/><input placeholder="结束时间" id="txt_search_end" name="end"class="laydate-icon form-control layer-date"/></div></div></div><button id="btn_search" type="button" class="btn btn-default"><span class="glyphicon glyphicon-search" aria-hidden="true"></span>查询</button></div><table id="table_actor"></table></div><!-- 新增和修改对话框 -->
<div class="modal fade" id="modal_actor_edit" role="dialog" aria-labelledby="modal_actor_edit" aria-hidden="true"><div class="modal-dialog"><div class="modal-content"><div class="modal-body"><form id="form_actor" method="post" action="reserveActor.htm" enctype="multipart/form-data"><input type="hidden" name="id" id="hidden_txt_actorid" value=""/><table style="border-collapse:separate; border-spacing:0px 10px;"><tr><td>姓名:</td><td><input type="text" id="name" name="name"class="form-control" aria-required="true" required/></td></tr><tr><td>个数:</td><td><input type="text" id="filmLength" name="filmLength"class="form-control" aria-required="true" required/></td></tr><tr><td>爱好:</td><td><input type="checkbox" name="spec" value="学习">学习<input type="checkbox" name="spec" value="看书">看书<input type="checkbox" name="spec" value="看电视">看电视</td></tr><tr><td>时间:</td><td><input placeholder="开始时间" id="bir" name="bir"class="laydate-icon form-control layer-date"/></td></tr><tr><td>状态:</td><td><input type="radio" name="state" value="0">否<input type="radio" name="state" value="1">是</td></tr><tr><td>照片 :</td><td><input type="file" name="poto"><img src="" alt="" width="50px" id="img"></td></tr><tr><td>所属部门:</td><td colspan="4"><select class="form-control" name="cid" id="cid" aria-required="true" required><option value="">---请选择---</option><c:forEach items="${roleList }" var="r"><option value="${r.cid }">${r.name }</option></c:forEach></select></td></tr></table><div class="modal-footer"><button type="button" class="btn btn-primary" id="submit_form_actor_btn">保存</button><button type="button" class="btn btn-default" data-dismiss="modal">关闭</button></div></form></div></div></div></div><%--导入--%>
<div class="modal fade" id="modal_actor_import" role="dialog" aria-labelledby="modal_actor_import" aria-hidden="true"><div class="modal-dialog"><div class="modal-content"><div class="modal-body"><form id="form_import" method="post" action="import1.htm" enctype="multipart/form-data"><input type="file" name="impfile"/><div class="modal-footer"><button type="submit" class="btn btn-primary">保存</button><button type="button" class="btn btn-default" data-dismiss="modal">关闭</button></div></form></div></div></div></div><%--柱状图--%>
<div class="modal fade" id="modal_actor_zzt" role="dialog" aria-labelledby="modal_actor_zzt" aria-hidden="true"><div class="modal-dialog"><div class="modal-content"><div class="modal-body"><!-- 为 ECharts 准备一个定义了宽高的 DOM --><div id="main" style="width: 600px;height:400px;"></div></div></div></div>
</div><!--删除对话框 -->
<div class="modal fade" id="modal_actor_del" role="dialog" aria-labelledby="modal_actor_del" aria-hidden="true"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h4 class="modal-title" id="modal_actor_del_head"> 刪除 </h4></div><div class="modal-body">删除所选记录?</div><div class="modal-footer"><button type="button" class="btn btn-danger" id="del_actor_btn">刪除</button><button type="button" class="btn btn-default" data-dismiss="modal">取消</button></div></div></div>
</div><div class="ui-jqdialog modal-content" id="alertmod_table_actor_mod"dir="ltr" role="dialog"aria-labelledby="alerthd_table_actor" aria-hidden="true"style="width: 200px; height: auto; z-index: 2222; overflow: hidden;top: 274px; left: 534px; display: none;position: absolute;"><div class="ui-jqdialog-titlebar modal-header" id="alerthd_table_actor"style="cursor: move;"><span class="ui-jqdialog-title" style="float: left;">注意</span> <a id="alertmod_table_actor_mod_a"class="ui-jqdialog-titlebar-close"style="right: 0.3em;"> <spanclass="glyphicon glyphicon-remove-circle"></span></a></div><div class="ui-jqdialog-content modal-body" id="alertcnt_table_actor"><div id="select_message"></div><span tabindex="0"> <span tabindex="-1" id="jqg_alrt"></span></span></div><divclass="jqResize ui-resizable-handle ui-resizable-se glyphicon glyphicon-import"></div>
</div><!-- Peity-->
<script src="${path }/resources/js/plugins/peity/jquery.peity.min.js"></script><!-- Bootstrap table-->
<script src="${path }/resources/js/plugins/bootstrap-table/bootstrap-table.min.js"></script>
<script src="${path }/resources/js/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.min.js"></script><!-- 自定义js-->
<script src="${path }/resources/js/content.js?v=1.0.0"></script><script src="${path }/resources/js/echarts.js"></script><!-- jQuery Validation plugin javascript-->
<script src="${path }/resources/js/plugins/validate/jquery.validate.min.js"></script>
<script src="${path }/resources/js/plugins/validate/messages_zh.min.js"></script><!-- jQuery form  -->
<script src="${path }/resources/js/jquery.form.min.js"></script>
<!-- layerDate plugin javascript -->
<script src="${path }/resources/js/plugins/layer/laydate/laydate.js"></script><script type="text/javascript">Date.prototype.Format = function (fmt) {var o = {"M+": this.getMonth() + 1, //月份"d+": this.getDate(), //日"H+": this.getHours(), //小时"m+": this.getMinutes(), //分"s+": this.getSeconds(), //秒"S": this.getMilliseconds() //毫秒};if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));for (var k in o)if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));return fmt;};//外部js调用laydate({elem: '#bir', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'event: 'focus', //响应事件。如果没有传入event,则按照默认的clickformat: 'YYYY-MM-DD'// 日期格式});//外部js调用laydate({elem: '#txt_search_start', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'event: 'focus', //响应事件。如果没有传入event,则按照默认的clickformat: 'YYYY-MM-DD'// 日期格式});laydate({elem: '#txt_search_end',event: 'focus',format: 'YYYY-MM-DD'});$(function () {init();$("#btn_search").bind("click", function () {//先销毁表格$('#table_actor').bootstrapTable('destroy');init();});var validator = $("#form_actor").validate({submitHandler: function (form) {$(form).ajaxSubmit({dataType: "json",success: function (data) {if (data.success && !data.errorMsg) {validator.resetForm();$('#modal_actor_edit').modal('hide');$("#btn_search").click();} else {$("#select_message").text(data.errorMsg);$("#alertmod_table_actor_mod").show();}}});}});var validator = $("#form_import").validate({submitHandler: function (form) {$(form).ajaxSubmit({dataType: "json",success: function (data) {if (data.success && !data.errorMsg) {validator.resetForm();$('#modal_actor_import').modal('hide');$("#btn_search").click();} else {$("#select_message").text(data.errorMsg);$("#alertmod_table_actor_mod").show();}}});}});$("#submit_form_actor_btn").click(function () {$("#form_actor").submit();});});var init = function () {//1.初始化Tablevar oTable = new TableInit();oTable.Init();//2.初始化Button的点击事件var oButtonInit = new ButtonInit();oButtonInit.Init();};var TableInit = function () {var oTableInit = new Object();//初始化TableoTableInit.Init = function () {$('#table_actor').bootstrapTable({url: 'actorList.htm',         //请求后台的URL(*)method: 'post',                      //请求方式(*)contentType: "application/x-www-form-urlencoded",toolbar: '#toolbar',                //工具按钮用哪个容器striped: true,                      //是否显示行间隔色cache: false,                       //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)pagination: true,                   //是否显示分页(*)sortable: true,                     //是否启用排序sortName: "id",sortOrder: "asc",                   //排序方式queryParams: oTableInit.queryParams,//传递参数(*)sidePagination: "server",           //分页方式:client客户端分页,server服务端分页(*)pageNumber: 1,                       //初始化加载第一页,默认第一页pageSize: 10,                       //每页的记录行数(*)pageList: [10, 25, 50, 75, 100],    //可供选择的每页的行数(*)search: false,                       //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大strictSearch: true,showColumns: true,                  //是否显示所有的列showRefresh: false,                  //是否显示刷新按钮minimumCountColumns: 2,             //最少允许的列数clickToSelect: true,                //是否启用点击选中行// height: 500,                        //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度uniqueId: "actorid",                     //每一行的唯一标识,一般为主键列showToggle: true,                    //是否显示详细视图和列表视图的切换按钮cardView: false,                    //是否显示详细视图detailView: false,                   //是否显示父子表columns: [{checkbox: true},{field: 'id',title: '编号',sortable: true},{field: 'name',title: '姓名',sortable: true}, {field: 'filmLength',title: '个数',sortable: true}, {field: 'spec',title: '爱好',sortable: true}, {field: 'bir',title: '时间',sortable: true,formatter: function (value, row, index) {return new Date(value).Format('yyyy-MM-dd');}}, {field: 'state',title: '是否上架',sortable: true,formatter: function (value, row, index) {return value == 0 ? "否" : "是";}}, {field: 'img',title: '图片',sortable: true,formatter: function (value, row, index) {return "<img    src='/resources/img/" + value + "'  width='50px'>";}}, {field: 'cname',title: '所属公司',sortable: true}],onClickRow: function (row) {$("#alertmod_table_actor_mod").hide();}});};//得到查询的参数oTableInit.queryParams = function (params) {var temp = {//这里的键的名字和控制器的变量名必须一致,这边改动,控制器也需要改成一样的limit: params.limit,   //页面大小offset: params.offset,  //页码name: $("#txt_search_actorname").val(),cid: $("#txt_search_roleid").val(),start: $("#txt_search_start").val(),end: $("#txt_search_end").val(),actortype: $("#txt_search_actortype").val(),search: params.search,order: params.order,ordername: params.sort};return temp;};return oTableInit;};var ButtonInit = function () {var oInit = new Object();var postdata = {};oInit.Init = function () {//初始化页面上面的按钮事件$("#btn_add").click(function () {$('#password').attr("readOnly", false).val(getSelection.password);$("#form_actor").resetForm();document.getElementById("hidden_txt_actorid").value = '';$('#modal_actor_edit').modal({backdrop: 'static', keyboard: false});$('#modal_actor_edit').modal('show');});$("#btn_edit").click(function () {var getSelections = $('#table_actor').bootstrapTable('getSelections');if (getSelections && getSelections.length == 1) {initEditActor(getSelections[0]);$('#modal_actor_edit').modal({backdrop: 'static', keyboard: false});$('#modal_actor_edit').modal('show');} else {$("#select_message").text("请选择其中一条数据");$("#alertmod_table_actor_mod").show();}});//柱状图$("#btn_zzt").click(function () {$.ajax({url: "findCount.htm",dataType: "json",type: "post",success: function (res) {var xdate = new Array();var ydate = new Array();for (var i = 0; i < res.length; i++) {xdate.push(res[i].cname == 1 ? "是" : "否");ydate.push(res[i].num)}// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('main'));// 指定图表的配置项和数据var option = {title: {text: '每个公司人数'},tooltip: {},legend: {data: ['人数']},xAxis: {data: xdate},yAxis: {},series: [{name: '人数',type: 'bar',data: ydate}]};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);$('#modal_actor_zzt').modal('show');}});});//    饼图;$("#btn_bt").click(function () {$.ajax({url: "findCount.htm",dataType: "json",type: "post",success: function (res) {var xdate = new Array();for (var i = 0; i < res.length; i++) {xdate.push({value: res[i].num, name: res[i].pname})}// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('main1'));// 指定图表的配置项和数据option = {title: {text: '每个公司人数',subtext: '数据来源网络',left: 'center'},tooltip: {trigger: 'item'},legend: {orient: 'vertical',left: 'left',},series: [{name: '访问来源',type: 'pie',radius: '50%',data: xdate,emphasis: {itemStyle: {shadowBlur: 10,shadowOffsetX: 0,shadowColor: 'rgba(0, 0, 0, 0.5)'}}}]};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);$('#modal_tbbook_bt').modal('show');}});});$("#btn_delete").click(function () {var getSelections = $('#table_actor').bootstrapTable('getSelections');if (getSelections && getSelections.length > 0) {$('#modal_actor_del').modal({backdrop: 'static', keyboard: false});$("#modal_actor_del").show();} else {$("#select_message").text("请选择数据");$("#alertmod_table_actor_mod").show();}});$("#btn_export").click(function () {location.href = "export1.htm";});//$("#btn_import").click(function () {$('#modal_actor_import').modal('show');});};return oInit;};$("#alertmod_table_actor_mod_a").click(function () {$("#alertmod_table_actor_mod").hide();});function initEditActor(getSelection) {$('#hidden_txt_actorid').val(getSelection.id);$('#cid').val(getSelection.cid);$('#name').val(getSelection.name);$('#filmLength').val(getSelection.filmLength);$("input[name=state][type=radio][value=" + getSelection.state + "]").prop("checked", true);$('#bir').val(new Date(getSelection.bir).Format('yyyy-MM-dd'));$("#img").prop("src", "/resources/img/" + getSelection.img);var arr = getSelection.spec.split(",")$("input[name=spec]").prop("checked", false);for (var i = 0; i < arr.length; i++) {$("input[name=spec][type=checkbox][value=" + arr[i] + "]").prop("checked", true);}}$("#del_actor_btn").click(function () {var getSelections = $('#table_actor').bootstrapTable('getSelections');var idArr = new Array();var ids;getSelections.forEach(function (item) {idArr.push(item.id);});ids = idArr.join(",");$.ajax({url: "deleteActor.htm",dataType: "json",data: {"ids": ids},type: "post",success: function (res) {if (res.success) {$('#modal_actor_del').modal('hide');$("#btn_search").click();} else {$("#select_message").text(res.errorMsg);$("#alertmod_table_actor_mod").show();}}});});
</script></body>
</html>

后台所有代码:

package com.xiaoshu.controller;import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import com.xiaoshu.config.util.ConfigUtil;
import com.xiaoshu.dao.CompleeMapper;
import com.xiaoshu.entity.Complee;
import com.xiaoshu.entity.Operation;
import com.xiaoshu.entity.Role;
import com.xiaoshu.entity.Actor;
import com.xiaoshu.service.OperationService;
import com.xiaoshu.service.RoleService;
import com.xiaoshu.service.ActorService;
import com.xiaoshu.util.StringUtil;
import com.xiaoshu.util.WriterUtil;
import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
import redis.clients.jedis.JedisPool;import javax.jms.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.List;@Controller
@RequestMapping("actor")
public class ActorController extends LogController {static Logger logger = Logger.getLogger(ActorController.class);@Autowiredprivate ActorService actorService;@Autowiredprivate RoleService roleService;@Autowiredprivate OperationService operationService;@Autowiredprivate CompleeMapper compleeMapper;@Autowiredprivate JedisPool jedisPool;@Autowiredprivate JmsTemplate  jmsTemplate;@Autowiredprivate Destination  destination;@RequestMapping("actorIndex")public String index(HttpServletRequest request, Integer menuid) throws Exception {
//      List<Role> roleList = roleService.findRole(new Role());List<Complee> roleList = compleeMapper.selectAll();List<Operation> operationList = operationService.findOperationIdsByMenuid(menuid);request.setAttribute("operationList", operationList);request.setAttribute("roleList", roleList);return "actor";}@RequestMapping(value = "actorList", method = RequestMethod.POST)public void actorList(Actor actor, HttpServletRequest request, HttpServletResponse response, String offset, String limit) throws Exception {try {String order = request.getParameter("order");String ordername = request.getParameter("ordername");Integer pageSize = StringUtil.isEmpty(limit) ? ConfigUtil.getPageSize() : Integer.parseInt(limit);Integer pageNum = (Integer.parseInt(offset) / pageSize) + 1;PageInfo<Actor> actorList = actorService.findActorPage(actor, pageNum, pageSize, ordername, order);JSONObject jsonObj = new JSONObject();jsonObj.put("total", actorList.getTotal());jsonObj.put("rows", actorList.getList());WriterUtil.write(response, jsonObj.toString());} catch (Exception e) {e.printStackTrace();logger.error("用户展示错误", e);throw e;}}// 新增或修改@RequestMapping("reserveActor")public void reserveActor(MultipartFile poto, HttpServletRequest request, final Actor actor, HttpServletResponse response) {Integer actorId = actor.getId();JSONObject result = new JSONObject();try {if (poto.getSize() > 0) {String fname = poto.getOriginalFilename();String realPath = request.getSession().getServletContext().getRealPath("/resources/img");poto.transferTo(new File(realPath, fname));actor.setImg(fname);}if (actorId != null) {   // actorId不为空 说明是修改Actor actorName = actorService.existActorWithActorName(actor.getName());if (actorName == null || actorName.getId().compareTo(actorId) == 0) {actor.setId(actorId);String json = JSONObject.toJSONString(actor);jedisPool.getResource().set(actor.getId() + "", json);actorService.updateActor(actor);result.put("success", true);} else {result.put("success", true);result.put("errorMsg", "该用户名被使用");}} else {   // 添加if (actorService.existActorWithActorName(actor.getName()) == null) {  // 没有重复可以添加actorService.addActor(actor);String json = JSONObject.toJSONString(actor);jedisPool.getResource().set(actor.getId() + "", json);jmsTemplate.send(destination, new MessageCreator() {@Overridepublic Message createMessage(Session session) throws JMSException {String json = JSONObject.toJSONString(actor);TextMessage textMessage = session.createTextMessage();return textMessage;}});result.put("success", true);} else {result.put("success", true);result.put("errorMsg", "该用户名被使用");}}} catch (Exception e) {e.printStackTrace();logger.error("保存用户信息错误", e);result.put("success", true);result.put("errorMsg", "对不起,操作失败");}WriterUtil.write(response, result.toString());}@RequestMapping("/import1")public void import1(MultipartFile impfile, HttpServletResponse response) throws Exception {//      创建空的工作薄HSSFWorkbook workbook = new HSSFWorkbook(impfile.getInputStream());//       获取表HSSFSheet sheetAt = workbook.getSheetAt(0);//       获取最后一个交表int lastRowNum = sheetAt.getLastRowNum();for (int i = 1; i <= lastRowNum; i++) {HSSFRow row = sheetAt.getRow(i);String name = row.getCell(0).getStringCellValue();int filmLength = (int) row.getCell(1).getNumericCellValue();String spec = row.getCell(2).getStringCellValue();String bir = row.getCell(3).getStringCellValue();String state = row.getCell(4).getStringCellValue();String img = row.getCell(5).getStringCellValue();String cname = row.getCell(6).getStringCellValue();int cid;Complee b = new Complee();b.setName(cname);
//            查询数据库List<Complee> list = compleeMapper.select(b);if (list == null || list.size() == 0) {compleeMapper.insertSelective(b);cid = b.getCid();} else {cid = list.get(0).getCid();}
//创建对象,存进去Actor a = new Actor();a.setName(name);a.setImg(img);a.setFilmLength(filmLength);a.setBir(new SimpleDateFormat("yyyy-MM-dd").parse(bir));a.setCid(cid);a.setSpec(spec);a.setState(Integer.parseInt(state.equals("是") ? "1" : "0"));actorService.addActor(a);}//8.给前端返回结果JSONObject result = new JSONObject();result.put("success", true);WriterUtil.write(response, result.toString());}@RequestMapping("/export1")public void export1(HttpServletResponse response) throws Exception {//创建空的工作薄HSSFWorkbook workbook = new HSSFWorkbook();//       创建空的表HSSFSheet sheet = workbook.createSheet();//创建一个数组String[] tital = {"姓名", "个数", "爱好", "时间", "是否上架", "图片", "所属公司"};HSSFRow row = sheet.createRow(0);for (int i = 0; i < tital.length; i++) {row.createCell(i).setCellValue(tital[i]);}//        查询数据库List<Actor> list = actorService.fan3();for (int i = 0; i < list.size(); i++) {row = sheet.createRow(i + 1);row.createCell(0).setCellValue(list.get(i).getName());row.createCell(1).setCellValue(list.get(i).getFilmLength());row.createCell(2).setCellValue(list.get(i).getSpec());row.createCell(3).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(list.get(i).getBir()));row.createCell(4).setCellValue(list.get(i).getState()==1?"是":"否");row.createCell(5).setCellValue(list.get(i).getImg());row.createCell(6).setCellValue(list.get(i).getCname());}//7.把工作簿对象返回给前端浏览response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("艺人列表.xls", "UTF-8"));response.setHeader("Connection", "close");response.setHeader("Content-Type", "application/octet-stream");workbook.write(response.getOutputStream());workbook.close();}@RequestMapping("findCount")public void findCount(HttpServletResponse response) {List<Actor> list = actorService.asda();String result = JSONObject.toJSONString(list);WriterUtil.write(response, result.toString());}@RequestMapping("deleteActor")public void delActor(HttpServletRequest request, HttpServletResponse response) {JSONObject result = new JSONObject();try {String[] ids = request.getParameter("ids").split(",");for (String id : ids) {actorService.deleteActor(Integer.parseInt(id));}result.put("success", true);result.put("delNums", ids.length);} catch (Exception e) {e.printStackTrace();logger.error("删除用户信息错误", e);result.put("errorMsg", "对不起,删除失败");}WriterUtil.write(response, result.toString());}}

异常总结:

Mapper里面的代码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xiaoshu.dao.ActoreMapper"><!--全文搜索,开始时间以及结束时间,部门下拉框--><select id="famlisy" resultType="Actore" parameterType="Actore">select a.*,c.name   cname from actore  a ,complees  c where a.cid=c.cid<if test="name!=null   and  name.trim()!=''">and (a.name   like  '%${name}%'   or  c.name  like  '%${name}%'  or   spec   like '%${name}%')</if><if test="start!=null">and   bir  &gt;=#{start}</if><if test="end!=null">and   bir  &lt;=#{end}</if><if test="cid!=null   and   cid!=0">and  a.cid;=#{cid}</if><if test="filmLength!=null   and   filmLength==1">and  a.film_length   &lt;=30</if><if test="filmLength!=null   and   filmLength==2">and  a.film_length    between      31  and   90</if><if test="filmLength!=null   and   filmLength==3">and  a.film_length   &gt;=91</if></select>
<!--统计部门的个数--><select id="famlisy2" resultType="Actore">
select c.name   cname,  count(a.id)  num   from actore  a ,complees  c where a.cid=c.cid  GROUP BY  c.cid</select><!--统计是否上架的个数--><select id="famlisy3" resultType="Actore">
select state  cname,  count(state)  num   from actore  a ,complees  c where a.cid=c.cid  GROUP BY  state</select></mapper>

异常总结:

展示效果:

修改的回显:

导出:

柱状图:

饼图

好文推荐:

JavaWeb异常总结

JavaEE综合案例

宿舍管理开发流程

大数据ssm项目案例总结相关推荐

  1. AntDB 落地某省电信大数据中心项目的性能优化案例分享

    亚信科技AntDB 落地某省电信大数据中心项目的性能优化案例分享 某省电信大数据中心项目采购了一套亚信科技AntDB 3.1分布式数据库,2018年8月初开始建设,建设周期一个月.9月份投入运行后,至 ...

  2. 数据科学与大数据技术的案例_作为数据科学家解决问题的案例研究

    数据科学与大数据技术的案例 There are two myths about how data scientists solve problems: one is that the problem ...

  3. BDTC 2017 | “TOP10大数据应用最佳案例实践”十佳获奖单位精彩分享

    [CSDN现场报道]12月7-9日,由中国计算机学会主办,CCF 大数据专家委员会承办,中国科学院计算技术研究所.中科天玑数据科技股份有限公司.CSDN协办的2017中国大数据技术大会(BDTC 20 ...

  4. 东华软件张涵诚:政府大数据应用的案例和数据价值释放的方法

    作者:张涵诚 在我国,政府部门掌握着全社会量最大.最核心的数据.以往地方政府提振经济一般是招房地产.工厂等,随着土地及人口红利殆尽,大数据成为与水电煤等一样重要的生产资料,成为继土地之后政府最重要的资 ...

  5. 海南省大数据管理局项目建设处刘雄:区块链技术在海南政务服务领域的典型应用

    12月26日,2021CCF中国区块链技术大会在海南海口举办,本次会议由中国计算机学会(CCF)主办,中国计算机学会区块链专业委员会.海南大学承办,中科国鼎数据科学研究院协办.大会战略合作媒体巴比特现 ...

  6. 大数据之Spark案例实操完整使用(第六章)

    大数据之Spark案例实操完整使用 一.案例一 1.准备数据 2.需求 1:Top10 热门品类 3.需求说明 方案一. 实现方案二 实现方案三 二 .需求实现 1.需求 2:Top10 热门品类中每 ...

  7. 大数据产品开发流程规范_大数据类项目的项目管理流程是怎样的?

    1.大数据落地的难处 首先,难在大数据技术端和市场应用端的信息不对称.大数据技术端可能存储着海量的数据,可能掌握着先进的计算和分析挖掘技术,但是并不了解市场的需求痛点,或者无从发力,或者闭门造车.而市 ...

  8. 喜报丨神策数据喜获信通院“星河”案例——行业大数据应用优秀案例

    近日,神策数据在由中国信息通信研究院.中国通信标准化协会.中国互联网协会联合举办的"2020 数据资产管理大会"上,喜获"行业大数据应用优秀案例".这也是神策数 ...

  9. 神策数据喜获信通院“星河”案例——行业大数据应用优秀案例

     近日,神策数据在由中国信息通信研究院.中国通信标准化协会.中国互联网协会联合举办的"2020 数据资产管理大会"上,喜获"行业大数据应用优秀案例".这也是神策 ...

最新文章

  1. html word-wrap,CSS3 Word-wrap
  2. oracle数据连接出现 login denied 问题
  3. hdpi、mdpi、ldpi图片规格
  4. python如何调用字典_如何访问python字典里的值?(实例解析)
  5. 纯c语言贪吃蛇,纯C语言贪吃蛇 求助
  6. SSL认证:单向认证与双向认证——密码学笔记(八)
  7. Mysql数据库常用指令
  8. TI-89T 教你在C程序里调用TI-BASIC程序,看看是否有人对这个感兴趣
  9. 戴尔集群监控与管理系统_监控与管理
  10. 【转载】你不得不知道的深度学习网络画图工具
  11. 利用百度进行URL编码解码
  12. 多任务学习(MTL)在转化率预估上的应用
  13. 【云周刊】第163期:中国唯一,阿里云进入Forrester大数据服务榜单
  14. linux之tcpdump抓包工具
  15. 中国科技统计年鉴Excel版本(1991-2021年)
  16. 习题7-3 判断上三角矩阵
  17. Dynamics CRM开发学习-插件01
  18. android 图片轮播框架banner
  19. rpg maker mv使用ajax,Rpgmakermv(15) PH任务插件
  20. ECharts提示框数字保留两位小数

热门文章

  1. 用python画小猪佩奇代码_Python turtle模块实例:绘制小猪佩奇(上)
  2. 警告 [http-nio-8080-exec-4] org.springframework.web.servlet.DispatcherServlet
  3. 【经典】CSS技巧教程资源大全
  4. 四月总结归纳 Deeplearning and Pytoch
  5. 苏宁大数据部门前端面试
  6. java计算机毕业设计小型酒店管理系统源码+系统+数据库+lw文档+mybatis+运行部署
  7. 酒店管理系统功能结构图
  8. Win 10 Hyper-V 虚拟机怎么迁移部署
  9. rust 输出读取文件
  10. conda创建虚拟环境并添加到jupyter kernel(踩坑泪目)