大数据ssm项目案例总结

在本月我们学习了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:

 

 

			@Autowired

					private JmsTemplate  jmsTemplate;
					@Autowired

					private Destination   destination;

					jmsTemplate.send(destination, new MessageCreator() {
						@Override
						public 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 {

    @Autowired
    private JedisPool  jedisPool;
    @Override
    public 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" %>

    <link
            href="${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;"> <span
            class="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>
    <div
            class="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,则按照默认的click
        format: 'YYYY-MM-DD'// 日期格式
    });

    //外部js调用
    laydate({
        elem: '#txt_search_start', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
        event: 'focus', //响应事件。如果没有传入event,则按照默认的click
        format: '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.初始化Table
        var oTable = new TableInit();
        oTable.Init();
        //2.初始化Button的点击事件
        var oButtonInit = new ButtonInit();
        oButtonInit.Init();
    };

    var TableInit = function () {
        var oTableInit = new Object();
        //初始化Table
        oTableInit.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);

    @Autowired
    private ActorService actorService;

    @Autowired
    private RoleService roleService;

    @Autowired
    private OperationService operationService;
    @Autowired
    private CompleeMapper compleeMapper;

    @Autowired
    private JedisPool jedisPool;
    @Autowired
    private JmsTemplate  jmsTemplate;
    @Autowired
    private 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() {
                        @Override
                        public 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综合案例

宿舍管理开发流程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明天会更好fjy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值