`
zjnbshifox
  • 浏览: 316107 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

ExtJs 2.0 GridPanel+Struts2 with JSON plugin[更新代码]

阅读更多
extjs2.0发布了,功能有了很大提高,看了别人的extjs教程【http://203.93.254.59:8888/extdoc/html/index.html】,自己想把struts和spring框架的页面也用extjs来处理,就做了这个extjs+struts2+json plugin的例子,附件中有代码,不过没有包含库,请自行下载

struts2的json plugin的位置在:http://code.google.com/p/jsonplugin/
下载json plugin的jar包,放到/WEB-INF/lib/目录下就可以了

Spring + Struts + JPA的项目结构如其他例子中的一致
首先是web.xml
xml 代码
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app id="WebApp_ID" version="2.4"  
  3.     xmlns="http://java.sun.com/xml/ns/j2ee"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  6.     <display-name>quickstart</display-name>  
  7.     <filter>  
  8.         <filter-name>struts2</filter-name>  
  9.         <filter-class>  
  10.             org.apache.struts2.dispatcher.FilterDispatcher  
  11.         </filter-class>  
  12.     </filter>  
  13.     <filter>  
  14.         <filter-name>jpaFilter</filter-name>  
  15.         <filter-class>  
  16.             org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter  
  17.         </filter-class>  
  18.         <init-param>  
  19.             <param-name>entityManagerFactory</param-name>  
  20.             <param-value>entityManagerFactory</param-value>  
  21.         </init-param>  
  22.     </filter>  
  23.     <filter-mapping>  
  24.         <filter-name>jpaFilter</filter-name>  
  25.         <url-pattern>*.action</url-pattern>  
  26.     </filter-mapping>  
  27.     <filter-mapping>  
  28.         <filter-name>struts2</filter-name>  
  29.         <url-pattern>/*</url-pattern>  
  30.     </filter-mapping>  
  31.     <welcome-file-list>  
  32.         <welcome-file>index.jsp</welcome-file>  
  33.     </welcome-file-list>  
  34.     <listener>  
  35.         <listener-class>  
  36.             org.springframework.web.context.ContextLoaderListener  
  37.         </listener-class>  
  38.     </listener>  
  39. </web-app>  

加入jpaFilter,是为了不让hibernate的session过早关闭,因为有的action会通过ajax动态调用。
下面是struts.xml,注意struts.xml需要放在源代码目录下面:

xml 代码
 
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
  5. <struts>  
  6.     <constant name="struts.objectFactory" value="spring" />  
  7.     <constant name="struts.devMode" value="true" />  
  8.     <constant name="struts.i18n.encoding" value="UTF-8"/>  
  9.     <package name="person" extends="json-default">  
  10.         <action name="list" method="execute" class="personaction">  
  11.             <result type="json"/>  
  12.         </action>         
  13.     </package>  
  14. </struts>  

这里注意,
struts.objectFactory告诉struts所有的action都到spring的上下文里面去找,另外还需要注意,我们自己的包要继承自json-default,这样才可以在result的type属性中使用json。
下面是spring的配置文件applicationContext.xml:
xml 代码
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop"  
  5.     xmlns:tx="http://www.springframework.org/schema/tx"  
  6.     xsi:schemaLocation="  
  7.     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  
  8.     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd  
  9.     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">  
  10.     <bean  
  11.         class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />  
  12.     <bean id="entityManagerFactory"  
  13.         class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">  
  14.         <property name="dataSource" ref="dataSource" />  
  15.         <property name="jpaVendorAdapter">  
  16.             <bean  
  17.                 class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">  
  18.                 <property name="database" value="MYSQL" />  
  19.                 <property name="showSql" value="true" />  
  20.             </bean>  
  21.         </property>  
  22.     </bean>  
  23.     <bean id="dataSource"  
  24.         class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  25.         <property name="driverClassName" value="com.mysql.jdbc.Driver" />  
  26.         <property name="url" value="jdbc:mysql://localhost/extjs" />  
  27.         <property name="username" value="root" />  
  28.         <property name="password" value="" />  
  29.     </bean>  
  30.   
  31.       
  32.     <bean id="transactionManager"  
  33.         class="org.springframework.orm.jpa.JpaTransactionManager">  
  34.         <property name="entityManagerFactory"  
  35.             ref="entityManagerFactory" />  
  36.     </bean>  
  37.     <tx:annotation-driven transaction-manager="transactionManager" />  
  38.     <!--Service 开始 -->  
  39.     <bean id="personService" class="com.myext.service.impl.PersonServiceJpaImpl"/>  
  40.     <bean id="personaction" class="com.myext.action.PersonPageAction">  
  41.         <property name="person" ref="personService"/>  
  42.     </bean>  
  43. </beans>  

这里的bean personaction和strutx.xml中的action class一致就可以了,下面是代码:
action:
java 代码
  1. package com.myext.action;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import com.myext.service.PersonService;
  5. public class PersonPageAction {
  6. private int limit=10;
  7. private int start=0;
  8. private PersonService person;
  9. private int total=0;
  10. private List persons = new ArrayList();
  11. private boolean success=true;
  12. public boolean getSuccess(){
  13. return this.success;
  14. }
  15. public void setLimit(int limit) {
  16. this.limit = limit;
  17. }
  18. public void setStart(int start) {
  19. this.start = start;
  20. }
  21. public void setPerson(PersonService person) {
  22. this.person = person;
  23. }
  24. public int getTotal() {
  25. return total;
  26. }
  27. public void setTotal(int total) {
  28. this.total = total;
  29. }
  30. public List getPersons() {
  31. return persons;
  32. }
  33. public void setPersons(List persons) {
  34. this.persons = persons;
  35. }
  36. public String execute(){
  37. this.total = person.getTotal();
  38. this.persons = person.getPage(this.start, this.limit);
  39. return "success";
  40. }
  41. }
service:
java 代码
  1. package com.myext.service.impl;
  2. import java.util.List;
  3. import javax.persistence.EntityManager;
  4. import javax.persistence.PersistenceContext;
  5. import javax.persistence.Query;
  6. import com.myext.model.Person;
  7. import com.myext.service.PersonService;
  8. public class PersonServiceJpaImpl implements PersonService {
  9. private EntityManager em;
  10. private static String poname = Person.class.getName();
  11. @PersistenceContext
  12. public void setEntityManager(EntityManager em){
  13. this.em = em;
  14. }
  15. @SuppressWarnings("unchecked")
  16. @Override
  17. public List getPage( int start, int limit) {
  18. Query q = this.em.createQuery("from " + poname );
  19. q.setFirstResult(start);
  20. q.setMaxResults(limit);
  21. return q.getResultList();
  22. }
  23. @Override
  24. public int getTotal() {
  25. return this.em.createQuery("from " + poname).getResultList().size();
  26. }
  27. }
页面的代码:
xml 代码
  1. xml version="1.0" encoding="UTF-8" ?>
  2. <%@ page language="java" contentType="text/html; charset=UTF-8"
  3. pageEncoding="UTF-8"%>
  4. >
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  8. <title>Grid3<!---->title>
  9. <link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css" />
  10. <!---->
  11. <script type="text/javascript" src="extjs/adapter/ext/ext-base.js"><!---->script>
  12. <script type="text/javascript" src="extjs/ext-all.js"><!---->script>
  13. <script type="text/javascript" src="extjs/ext-lang-zh_CN.js"><!---->script>
  14. <!---->head>
  15. <body>
  16. <script type="text/javascript" src="grid3.js"><!---->script>
  17. <div id="grid3" >
  18. <!---->div>
  19. <!---->body>
  20. <!---->html>
grid3.js代码
js 代码
  1. /**
  2. * @author fox
  3. */
  4. Ext.onReady(function(){
  5. Ext.BLANK_IMAGE_URL = 'extjs/resources/images/default/s.gif';
  6. Ext.QuickTips.init();
  7. var sm = new Ext.grid.CheckboxSelectionModel(); //CheckBox选择列
  8. var cm = new Ext.grid.ColumnModel([
  9. new Ext.grid.RowNumberer(), //行号列
  10. sm,
  11. {header:'编号',dataIndex:'id'},
  12. {header:'性别',dataIndex:'sex',renderer:function(value){
  13. if(value=='male'){
  14. return "";
  15. }else{
  16. return "";
  17. }
  18. }}, //增加性别,自定义renderer,即显示的样式,可以加html代码,来显示图片等。
  19. {header:'名称',dataIndex:'name'},
  20. {header:'描述',dataIndex:'descn'}
  21. ]);
  22. var ds = new Ext.data.Store({
  23. proxy: new Ext.data.HttpProxy({url:'list.action'}),//调用的动作
  24. reader: new Ext.data.JsonReader({
  25. totalProperty: 'total',
  26. root: 'persons',
  27. successProperty :'success'
  28. }, [
  29. {name: 'id',mapping:'id',type:'int'},
  30. {name: 'sex',mapping:'sex',type:'string'},
  31. {name: 'name',mapping:'name',type:'string'},
  32. {name: 'descn',mapping:'descn',type:'string'} //列的映射
  33. ])
  34. });
  35. var grid = new Ext.grid.GridPanel({
  36. el: 'grid3',
  37. ds: ds,
  38. sm: sm,
  39. cm: cm,
  40. width:700,
  41. height:280,
  42. bbar: new Ext.PagingToolbar({
  43. pageSize: 10,
  44. store: ds,
  45. displayInfo: true,
  46. displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
  47. emptyMsg: "没有记录"
  48. }) //页脚显示分页
  49. });
  50. //el:指定html元素用于显示grid
  51. grid.render();//渲染表格
  52. ds.load({params:{start:0, limit:10}}); //加载数据
  53. });
注意,这里的gridpanel一定要设置高度,否则数据是显示不出来的。
最后启动tomcat,在浏览器里输入http://localhost:8080/extjs/grid3.jsp,就可以看到效果
15
5
分享到:
评论
5 楼 hanjiangit 2009-06-16  
楼主这什么垃圾玩意儿 带数据库就把sql拿出来嘛  你是挂教程呢 还是调胃口 浪费时间
4 楼 leonmy 2008-12-14  
正想 改进原界面,先参考了 ,谢谢。
3 楼 xuang131 2008-01-23  
我也想要我qq 25851830请看见后加我发我下谢谢
2 楼 CALM 2007-12-17  
能不能代码打个包?数据库sql什么的都没有很愁啊
1 楼 sss 2007-12-13  
[color=red][/color][size=18][/size]
    [list=]
[/list]

相关推荐

    @@@extjs+struts2+json plugin的例子

    综上所述,`@@@extjs+struts2+json plugin的例子`是一个综合运用`ExtJS`前端框架、`Struts2`后端框架以及`JSON`数据交换格式的Web应用示例。这样的组合可以构建出高性能、用户体验良好的企业级应用,同时利用`Struts...

    ExtJs + Struts2 + JSON 程序总结

    通过Struts2处理后端逻辑并返回JSON数据,EXTJS能够动态地更新页面,呈现复杂的数据结构,从而提高用户体验。这种技术栈在现代企业级Web开发中非常常见,因为它能够简化数据交互,同时保持良好的性能和可维护性。

    extjs+struts2+hibernate+json登录程序

    ExtJS + Struts2 + Hibernate + JSON 登录程序是一个典型的Web开发示例,结合了前端JavaScript框架、MVC框架、持久层框架以及数据传输格式,实现了用户登录功能的前后端交互。下面将详细阐述这些技术及其在登录程序...

    extjs2.0+struts1.2+hibernate+spring增删改查

    本项目名为"extjs2.0+struts1.2+hibernate+spring增删改查",结合了四个核心的技术框架,它们分别是ExtJS 2.0、Struts 1.2、Hibernate和Spring,用于实现数据的CRUD(创建、读取、更新和删除)操作。这四个组件共同...

    Spring2.5+ibatis2.3+Extjs2.0+Struts2实现用户管理

    本项目以"Spring2.5+ibatis2.3+Extjs2.0+Struts2实现用户管理"为主题,旨在为初学者提供一个全面理解这些技术集成使用的实例。下面将详细阐述这四个关键组件及其在用户管理系统中的作用。 首先,Spring框架是Java...

    Extjs Tree + JSON + Struts2 示例源代码

    ExtJS Tree + JSON + Struts2 示例源代码是结合了三种技术来实现一个动态的、交互式的树形数据展示的应用。这个示例中,ExtJS用于前端UI的构建,JSON作为数据交换格式,而Struts2则作为后端MVC框架处理请求和返回...

    extjs tree + json+struts2示例源代码

    ExtJS Tree + JSON + Struts2 示例源代码详解 在Web开发中,构建交互式的用户界面是关键。ExtJS是一个强大的JavaScript库,尤其擅长创建桌面级的Web应用。本示例将详细介绍如何结合ExtJS的Tree组件、JSON数据格式...

    ExtJS+struts2+json登陆实例--源码

    这是一个基于ExtJS、Struts2和JSON的登录实例,适合初学者学习Web应用程序开发。这个实例演示了如何将前端的JavaScript框架ExtJS与后端的Java MVC框架Struts2结合,通过JSON进行数据交换实现用户登录功能。下面将...

    Extjs3.2+struts2.0+spring2.5+hibernate3.5+weblogic10+oracle10g含全包4

    Extjs3.2+struts2.0+spring2.5+hibernate3.5+weblogic10+oracle10g 第4部分

    ExtJS4+Accordion+SERVLET/STRUTS2+JSON+Ext.tree.Panel实例

    总结来说,这个实例展示了如何将前端的ExtJS4框架,特别是其Accordion布局和Ext.tree.Panel组件,与Servlet和Struts2后端框架集成,利用JSON进行数据交换,来创建一个动态的、交互性强的Web应用。用户可以通过折叠和...

    Extjs3.2+struts2.0+spring2.5+hibernate3.5+weblogic10+oracle10g含全包2

    Extjs3.2+struts2.0+spring2.5+hibernate3.5+weblogic10+oracle10g含全包 共5 部分 全部下载后解压缩

    Extjs3.2+struts2.0+spring2.5+hibernate3.5+weblogic10+oracle10g含全包3

    Extjs3.2+struts2.0+spring2.5+hibernate3.5+weblogic10+oracle10g含全包 第三部分

    Extjs3.2+struts2.0+spring2.5+hibernate3.5+weblogic10+oracle10g含全包1

    Extjs3.2+struts2.0+spring2.5+hibernate3.5+weblogic10+oracle10g含全包 共5 部分 全部下载后解压缩

    extjs+spring+struts+hibernate

    **标题:“extjs+spring+struts+hibernate”** **描述:“extjs+spring+struts+hibernate整合实例”** 这个项目是一个综合性的Web应用开发框架整合示例,它结合了ExtJS(一个强大的JavaScript UI库),Spring(一...

    Extjs+hibernate+struts2+spring案例大全源代码

    这是一个基于Java技术栈的Web应用开发案例集合,涵盖了ExtJS前端框架、Hibernate持久化框架、Struts2 MVC框架以及Spring框架的综合运用。这个源代码库对于初学者来说是一个宝贵的资源,可以帮助他们理解和掌握这些...

Global site tag (gtag.js) - Google Analytics