Hibernate332+Spring255+Struts216+Extjs300 Annotations方式快速开发框架2.docx
- 文档编号:8922989
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:23
- 大小:325.52KB
Hibernate332+Spring255+Struts216+Extjs300 Annotations方式快速开发框架2.docx
《Hibernate332+Spring255+Struts216+Extjs300 Annotations方式快速开发框架2.docx》由会员分享,可在线阅读,更多相关《Hibernate332+Spring255+Struts216+Extjs300 Annotations方式快速开发框架2.docx(23页珍藏版)》请在冰点文库上搜索。
Hibernate332+Spring255+Struts216+Extjs300Annotations方式快速开发框架2
五、整合Struts2、Extjs
将struts-2.1.6\lib目录下的struts2-codebehind-plugin-2.1.6.jar、struts2-core-2.1.6.jar、struts2-spring-plugin-2.1.6.jar、xwork-2.1.2.jar、ognl-2.6.11.jar、freemarker-2.3.13.jar、commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar复制到项目WebContent\lib下。
另外还需jsonplugin-0.34.jar包,使struts2action返回json类型。
新建一个entity接口,action层需使用该接口调用实体主键。
package com.xy.entity;
public interface BaseEntity {
public long getId();
}
修改Demo实体,使其实现BaseEntity接口
package com.xy.entity.demo;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import com.xy.entity.BaseEntity;
@Entity
@Table(name="HSSEA_DEMO")
public class Demo implements BaseEntity {
@Id
@GeneratedValue(strategy=GenerationType.TABLE, generator="hssea_demo")
@TableGenerator(name = "hssea_demo",
table="OBJECT_ID",
pkColumnName="NAME",
valueColumnName="VALUE",
pkColumnValue="HSSEA_DEMO_PK",
initialValue=1,
allocationSize=1
)
@SequenceGenerator(name="hssea_demo_seq", sequenceName="seq_hssea_demo", allocationSize=1)
private long id;
@Column(name="CODE")
private String code;
@Column(name="DESCRIPTION")
private String description;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
增加struts2与extjs交互抽象类,完成分页、排序、增删改查。
package com.xy.action;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.apache.log4j.Logger;
import org.apache.struts2.config.ParentPackage;
import org.apache.struts2.config.Result;
import org.apache.struts2.config.Results;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.googlecode.jsonplugin.JSONResult;
import com.opensymphony.xwork2.ActionSupport;
import com.xy.service.BaseServiceForHibernate;
import com.xy.entity.BaseEntity;
/**
* struts2与extjs交互抽象类
* 完成基本增删改查分页等功能,子类继承时只需设置entity中属性的set。
* @author xy
* @date 2009-12-31
* @param
*/
@Controller
@Scope("prototype")
@ParentPackage(value="json-default")
@Results({
@Result(name="success", value="", type=JSONResult.class, params={"ignoreHierarchy", "false"})
})
public abstract class Struts2ExtjsBaseAction
static Logger logger = Logger.getLogger(Struts2ExtjsBaseAction.class.getName());
private static final long serialVersionUID = 2863769505963567954L;
// Extjs 使用,成功与否,返回信息
protected boolean success = false;
protected String message;
// Extjs 使用,分页、排序信息
protected int start;
protected int limit;
protected String sort;
protected String dir;
// Service类
protected X service;
// 返回的数据列表和记录总数
protected List
protected int total;
// entity对象,用于提交保存,更新前取个别数据
protected T entity;
// 记录选中记录的id
protected String ids;
/**
* 取列表
*/
public String list() {
logger.debug("取数据列表!
start:
"+this.start+",limit:
"+this.limit+",sort:
"+this.sort+",dir:
"+this.dir);
Set
Set
if(this.dir.equals("ASC")){
orderSet.add(Order.asc(this.sort));
}else{
orderSet.add(Order.desc(this.sort));
}
list = service.query(criterionSet, orderSet, this.start, this.limit);
total = service.totalSize(criterionSet);
success = true;
return SUCCESS;
}
/**
* 根据ID取数据
*/
public String get() {
logger.debug("根据id取数据明细!
id:
"+entity.getId());
entity = service.get(entity.getId());
success = true;
return SUCCESS;
}
/**
* 保存
*/
public String save() {
logger.debug("保存数据!
entity:
"+entity);
service.save(entity);
success = true;
return SUCCESS;
}
/**
* 删除
*/
public String delete() {
logger.debug("根据ids删除数据!
ids:
"+ids);
for(String s :
ids.split(",")){
service.delete(Long.parseLong(s));
}
success = true;
return SUCCESS;
}
// 对象T内部信息的读取均在子类中进行
// getter,setter方法
// struts2需get方法将数据转换成json
public List
return list;
}
public int getTotal() {
return total;
}
public boolean isSuccess() {
return success;
}
public String getMessage() {
return message;
}
// 读取extjs传来的分页和排序信息
public void setStart(int start) {
this.start = start;
}
public void setLimit(int limit) {
this.limit = limit;
}
public void setSort(String sort) {
this.sort = sort;
}
public void setDir(String dir) {
this.dir = dir;
}
// 读取extjs传来的选中记录id
public void setIds(String ids) {
this.ids = ids;
}
public T getEntity() {
return entity;
}
}
新增DemoAction类
package com.xy.action.demo;
import javax.annotation.Resource;
import org.apache.struts2.config.Namespace;
import com.xy.action.Struts2ExtjsBaseAction;
import com.xy.entity.demo.Demo;
import com.xy.service.demo.DemoService;
@Namespace(value="/demo")
public class DemoAction extends Struts2ExtjsBaseAction
private static final long serialVersionUID = 7796054923782630546L;
// 注入service
@Resource(name="demoService")
public void setDemoService(DemoService demoService){
super.service = demoService;
}
public DemoAction(){
super.entity = new Demo();
}
// entity对象中的set方法
public void setId(long id) {
entity.setId(id);
}
public void setCode(String code) {
entity.setCode(code);
}
public void setDescription(String description) {
entity.setDescription(description);
}
}
在WebContent下新增extjs和demo目录,将ext-3.0.0目录下的ext-all.js和resources整个目录、ext-3.0.0\adapter\ext目录下ext-base.js复制到新建的extjs目录下。
在demo目录下新建list.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
在demo目录下新建list.js
Ext.onReady(function() {
// 加载快速菜单
Ext.QuickTips.init();
var actionUrl = "demo";
// 加载分页数据
var store = new Ext.data.Store({
proxy :
new Ext.data.HttpProxy({
url :
actionUrl+'!
list'
}),
reader :
new Ext.data.JsonReader({
root :
'list',
totalProperty :
'total',
id :
'id',
fields :
['id','code', 'description']
}),
remoteSort :
true
});
// 设置默认的排序字段和升降序
store.setDefaultSort('code', 'asc');
// 设置复选框
var sm = new Ext.grid.CheckboxSelectionModel();
// 设置列
var cm = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(),sm,
{header :
"编码", width:
120,dataIndex :
'code',sortable :
true},
{header :
"名称", width:
280,dataIndex :
'description',sortable :
true}
]);
// 默认排序设置为可排序
cm.defaultSortable = true;
// 创建GridPanel
grid = new Ext.grid.GridPanel({
el :
'listWin',
width :
900,
height :
650,
title :
'演示',
store :
store,
cm :
cm,
sm :
sm,
animCollapse :
false,
trackMouseOver :
false,
loadMask :
{
msg :
'载入中,请稍候
'
},
// 上方工具条
tbar :
[{
id :
'addDicButton',
text :
'增加',
tooltip :
'添加一条记录'
}, '-', {
id
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hibernate332+Spring255+Struts216+Extjs300 Annotations方式快速开发框架2 Hibernate332 Spring255 Struts
![提示](https://static.bingdoc.com/images/bang_tan.gif)
链接地址:https://www.bingdoc.com/p-8922989.html