2019年寒假答辩Recruitnew招新网站

1.主要设计思想

上学期主要在学习javaweb,只写了一个简单的登录注册,没有很好的把所学的东西都运用上去,于是这个寒假就想写一个完整的小项目总结下学习的内容,正好工作室每年招新都需要一个一个招新网站,就想起写一个招新网站,实现简单的前端和后台交互。

2.主要运用技术

这个小项目主要运用了jsp,hml,css,javascript,bookstrap框架做的前端,(由于个人审美原因@_@)页面并不那么美观,后台主要用的java语言写的,servlet转发,ajax查重,Echart处理图形。数据使用的是mysql数据库存储。

3.答辩介绍

响应式前端后台
工作室介绍后台界面响应式布局
下面是一些技术的主要代码

<script type="text/javascript">
	// 路径配置	
	require.config({
		paths : {
			echarts : 'http://echarts.baidu.com/build/dist'
		}
	});
	// 使用
	require([ 'echarts', 'echarts/chart/bar' // 使用柱状图就加载bar模块,按需加载
	], 
	drewEcharts
);
	
 	function drewEcharts(ec) {
		// 初始化echarts图表
		var myChart = ec.init(document.getElementById('main'));

		var option = {
			tooltip : {
				show : true
			},
			legend : {
				data : [ '数量' ]
			},
			xAxis : [ {
				type : 'category',//一级分类
				data :(function(){
                                    var arr=[];
                                        $.ajax({
                                        type : "post",
                                        async : false, //同步执行
                                        url : "bar.do",
                                        data : {},
                                        dataType : "json", //返回数据形式为json
                                        success : function(result) {
                                        if (result) {
                                               for(var i=0;i<result.length;i++){
                                                  console.log(result[i].mingcheng);
                                                  arr.push(result[i].mingcheng);
                                                }    
                                        }
                                        
                                    },
                                    error : function(errorMsg) {
                                        alert("不好意思,图表请求数据失败啦!");
                                        myChart.hideLoading();
                                    }
                                   })
                                   return arr;
                                })() 
			
			} ],
			yAxis : [ {
				type : 'value'
			} ],
			series : [ {
				"name" : "数量",
				"type" : "bar",
				"data" : (function(){				
                                        var arr=[];
                                        $.ajax({
                                        type : "post",
                                        async : false, //同步执行
                                        url : "bar.do",
                                        data : {},
                                        dataType : "json", //返回数据形式为json
                         
                                        success : function(result) {
                                        if (result) {
                                               for(var i=0;i<result.length;i++){
                                                  console.log(result[i].number);
                                                  arr.push(result[i].number);
                                                }  
                                        }
                                    },
                                    error : function(errorMsg) {
                                        alert("柱状图表请求数据失败!");
                                        myChart.hideLoading();
                                    }
                                   })
                                  return arr;
                            })()
                            
                            
			} ]
		};

		// 为echarts对象加载数据 
		myChart.setOption(option);
	} 
public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		updateDao updateDao1 = new updateDao();
		updateDao1.updateNumber();
		updateDao1.updateNumber1();
		updateDao1.updateNumber2();
	     //创建了一个bardao的对象,barDAO主要是对数据库的连接和对数据库的操作
        barDAO bardao=new barDAO();
        ArrayList<Numberentiy> array = (ArrayList<Numberentiy>) bardao.listAll();
        System.out.println("s"+array);
        //设置返回时的编码格式
        response.setContentType("text/html; charset=utf-8");
        //调用JSONArray.fromObject方法把array中的对象转化为JSON格式的数组
        JSONArray json=JSONArray.fromObject(array);
        //返回给前端页面
        PrintWriter out = response.getWriter();  
        out.println(json);  
        out.flush();  
        out.close(); 
       
}
	public void init() throws ServletException {
	}

}

Echart插件主要通过一个地址是从网站上引用它的模板有bar柱状图,pie饼状图,line折线图,我只用了最简单的bar饼状图,还有很多漂亮的形式可以查看官网引入,引用主要是要初始化数据类型,图类型,横纵坐标,然后从数据库中抓取数据显示。

柱状图
导出excel表是真的写了很久,主要是先设置一个请求头,设置编码,文件类型,文件名,然后获取结果集,头单元名称,HSSFWorkbook的对象,我用了一个fillExcelData传入这三个参数,遍历每个单元格填入数据,然后运用了CellStyle中的一些方法修饰。核心代码如下:

public void fillExcelData(ResultSet rs, HSSFWorkbook wb, String[] headers)
            throws Exception {
        int rowIndex = 0; // 第一行
        Sheet sheet = wb.createSheet(); // 创建sheet页
        Row row = sheet.createRow(rowIndex++);
        // 创建标题
        CellStyle style =  wb.createCellStyle();
        HSSFFont font = wb.createFont();
        font.setColor((short) 0);
        font.setFontHeightInPoints((short) 14);
        font.setFontName("宋体");
        style.setFont(font);
        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        style.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);   
        for (int i = 0; i < headers.length; i++) {
        	row.setHeight((short)350);
            row.createCell(i).setCellValue(headers[i]);
            row.getCell(i).setCellStyle(style); 
        }
        
        // 导出数据库中的数据
        CellStyle style1 =  wb.createCellStyle();
        HSSFFont font1 = wb.createFont();
        font1.setFontHeightInPoints((short) 14);
        font1.setFontName("宋体");
        style1.setFont(font1);
        while (rs.next()) {
            row = sheet.createRow(rowIndex++);
            for (int i = 0; i < headers.length; i++) {
            	row.setHeight((short)350);
            	sheet.setColumnWidth((short)i,(short)6000);
                row.createCell(i).setCellValue(rs.getObject(i + 1).toString());
                row.getCell(i).setCellStyle(style1); 
                //rs.getObject(i + 1)得到一个对象,即数据库中一行的结果,每一列就是属性凑成一行变成对象。因为id是从1开始,所以要+1。
            }
        }
    }

    /**
     * 下载excel表
     * 
     * @param response
     * @param fileName
     * @throws Exception
     */
    public void export(HttpServletResponse response, Workbook wb,
            String fileName) throws Exception {
        response.setHeader("Content-Disposition", "attachment;filename="
                + new String(fileName.getBytes("utf-8"), "iso8859-1"));// 设置头信息
        response.setContentType("application/ynd.ms-excel;charset=UTF-8");
        OutputStream out = response.getOutputStream();
        wb.write(out);// 进行输出,下载到本地
        out.flush();
        out.close();
    }
}

4.javaweb分层
图示表示

分层标识
5.总结
1.做完这个项目还是学到了很多,对servlet和ajax理解的 更加透彻了,对java运用的更加熟练了,做答辩的确是一次很好的锻炼。
2.这个项目的不足在于前端还不够美观,后台功能也不多,只有一些基本功能,后续希望能够实现更多的功能。
3.项目分层有的还没分好,一个项目的分层的确很重要,这样可以增加你的代码复用性,更好地修改,减少许多不必要的bug,也有助于别人读懂你的代码。
4.感觉xml的配置还是有点繁琐,java代码也不够精简,jar包也有点难找,希望ssm框架之后能写出更漂亮的后台。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值