使用SSH和Ext来展示数据库数据 (ssh extjs展示数据库)

在当今这个数字化的时代,大量的数据产生于各种各样的系统之中。如何更好地将这些数据利用起来变得至关重要。传统的数据库系统,以其高效、稳定的数据存储和访问方式成为了数据处理的重要途径。而SSH和Ext作为常用的开发工具,更是在将数据库数据展现给用户方面发挥了重要作用。

SSH(Spring、Struts、Hibernate)是一种基于JavaEE的开源框架,可用于开发Web应用程序。SSH的主要特点是让开发人员专注于业务逻辑而不是框架配置,减少了开发难度,并能快速开发相对复杂的Web应用程序。同样,SSH还提供了对数据库的操作功能,方便数据存储和管理。

而Ext作为一款基于JavaScript的前端框架,它提供了丰富的UI控件和交互功能,使数据的可视化展示变得更加简便。在这里,我们将通过构建一个简单的Web应用程序来展示如何。

开发环境

在开始构建我们的应用程序之前,我们需要做好以下工作:

1. 安装Java JDK,并设置JAVA_HOME环境变量。

2. 安装Eclipse IDE,它提供了丰富的Java开发工具和插件。同时,我们也需要安装Maven插件,它可用于构建和管理我们的项目。

3. 安装Tomcat服务器,作为我们的应用程序的容器。

4. 准备好MySQL数据库,并创建几个表和数据,以便我们展示数据。在这里,我们可以使用名为“extjs_ssh”的数据库和“user”和“role”两个表。

搭建SSH环境

现在,我们来搭建SSH环境,以便访问数据库。我们将使用Hibernate来处理数据库的访问。

1. 在Eclipse中创建一个新的Maven项目,并添加如下依赖:

“`

org.hibernate

hibernate-core

5.4.19.Final

org.hibernate

hibernate-entitymanager

5.4.19.Final

mysql

mysql-connector-java

8.0.22

“`

2. 在src/mn/resources下创建hibernate.cfg.xml配置文件,添加以下内容:

“`

<!DOCTYPE hibernate-configuration PUBLIC

“-//Hibernate/Hibernate Configuration DTD 3.0//EN”

“http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd”>

org.hibernate.dialect.MySQL5Dialect

com.mysql.cj.jdbc.Driver

jdbc:mysql://localhost:3306/extjs_ssh?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shangh

root

123456

“`

这里我们根据自己的实际情况修改数据库连接的信息。

3. 创建实体类,如下:

“`

@Entity

@Table(name = “user”)

public class User {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private Integer id;

private String name;

private String password;

@ManyToMany(cascade = CascadeType.ALL)

@JoinTable(name = “user_role”, joinColumns = @JoinColumn(name = “user_id”,referencedColumnName = “id”),inverseJoinColumns = @JoinColumn(name = “role_id”,referencedColumnName = “id”))

private Set roles;

//省略getter和setter方法

}

“`

“`

@Entity

@Table(name = “role”)

public class Role {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private Integer id;

private String name;

private String desc;

//省略getter和setter方法

}

“`

这里我们定义了User和Role两个实体类,并使用Hibernate的注解来设置数据库表的映射关系。

使用Ext展示数据

下面,我们将通过Ext来展示数据库数据,这里我们使用Ext 6版本来完成。

1. 创建空的Web项目,并将下载的Ext文件放入webapp下的extjs文件夹中。

2. 在页面中引入所需的和CSS文件,如下:

“`

“`

这里我们引入了Ext的CSS和文件以及自己编写的用户管理脚本user.js。

3. 在页面中添加展示数据的容器,如下:

“`

“`

4. 在user.js中添加如下脚本:

“`

Ext.define(‘User’,{

extend:’Ext.data.Model’,

fields:[

{name:’id’,type:’int’,sortable:true},

{name:’name’,type:’string’,sortable:true},

{name:’password’,type:’string’,sortable:true},

{name:’roles’,type:’string’,sortable:false,convert:function(value,record){

var names = [];

if(value !=null){

Ext.each(value,function(item){

names.push(item.name);

});

}

return names.join(“,”);

}

}

]

});

Ext.define(‘User.store.UserStore’,{

extend:’Ext.data.Store’,

model:’User’,

pageSize:20,

proxy:{

type:’ajax’,

url:’User/list’,

reader:{

type:’json’,

root:’list’,

totalProperty:’totalCount’

}

},

autoLoad:true,

listeners:{

beforeload:function(store,operation,options){

var name = Ext.getCmp(‘search-name’).getValue();

store.getProxy().extraParams = {‘name’:name};

}

}

});

Ext.define(‘User.view.UserGrid’,{

extend:’Ext.grid.Panel’,

alias:’widget.usergrid’,

border:false,

layout:’fit’,

store:’User.store.UserStore’,

columns:[

{header:’编号’, dataIndex:’id’, width:60},

{header:’用户名’,dataIndex:’name’,width:160},

{header:’密码’,dataIndex:’password’,width:160},

{header:’角色’,dataIndex:’roles’,width:360}

],

tbar:[

{xtype:’textfield’,id:’search-name’,emptyText:’请输入用户名’},

{xtype:’button’,text:’搜索’,handler:function(){

Ext.getCmp(‘user-grid’).getStore().load({params:{start:0,limit:20}});

}}

],

bbar:{

xtype:’pagingtoolbar’,

store:’User.store.UserStore’,

displayInfo:true

},

listeners:{

itemdblclick:function(grid,record){

Ext.create(‘User.view.UserEditWindow’,{

title:’修改用户信息’

}).down(‘form’).loadRecord(record);

}

}

});

Ext.define(‘User.view.UserEditWindow’,{

extend:’Ext.window.Window’,

alias:’widget.usereditwindow’,

title:’添加用户信息’,

width:360,

height:240,

modal:true,

layout:’fit’,

items:{

xtype:’form’,

bodyPadding:5,

defaults:{

anchor:’100%’,

labelWidth:60

},

items:[

{xtype:’textfield’,name:’id’,fieldLabel:’编号’,readOnly:true},

{xtype:’textfield’,name:’name’,fieldLabel:’用户名’,allowBlank:false},

{xtype:’textfield’,name:’password’,fieldLabel:’密码’,allowBlank:false}

]

},

buttons:[

{text:’保存’,handler:function(){

var form = this.up(‘window’).down(‘form’);

var record = form.getRecord();

var values = form.getValues();

if(record){

record.set(values);

}else{

Ext.create(‘User.store.UserStore’).add(values);

}

this.up(‘window’).close();

}},

{text:’取消’,handler:function(){

this.up(‘window’).close();

}}

]

});

Ext.application({

name:’User’,

launch:function(){

Ext.create(‘Ext.contner.Viewport’,{

layout:’fit’,

items:[

{xtype:’usergrid’}

]

});

}

});

“`

这里我们定义了一个User实体类、一个UserStore数据源以及一个UserGrid表格。

User实体类定义了我们要展示的数据的字段,通过convert属性将roles属性转换为字符串形式。

UserStore数据源定义了数据的处理方式,通过ajax方式从服务端获取数据,并处理绑定到表格的数据和分页信息。

UserGrid表格是数据的展示界面,定义了表格的显示字段和分页等属性。同时,还添加了一个搜索栏,用于指定搜索用户名,并在双击一条数据时弹出一个编辑窗口。


数据运维技术 » 使用SSH和Ext来展示数据库数据 (ssh extjs展示数据库)