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>
hibernate、easyui、struts2整合的更多相关文章
- hibernate与struts2整合中出现问题以及一级缓存查询数据在业务层问题
直接上问题: org.hibernate.HibernateException: HHH000142: Javassist Enhancement failed: cn.xxx.pojo.Custom ...
- Hibernate和Struts2整合的增、删、改、查
1. 新建一个Web项目,准备好jar包和配置文件. 2. web.xml文件中添加过滤器 <?xml version="1.0" encoding="UTF-8& ...
- 【Java EE 学习 53】【Spring学习第五天】【Spring整合Hibernate】【Spring整合Hibernate、Struts2】【问题:整合hibernate之后事务不能回滚】
一.Spring整合Hibernate 1.如果一个DAO 类继承了HibernateDaoSupport,只需要在spring配置文件中注入SessionFactory就可以了:如果一个DAO类没有 ...
- struts2,hibernate,spring整合笔记(3)
struts2,hibernate,spring整合笔记(1) struts2,hibernate,spring整合笔记(2) 配好struts和hibernate就要开始spring了 老规矩,还是 ...
- struts2,hibernate,spring整合笔记(2)
上一话struts2,hibernate,spring整合笔记(1) 接下来继续 配置完struts之后就要开始hibernate的配置 hibernate的环境并不依赖web开发环境,在我第一次配置 ...
- Spring(四):Spring整合Hibernate,之后整合Struts2
背景: 上一篇文章<Spring(三):Spring整合Hibernate>已经介绍使用spring-framework-4.3.8.RELEASE与hibernate-release-5 ...
- SSH(Spring Struts2 Hibernate)框架整合(注解版)
案例描述:使用SSH整合框架实现部门的添加功能 工程: Maven 数据库:Oracle 框架:Spring Struts2 Hibernate 案例架构: 1.依赖jar包 pom.xml < ...
- SSH(Spring Struts2 Hibernate)框架整合(xml版)
案例描述:使用SSH整合框架实现部门的添加功能 工程: Maven 数据库:Oracle 案例架构: 1.依赖jar包pom.xml <project xmlns="http://ma ...
- java框架之Spring(4)-Spring整合Hibernate和Struts2
准备 导包 Struts2 导入 Struts2 zip 包解压目录下 'apps/struts-blank.war' 中所有 jar 包,如下: asm-3.3.jar asm-commons-3. ...
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:SSH框架(Struts2+Spring+Hibernate)搭建整合详细步骤
在实际项目的开发中,为了充分利用各个框架的优点,通常都会把 Spring 与其他框架整合在一起使用. 整合就是将不同的框架放在一个项目中,共同使用它们的技术,发挥它们的优点,并形成互补.一般而言,在进 ...
随机推荐
- 解决Xcode升级7.0后,部分.a静态库在iOS9.0的模拟器上,link失败的问题
简单描述一下这个问题:我们项目中使用了Google大神开发的LevelDB键值对数据库,在Xcode6,iOS8的环境下,编译好的.a静态库是可以正常使用的.但是升级后,发现在模拟器上无法link成功 ...
- .NET:线程本地存储、调用上下文、逻辑调用上下文
.NET:线程本地存储.调用上下文.逻辑调用上下文 目录 背景线程本地存储调用上下文逻辑调用上下文备注 背景返回目录 在多线程环境,如果需要将实例的生命周期控制在某个操作的执行期间,该如何设计?经典的 ...
- mark_May
嗯神忙的五月总算是过完了. 草草的做完研究性学习,浑浑噩噩的考了数学联赛,以及在考试的上一周还在疯狂的看未闻花名,貌似还有前几个星期不懂是吃错药还是怎样 总急着把2013的题目刷完=-=可是貌似到现在 ...
- git命令与github使用
GitHub 是一个类似 SourceForge 的免费项目管理及分享的服务平台,要想使用 github,用户可以免费注册成为 github 注册用户,之后使用git命令进行操作使用.github 的 ...
- NuGet管理
使用NuGet管理项目类库引用 NuGet 是微软开发平台(包括.NET平台)的一个包管理器,这里只介绍和.NET相关的NuGet Visual Studio扩展客户端, 在VS2010 ,VS2 ...
- mac osx 10.9安装配置macvim
如果你已经安装了macvim,升级后又不能用了,建议你可以看看http://kodira.de/2013/10/macvim-osx-10-9-mavericks/这篇文章,如果你还没有安装,下面由我 ...
- easyuidatagrid扩展--玩一下,无实际意义
直接上代码 $.extend($.fn.datagrid.defaults.editors, { operater: { init: function (container, options) { v ...
- ASP.NET MVC中使用Ninject
ASP.NET MVC中使用Ninject 在[ASP.NET MVC 小牛之路]系列上一篇文章(依赖注入(DI)和Ninject)的末尾提到了在ASP.NET MVC中使用Ninject要做的两件事 ...
- 微信移动支付V3开发详细教程服务端采用.net mvc webapi(C#)
转自:http://www.kwstu.com/ArticleView/netmvc_201511132050268716 最近开发手机app需要实现移动支付功能,由于考虑支付安全将微信支付生成签名写 ...
- CNN for Visual Recognition (02)
图像分类 参考:http://cs231n.github.io/classification/ 图像分类(Image Classification),是给输入图像赋予一个已知类别标签.图像分类是计算机 ...