`
sunjiesh
  • 浏览: 100481 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ext简单应用(一)-SSH2+Ext2数据分页显示

    博客分类:
  • Ajax
阅读更多

     本人写的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>
 
分享到:
评论
5 楼 sunjiesh 2009-08-17  
<div class="quote_title">spencer 写道</div>
<div class="quote_div">
<div class="quote_title">softherk 写道</div>
<div class="quote_div">麻烦能不能把源码发给我一份啊,不胜感激  hrkai@163.com</div>
<br>能不能给我也发一份?谢谢!  laodaozei@163.com</div>
<p><br>最新的代码可以使用svn客户端下载,下面是svn地址:(http://studentwebdemo.googlecode.com/svn/trunk/studentbs)</p>
<p> </p>
4 楼 spencer 2009-08-17  
softherk 写道
麻烦能不能把源码发给我一份啊,不胜感激  hrkai@163.com

能不能给我也发一份?谢谢!  laodaozei@163.com
3 楼 softherk 2009-06-11  
麻烦能不能把源码发给我一份啊,不胜感激  hrkai@163.com
2 楼 leeawan 2009-06-11  
我使用了上述的方法,但是还是未能成功,楼主能否给一个完整的范例不胜感激 leeawan@gmail.com
1 楼 liujianst 2009-05-17  
适合新手。。。。。。。。。。

相关推荐

    ssh2+ext+oracle 的项目实例

    本项目实例结合了这两种技术,提供了一个基础的增删改查(CRUD)应用,展示了EXTJS在用户界面设计上的强大功能以及SSH2在后端数据处理和业务逻辑整合的优势。 首先,SSH2是一个流行的企业级开发框架,由Spring负责...

    ext+ssh代码和整合方案

    EXT是一个JavaScript库,用于构建富互联网应用程序(RIA),而SSH是Java Web开发中的一个流行框架组合,包括Spring框架负责依赖注入和事务管理,Struts处理MVC模式,以及Hibernate作为ORM解决方案。 EXTJS是一个...

    SSH框架+Ext技术做前台显示的客户关系管理系统T86.rar

    《SSH框架+Ext技术在客户关系管理系统的应用详解》 SSH框架,全称为Spring、Struts和Hibernate,是Java开发中的三大主流框架,它们分别负责控制层、展示层和持久层的功能,为开发者提供了强大的支持。Ext技术则是一...

    SSH+ajax(DWR)增删改查+分页SSHTest(导入即用).rar

    这个是一个ssh+ajax的增删改查实例,很适合刚入门的程序员,在项目中发展肯定要比你整天坐着看书好,希望会对大家有用

    ssh+extjs4.0grid增删改查

    SSH(Struts2 + Spring + Hibernate)是一种常见的Java Web开发框架组合,用于构建高效、可扩展的Web应用程序。Struts2提供了MVC架构,Spring管理依赖注入和事务处理,Hibernate则作为持久层框架,简化了数据库操作...

    java+ext网吧管理系统源代码,使用hibernate,包括数据库

    java+ext做的网吧管理系统源代码,使用hibernate,包括数据库(sql server2005) 使用json数据转换,dwr框架 整个系统只用到一个jsp页面,其他全部用js完成 包括用户管理,会员管理,充值,...使用EXT分页,带条件的分页等

    SSH+Ext2.2+MySql(2)

    采用SSH架构实现&lt;深入浅出ExtJs&gt;实例,系统包括:表格,分页,表单,表格与表单的关联等等,是初学者必不可少的学习资料,经本人实际测试通过。

    ssh-orcale-ext基础学习

    ssh-orcale-ext 实现ext的分页,grid的编辑并异步保存到数据库, 以及viewport等一些ext的基础知识,算是学了两个星期的小结吧。 对新手应该会有帮助。一个完整的工程, 带有.sql文件,导入表和数据,修改数据库连接...

    SSH+Ext2.2+MySql(1)

    采用SSH架构实现&lt;深入浅出ExtJs&gt;实例,系统包括:表格,分页,表单,表格与表单的关联等等,是初学者必不可少的学习资料,经本人实际测试通过。

    ssh_ext_图书管理系统

    SSH(Struts2、Spring、Hibernate)是一个流行的企业级Web应用程序框架,它将MVC(Model-View-Controller)设计模式应用于实际开发中,提供了一种灵活且强大的架构。EXTJS则是一个JavaScript UI库,用于创建富客户端...

    图书管理系统(struts+hibernate+spring+ext)130221.zip

    本系统采用经典的SSH2(Struts2、Hibernate、Spring)框架,并结合EXT前端技术,构建了一个高效、易用的Web应用。下面将详细解析这个系统的组成部分和关键技术。 1. **Struts2**: Struts2是MVC(模型-视图-控制器...

    Extjs+ssh 增删改查

    例如,使用`Ext.Ajax.request`方法发送HTTP请求,获取JSON格式的数据显示在GridPanel上,或者提交FormPanel的数据到服务器进行保存。 - **添加数据**: 用户填写FormPanel中的信息,点击“保存”按钮,ExtJS通过Ajax...

    ssh_extjs项目实例

    SSH_ExtJS项目实例是一个基于Java开发的Web应用程序,它结合了Spring、Struts2和Hibernate这三大主流的Java EE框架,并且利用Ext JS 4作为前端展示技术,提供了丰富的用户界面和交互体验。SSH(Spring、Struts2、...

    图书管理系统(struts+hibernate+spring+ext).rar

    综上所述,这个"图书管理系统(struts+hibernate+spring+ext)"项目为开发者提供了一个深入理解SSH+EXT技术栈的平台,同时也为初学者提供了一个实战案例,有助于提升其在Web开发领域的技能。通过学习和实践这个系统,...

    图书管理系统(struts+hibernate+spring+ext).zip

    本系统采用经典的SSH(Struts、Hibernate、Spring)框架进行开发,并结合EXT前端库,构建了一个功能完备、易用的图书管理平台。下面将详细介绍这个系统的架构设计和技术要点。 1. **Struts框架**:Struts是Java Web...

    ExtJs一张表分页与增删改查

    标题中的“ExtJs一张表分页与增删改查”是指使用Ext Js前端框架来实现一个数据表格的分页显示,以及对表格数据进行添加、删除、修改和查询操作的基础功能。这种功能在Web应用程序中非常常见,尤其在管理信息系统中,...

    150个常用Linux命令

    - **dumpe2fs** - 备份ext2/ext3/ext4文件系统。 - **dump** - 备份文件系统。 #### 十一、关机和查看系统信息 - **shutdown** - 关闭或重启系统。 - **halt** - 关闭系统。 - **init** - 发送信号给init进程。 ##...

    SSH例子

    功能:使用dwr完成在客户端无刷新的分页排序等 &lt;br&gt;工具:MyEclipse 6.0,数据库SQL...shop.js就是简单的修改得到的. &lt;br&gt;在服务器端就是提供数据,如果不是用Spriing就要修改dwr.xml(用的是spring bean) &lt;br&gt;...

Global site tag (gtag.js) - Google Analytics