本人写的demo比较简单,只是最简单的分页查询,以后会继续增加更改功能。并且通过IE7与Firefox测试。还是请大家查看具体代码比较好。对于使用Ext所需要的准备工作在此不再叙述。google或baidu上搜一下就会比较多,本人推荐(http://www.dojochina.com/index.php?q=node/547)。
1、前台JS文件
// JavaScript Document
function sexRender(value){
if (value == '1') {
return "<span style='color:red;font-weight:bold;'>男</span>";
} else if(value=='2'){
return "<span style='color:green;font-weight:bold;'>女</span>";
}else{
return "<span style='color:red;font-weight:bold;'>未定义</span>";
}
}
Ext.onReady(function(){
// create the Data Store
var store = new Ext.data.JsonStore({
root: 'rows',
totalProperty: 'results',
idProperty: 'id',
//remoteSort: true,
fields: ['id','stuId','name','sex','phone'],
// load using script tags for cross domain, if the data in on the same domain as
// this page, an HttpProxy would be better
proxy: new Ext.data.HttpProxy({
url: "../studentwebdemo/admin/student/Com_getStudent.action"
})
});
store.setDefaultSort('id', 'asc');
var pagingBar = new Ext.PagingToolbar({
pageSize: 25,
store: store,
displayInfo: true,
displayMsg: '显示学生信息 {0} - {1} 条,共有{2}条记录',
emptyMsg: "没有学生信息"
});
var grid = new Ext.grid.GridPanel({
store: store,
columns:[{id:"id",header: "序号", width: 160, sortable: true, dataIndex: "id"},
{header: "学号", width: 75, sortable: true, dataIndex: "stuId"},
{header: "姓名", width: 75, sortable: true, dataIndex: "name"},
{header: "性别", width: 75, sortable: true,renderer:sexRender,dataIndex:"sex"},
{header: "电话", width: 85, sortable: true, dataIndex: "phone"}],
stripeRows: true,
autoExpandColumn: "id",
height:350,
width:600,
title:"学生信息",
bbar:pagingBar
});
grid.render('studentDiv');//studentDiv为显示页面的指定div
store.load({params:{start:0, limit:25}});//start与limit会在通过后台HttpServletRequest获取
})
2、后台代码
1)Struts Action
package com.javaeye.sunjiesh.studentwebdemo.web;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import org.apache.struts2.ServletActionContext;
import com.javaeye.sunjiesh.studentwebdemo.entity.Student;
import com.javaeye.sunjiesh.studentwebdemo.service.StudentManager;
import com.opensymphony.xwork2.ActionSupport;
public class StudentAction extends ActionSupport {
private static final long serialVersionUID = -4529678295440228555L;
private StudentManager studentManager;
public StudentManager getStudentManager() {
return studentManager;
}
public void setStudentManager(StudentManager studentManager) {
this.studentManager = studentManager;
}
/**
* Ext后台分页得到学生信息
*
* @return
*/
public String getStudent() {
HttpServletRequest request = ServletActionContext.getRequest();
//int page=Integer.parseInt(request.getParameter("pages"));
//Enumeration params=request.getParameterNames();
int start = Integer.parseInt(request.getParameter("start"));
int limit = Integer.parseInt(request.getParameter("limit"));
List<Student> studentList = studentManager.getStudents(start, limit);
int studentsCount=studentManager.getAllStudentsCount();
// if(studentsCount!=0){
// System.out.println("一共有"+studentsCount+"名学生");
// }
JSONArray jsonArray = JSONArray.fromObject(studentList);
// outputResult(jsonArray.toString());
// System.out.println("jsonArray.toString() is "+jsonArray.toString());
String allStudentsWithJson = "{\"results\":" + studentsCount
+ ",\"rows\":";
allStudentsWithJson += jsonArray.toString();
allStudentsWithJson += "}";
outputResult(allStudentsWithJson);
System.out.println("allStudentsWithJson is " + allStudentsWithJson);
return this.NONE;
}
public void outputResult(String result) {
HttpServletResponse response = ServletActionContext.getResponse();
try {
System.out.println(result);
response.setHeader("ContentType", "text/json");
response.setCharacterEncoding("gbk");
PrintWriter pw = response.getWriter();
pw.write(result);
pw.flush();
pw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2)Service层
package com.javaeye.sunjiesh.studentwebdemo.service;
import java.util.List;
import com.javaeye.sunjiesh.studentwebdemo.dao.StudentDAO;
import com.javaeye.sunjiesh.studentwebdemo.entity.Student;
public class StudentManager {
private StudentDAO studentDAO;
public StudentDAO getStudentDAO() {
return studentDAO;
}
public void setStudentDAO(StudentDAO studentDAO) {
this.studentDAO = studentDAO;
}
public List<Student> getAllStudents(){
return studentDAO.getAll();
}
public List<Student> getStudents(int firstResult,int maxResult){
return studentDAO.getStudents(firstResult, maxResult);
}
public int getAllStudentsCount(){
return studentDAO.getAllStudentsCount();
}
}
3)持久层(Hibernate)
package com.javaeye.sunjiesh.studentwebdemo.dao;
import java.util.List;
import org.hibernate.Query;
import com.javaeye.sunjiesh.studentwebdemo.entity.Student;
import com.opencs.common.BaseHibernateDao;
public class StudentDAO extends BaseHibernateDao<Student>{
@SuppressWarnings("unchecked")
public List<Student> getStudents(int firstResult,int maxResult){
String hql="from Student as student";
Query query=getSession().createQuery(hql);
query.setFirstResult(firstResult);
query.setMaxResults(maxResult);
List<Student> students=(List<Student>)query.list();
return students;
}
public int getAllStudentsCount(){
String hql="select count(*) from Student as student";
Query query=getSession().createQuery(hql);
Object countObj=query.uniqueResult();
Integer count=0;
if(countObj!=null){
count=Integer.parseInt(String.valueOf(countObj));
}
return count.intValue();
}
}
3、相关配置文件
1)struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<include file="com/javaeye/sunjiesh/studentwebdemo/struts2/struts-admin.xml" />
</struts>
2)struts.properties
struts.action.extension=do,action
struts.objectFactory=spring
struts.enable.DynamicMethodInvocation=false
struts.devMode=true
struts.locale=zh_CN
struts.i18n.encoding=GBK
struts.ui.theme=simple
#struts.custom.i18n.resources=i18n
struts.ui.templateDir=/WEB-INF/template
#struts.multipart.saveDir=temp/
struts.multipart.maxSize=8388608
struts.enable.SlashesInActionNames=true
#struts.objectFactory=com.opensymphony.xwork2.ObjectFactory
3)struts-admin.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="student.manager" namespace="/admin/student"
extends="struts-default">
<action name="Com_*" method="{1}" class="com.javaeye.sunjiesh.studentwebdemo.web.StudentAction">
<result name="list">/admin/user/list.html
</result>
<result name="add">/admin/user/add.html</result>
<result name="edit">/admin/user/edit.html
</result>
<result name="editPassword">/admin/user/edit_password.html
</result>
</action>
</package>
</struts>
4)spring-base.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!-- 属性文件读入 -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:/jdbc.properties</value>
</list>
</property>
</bean>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingDirectoryLocations">
<list>
<value>classpath:/com/javaeye/sunjiesh/studentwebdemo/spring/hbm/</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.connection.release_mode">
auto
</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="connection.useUnicode">true</prop>
<prop key="connection.characterEncoding">gbk</prop>
</props>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!--scope需要注明,否则会报错 -->
<bean id="baseTxService"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" scope="prototype"
abstract="true" >
<property name="transactionManager" ref="transactionManager" />
<property name="proxyTargetClass" value="true" />
<property name="transactionAttributes">
<props>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
</beans>
5)spring-dao.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans default-autowire="byName" default-lazy-init="true">
<bean id="studentDAO" parent="baseTxService" autowire="byName" lazy-init="true">
<property name="target">
<bean class="com.javaeye.sunjiesh.studentwebdemo.dao.StudentDAO"/>
</property>
</bean>
</beans>
6)spring-beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="studentManager" class="com.javaeye.sunjiesh.studentwebdemo.service.StudentManager">
<property name="studentDAO" ref="studentDAO"></property>
</bean>
</beans>
分享到:
相关推荐
本项目实例结合了这两种技术,提供了一个基础的增删改查(CRUD)应用,展示了EXTJS在用户界面设计上的强大功能以及SSH2在后端数据处理和业务逻辑整合的优势。 首先,SSH2是一个流行的企业级开发框架,由Spring负责...
EXT是一个JavaScript库,用于构建富互联网应用程序(RIA),而SSH是Java Web开发中的一个流行框架组合,包括Spring框架负责依赖注入和事务管理,Struts处理MVC模式,以及Hibernate作为ORM解决方案。 EXTJS是一个...
《SSH框架+Ext技术在客户关系管理系统的应用详解》 SSH框架,全称为Spring、Struts和Hibernate,是Java开发中的三大主流框架,它们分别负责控制层、展示层和持久层的功能,为开发者提供了强大的支持。Ext技术则是一...
这个是一个ssh+ajax的增删改查实例,很适合刚入门的程序员,在项目中发展肯定要比你整天坐着看书好,希望会对大家有用
SSH(Struts2 + Spring + Hibernate)是一种常见的Java Web开发框架组合,用于构建高效、可扩展的Web应用程序。Struts2提供了MVC架构,Spring管理依赖注入和事务处理,Hibernate则作为持久层框架,简化了数据库操作...
java+ext做的网吧管理系统源代码,使用hibernate,包括数据库(sql server2005) 使用json数据转换,dwr框架 整个系统只用到一个jsp页面,其他全部用js完成 包括用户管理,会员管理,充值,...使用EXT分页,带条件的分页等
采用SSH架构实现<深入浅出ExtJs>实例,系统包括:表格,分页,表单,表格与表单的关联等等,是初学者必不可少的学习资料,经本人实际测试通过。
ssh-orcale-ext 实现ext的分页,grid的编辑并异步保存到数据库, 以及viewport等一些ext的基础知识,算是学了两个星期的小结吧。 对新手应该会有帮助。一个完整的工程, 带有.sql文件,导入表和数据,修改数据库连接...
采用SSH架构实现<深入浅出ExtJs>实例,系统包括:表格,分页,表单,表格与表单的关联等等,是初学者必不可少的学习资料,经本人实际测试通过。
SSH(Struts2、Spring、Hibernate)是一个流行的企业级Web应用程序框架,它将MVC(Model-View-Controller)设计模式应用于实际开发中,提供了一种灵活且强大的架构。EXTJS则是一个JavaScript UI库,用于创建富客户端...
本系统采用经典的SSH2(Struts2、Hibernate、Spring)框架,并结合EXT前端技术,构建了一个高效、易用的Web应用。下面将详细解析这个系统的组成部分和关键技术。 1. **Struts2**: Struts2是MVC(模型-视图-控制器...
例如,使用`Ext.Ajax.request`方法发送HTTP请求,获取JSON格式的数据显示在GridPanel上,或者提交FormPanel的数据到服务器进行保存。 - **添加数据**: 用户填写FormPanel中的信息,点击“保存”按钮,ExtJS通过Ajax...
SSH_ExtJS项目实例是一个基于Java开发的Web应用程序,它结合了Spring、Struts2和Hibernate这三大主流的Java EE框架,并且利用Ext JS 4作为前端展示技术,提供了丰富的用户界面和交互体验。SSH(Spring、Struts2、...
综上所述,这个"图书管理系统(struts+hibernate+spring+ext)"项目为开发者提供了一个深入理解SSH+EXT技术栈的平台,同时也为初学者提供了一个实战案例,有助于提升其在Web开发领域的技能。通过学习和实践这个系统,...
本系统采用经典的SSH(Struts、Hibernate、Spring)框架进行开发,并结合EXT前端库,构建了一个功能完备、易用的图书管理平台。下面将详细介绍这个系统的架构设计和技术要点。 1. **Struts框架**:Struts是Java Web...
标题中的“ExtJs一张表分页与增删改查”是指使用Ext Js前端框架来实现一个数据表格的分页显示,以及对表格数据进行添加、删除、修改和查询操作的基础功能。这种功能在Web应用程序中非常常见,尤其在管理信息系统中,...
- **dumpe2fs** - 备份ext2/ext3/ext4文件系统。 - **dump** - 备份文件系统。 #### 十一、关机和查看系统信息 - **shutdown** - 关闭或重启系统。 - **halt** - 关闭系统。 - **init** - 发送信号给init进程。 ##...
功能:使用dwr完成在客户端无刷新的分页排序等 <br>工具:MyEclipse 6.0,数据库SQL...shop.js就是简单的修改得到的. <br>在服务器端就是提供数据,如果不是用Spriing就要修改dwr.xml(用的是spring bean) <br>...