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:'学生编号',100}]],
	    
	    //列的定义
	    columns:[[    
	        {field:'sname',title:'学生名',100},    
	        {field:'ssex',title:'性别',100},    
	        {field:'sclass',title:'班级',100,align:'right'},
	        {field:'sbirthday',title:'生日',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="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>

  

原文地址:https://www.cnblogs.com/nicebaby/p/6192564.html