hibernate、easyui、struts2整合
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>学生表</title> <!-- 1jQuery的js包 --> <script type="text/javascript" src="jquery-easyui-1.4.4/jquery.min.js"></script> <!-- 2css资源 --> <link rel="stylesheet" type="text/css" href="jquery-easyui-1.4.4/themes/default/easyui.css"> <!-- 3图标资源 --> <link rel="stylesheet" type="text/css" href="jquery-easyui-1.4.4/themes/icon.css"> <!-- 4easyui的js包 --> <script type="text/javascript" src="jquery-easyui-1.4.4/jquery.easyui.min.js"></script> <!-- 5本地语言包 --> <script type="text/javascript" src="jquery-easyui-1.4.4/locale/easyui-lang-zh_CN.js"></script> </head> <body> <script type="text/javascript"> //把long型的日期改成yyyy-MM-dd function getDate(date) { //得到日期对象 var d=new Date(date) //得到年月日 var year=d.getFullYear(); var month=(d.getMonth()+1); var day=d.getDate(); var rtn=year +"-"+(month<10 ? "0"+month:month)+"-"+(day<10 ? "0"+day:day) return rtn; } var type="add"; $(function(){ //创建DataGrid $("#dg").datagrid({ url:'getStudentlist.action', //数据来源 //冻结列 frozenColumns:[[{field:'id',checkbox:true}, {field:'sno',title:'学生编号',width:100}]], //列的定义 columns:[[ {field:'sname',title:'学生名',width:100}, {field:'ssex',title:'性别',width:100}, {field:'sclass',title:'班级',width:100,align:'right'}, {field:'sbirthday',title:'生日',width:200,align:'center', formatter: function(value,row,index){ var valuee = new Date(value).toLocaleDateString(); if(valuee == 'Invalid Date') { return '无' ; } else { //return valuee; return getDate(valuee); } } } ]], remoteSort:true,//是否服务器端排序 sortOrder:'desc',//排序方式 sortName:'sno',//排序字段 fitColumns:false,//列自适应宽度 ,不能和冻结列同时设置为true striped:true,//斑马线效果 idField:'sno',//主键列 rownumbers:true,//显示行号 singleSelect:false,//是否单选 pagination:true,//显示分页栏 pageList:[10,20,30,40],//每页行数选择列表 pageSize:10,//初始每页行数 multiSort:true,//是否允许多列排序 toolbar:[{iconCls:'icon-search',text:'查询', handler:function(){ //序列化表单查询 var f=$("#form2").serialize(); $("#dg").datagrid({url:"getStudentlist.action?"+f}); } },{iconCls:'icon-add',text:'添加', handler:function(){ $("#sno").textbox({readonly:false}); type="add"; //清除表单旧数据 $("#form1").form("reset"); $("#saveStu").dialog({title:'添加学生'}).dialog('open');} },{iconCls:'icon-edit',text:'修改', handler:function(){ type="edit"; //判断是否选中一条数据 var data =$('#dg').datagrid('getSelected'); if(data) { //alert(data); //设置字段只读 $("#sno").textbox({readonly:true}); $("#form1").form('reset'); $("#form1").form("load",{sno:data.sno, ssex:data.ssex,sclass:data.sclass, sname:data.sname,sbirthday:getDate(data.sbirthday)}); //$('form').('load',data); $("#saveStu").dialog({title:'修改学生'}).dialog('open'); } else { $.messager.show({ title:'提示', msg:'请选中一条记录' }); } } },{iconCls:'icon-remove',text:'删除', handler:function(){ //判断是否选中一条数据 var data =$('#dg').datagrid('getSelections'); if(data.length>0) { $.messager.confirm("确认","确实删除吗?",function(r){ if(r){ //alert("执行删除"); //用数组保存选中记录的主键 var snos=[]; for(var i=0;i<data.length;i++) { snos[i]=data[i].sno; } $.get("deleteStudentServlet?sno="+snos,function(rtn){ //alert(rtn); var msg= eval("("+rtn+")"); if(msg.success) { $("#dg").datagrid('reload'); } $.messager.show({title:"提示",msg:msg.message}); }); } else{ } } ) } else { $.messager.show({ title:'提示', msg:'请选中一条记录' }); } } }] }); }) </script> <div id="search" class="easyui-panel" title="查询条件" style="heiget:100px" data-options="{iconCls:'icon-search',collapsible:true}"> <form id="form2"> 名称:<input class="easyui-textbox" id="sname_s" name="sname_s"> 班级:<input class="easyui-textbox" id="sclass_s" name="sclass_s"> </form> </div> <table id="dg" > </table> <div class="easyui-dialog" id="saveStu" style="width:400px;height:300px;top:50px;" title="添加学生" data-options="{closed:true,modal:true, buttons:[{text:'保存',iconCls:'icon-save',handler:function(){ $('#form1').form('submit',{ url:'SaveStudentServlet?type='+type, onSubmit:function(){ var isValid =$(this).form('validate'); if(!isValid){ $.messager.show({ title:'消息', msg:'数据验证未通过' }); } return isValid; }, success:function(data){ var msg=eval('('+data+')'); if(!msg.success) { alert(msg.message); } else { // $('#dg').datagrid('reload'); $.messager.show({title:'提示',msg:msg.message}); $('#saveStu').dialog('close'); } } }); }}, {text:'取消',iconCls:'icon-cancel',handler:function(){ $('#saveStu').dialog('close'); }}]}"> <form action="" id="form1" method="post"> <br><br> <table> <tr> <td align="right" width=30%>学号:</td> <td><input class="easyui-textbox" id="sno" name="sno" data-options= "{required:true,validType:'length[3,5]'}"></td> </tr> <tr> <td align="right" width=30%>名称:</td> <td><input class="easyui-textbox" name="sname" data-options= "{required:true,validType:'length[2,4]'}"></td> </tr> <tr> <td align="right" width=30%>性别:</td> <td><input type="radio" name="ssex" checked value="男">男 <input type="radio" name="ssex" value="女">女</td> </tr> <tr> <td align="right" width=30%>班级:</td> <td><input class="easyui-textbox" name="sclass" data-options= "{required:true,validType:'length[2,4]'}"></td> </tr> <tr> <td align="right" width=30%>生日:</td> <td><input class="easyui-datebox" name="sbirthday" ></td> </tr> </table> </form> </div> </body> </html>
package com.hanqi.dao; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import com.hanqi.entity.Student; public class StudentDAO { Configuration cfg=null; ServiceRegistry sr=null; SessionFactory sf=null; Session se=null; Transaction tr=null; public StudentDAO(){ //加载配置文件 cfg=new Configuration().configure(); //注册服务 sr=new StandardServiceRegistryBuilder() .applySettings(cfg.getProperties()).build(); } //初始化 private void init() { sf=cfg.buildSessionFactory(sr); se=sf.openSession(); tr=se.beginTransaction(); } //提交和释放资源 private void destory() { tr.commit(); se.close(); sf.close(); } //添加数据 public void insert(Student stu) { init(); se.save(stu); destory(); } //修改 数据 public void update(Student stu) { init(); se.update(stu); destory(); } //删除 public void delete(String sno) { init(); //Student st=(Student)se.get(Student.class, sno); //se.delete(st); //SQL方式执行删除 se.createQuery("delete from Student where sno=?") .setString(0, sno).executeUpdate(); destory(); } //获取分页的数据集合 public List<Student> getPageList(int page,int rows,Map<String, String> where,String sort) { System.out.println(sort+ "dao"); List<Student> rtn=new ArrayList<Student>(); init(); //创建基础HQL语句 String sql="from Student where 1=1"; //判断传递的参数 String sname= where.get("sname_s"); if(sname!=null&&!sname.equals("")) { sql+="and sname=:sname"; } String sclass= where.get("sclass_s"); if(sclass!=null&&!sclass.equals("")) { sql+="and sclass=:sclass"; } if(sort!=null&&!sort.equals("")) { sql+=" order by "+ sort; } //得到HQL Query q=se.createQuery(sql); if(sname!=null&&!sname.equals("")) { q.setString("sname", sname); } if(sclass!=null&&!sclass.equals("")) { q.setString("sclass",sclass); } rtn=q.setFirstResult((page-1)*rows). setMaxResults(rows).list(); destory(); return rtn; } //获取数据条数 public int getTotal(Map<String, String> where){ int rtn=0; init(); String sql="select count(1)from Student where 1=1"; //判断传递的参数 String sname= where.get("sname_s"); if(sname!=null&&!sname.equals("")) { sql+="and sname=:sname"; } String sclass= where.get("sclass_s"); if(sclass!=null&&!sclass.equals("")) { sql+="and sclass=:sclass"; } //得到HQL Query q=se.createQuery(sql); if(sname!=null&&!sname.equals("")) { q.setString("sname", sname); } if(sclass!=null&&!sclass.equals("")) { q.setString("sclass",sclass); } //List<Object> lo=se.createQuery("select count(1)from Student").list(); List<Object> lo=q.list(); if(lo!=null&&lo.size()>0) { rtn=Integer.parseInt(lo.get(0).toString()); } destory(); return rtn; } }
package com.hanqi.entity; import java.util.Date; public class Student { private String sno,sname,ssex,sclass; private Date sbirthday; public String getSno() { return sno; } public void setSno(String sno) { this.sno = sno; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public String getSsex() { return ssex; } public void setSsex(String ssex) { this.ssex = ssex; } public String getSclass() { return sclass; } public void setSclass(String sclass) { this.sclass = sclass; } public Date getSbirthday() { return sbirthday; } public void setSbirthday(Date sbirthday) { this.sbirthday = sbirthday; } }
package com.hanqi.Service; import java.util.HashMap; import java.util.List; import java.util.Map; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.hanqi.dao.StudentDAO; import com.hanqi.entity.Student; public class StudentService { public void addStudeng(Student stu) { new StudentDAO().insert(stu); } //查询分页数据 //返回JSON public String getPageJSON(int page,int rows,Map<String, String> where,String sort) { PageJson<Student>pj=new PageJson<>(); String rtn="{'total':0,'rows':[]}"; int total=new StudentDAO().getTotal(where); if(total>0) { System.out.println(sort+ "service"); List<Student> ls=new StudentDAO().getPageList(page, rows,where,sort); //String ls_json=JSONArray.toJSONString(ls); //rtn="{\"total\":"+total+",\"rows\":"+ls_json+"}"; pj.setTotal(total); pj.setRows(ls); rtn=JSONObject.toJSONString(pj); } return rtn; } public void editStu(Student stu) { new StudentDAO().update(stu); } public void delete(String sno) { new StudentDAO().delete(sno); } }
package com.hanqi.action; public class TestAction { private String msg; private String name; public String testGet() { System.out.println("处理get请求"); msg="{\"success\":true,\"message\":\"666\"}"; name="tom"; return "success"; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
struts2
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 设置过滤的扩展名 --> <constant name="struts.action.extension" value="do,action,,"></constant> <package name="test" extends="json-default"> <action name="TestGet" class="com.hanqi.action.TestAction" method="testGet"> <!-- 返回了JSON格式的Action对象 --> <result type="json"> <param name="root">msg</param> </result> </action> </package> <package name="stu" extends="json-default"> <action name="getStudentlist" class="com.hanqi.action.StudentAction" method="getStudentlis-t"></action> </package> </struts>