Hibernate+Spring+Struts2+ExtJS开发CRUD功能
Struts、Spring、Hibernate三大框架的原理和优点

Struts的原理和优点.Struts工作原理MVC即Model—View—Controller的缩写,是一种常用的设计模式。
MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。
MVC的工作原理,如下图1所示:Struts 是MVC的一种实现,它将Servlet和JSP 标记(属于J2EE 规范)用作实现的一部分。
Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展.Struts的工作原理,视图:主要由JSP生成页面完成视图,Struts提供丰富的JSP 标签库: Html,Bean,Logic,Template等,这有利于分开表现逻辑和程序逻辑。
控制:在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。
ActionServlet是一个通用的控制组件。
这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。
它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。
另外控制组件也负责用相应的请求参数填充Action From(通常称之为FromBean),并传给动作类(通常称之为ActionBean)。
动作类实现核心商业逻辑,它可以访问java bean 或调用EJB。
最后动作类把控制权传给后续的JSP 文件,后者生成视图。
所有这些控制逻辑利用Struts-config.xml文件来配置。
模型:模型以一个或多个java bean的形式存在。
这些bean分为三类:Action Form、Action、JavaBean or EJB.Action Form通常称之为FormBean,封装了来自于Client的用户请求信息,如表单信息。
Action通常称之为ActionBean,获取从ActionSevlet传来的FormBean,取出FormBean中的相关信息,并做出相关的处理,一般是调用Java Bean或EJB等。
Struts2+Spring框架简介+Hibernate查询语言

出自Gavin King的手笔,目前最流行的开源ORM框架,其灵巧的设计,优秀的 性能,还有丰富的文档,都是其迅速风靡全球的重要因素。
Entity EJB
Entity EJB实质上也是一种ORM技术,这是一种备受争议的组件技术,很多人 说它非常优秀,也有人说它一钱不值。事实上,EJB为J2EE的蓬勃发展赢得了 极高的声誉,EJB作为一种重量级、高花费的ORM技术上,具有不可比拟的优势。 但由于其必须运行在EJB容器内,而且学习曲线陡峭,开发周期、成本相对较 高,因而限制EJB的广泛使用。
添加自动注解配置(自动扫描@Service,@Repository等注解)
<context:component-scan base-package="test,a"/>
<context:annotation-config/> 该配置将隐式地向Spring容器注册4个 BeanPostProcessor
<bean id="hello" class="test.HelloWorld" abstract="false“ lazy-init="default" autowire="default" dependencycheck="default"> <property name="helloWorld"> <value type="ng.String">Hello World From IOC</value> </property> </bean>
java开发简历crud怎么编写技术要点

java开发简历crud怎么编写技术要点Java开发简历CRUD是指在Java开发中,完成对数据库进行增删改查操作(Create,Retrieve,Update,Delete)。
在编写相关技术要点时,可以包括以下内容:1. 数据库基础知识:了解常见数据库的基本概念和操作,如MySQL、Oracle等。
掌握SQL语句的编写,熟悉常见的SQL 操作,如增删改查等。
2. Java编程基础:具备扎实的Java语言基础知识,包括面向对象思想、基本语法、流程控制、异常处理等。
掌握Java核心类库,熟悉常用的集合类和IO操作等。
3. JDBC技术:了解JDBC的基本原理和使用方法。
掌握数据库连接的建立、SQL语句的执行以及结果集的处理等。
熟悉JDBC的基本接口和常用类,如Connection、Statement、PreparedStatement等。
4. ORM框架:了解常见的ORM框架,如Hibernate、MyBatis 等。
熟悉ORM框架的配置和使用方法,掌握实体类与数据库表之间的映射关系的配置。
了解ORM框架的优缺点,能够根据需求选择合适的框架。
5. 设计模式:了解常见的设计模式,如单例模式、工厂模式、观察者模式等。
在实际开发中,合理运用设计模式能够提高代码的可维护性和扩展性。
6. Web开发技术:对于基于Web的Java开发,掌握常见的Web开发技术。
熟悉HTTP协议和Servlet规范,了解常见的Web容器,如Tomcat等。
熟悉JSP和前端技术,如HTML、CSS、JavaScript等。
7. Spring框架:熟悉Spring框架的基本原理和使用方法。
了解Spring的核心功能,如IoC和AOP等。
掌握Spring的常见模块,如Spring MVC、Spring Boot等。
了解Spring与其他框架的整合,如Spring和Hibernate的整合等。
8. 测试与调试:了解常用的测试框架和调试工具。
java开发简历crud怎么编写技术要点

java开发简历crud怎么编写技术要点Java开发简历CRUD(Create, Read, Update, Delete)是指对数据库的基本操作,包括新增数据、查询数据、更新数据和删除数据。
在编写Java开发简历时,需要突出自己在CRUD方面的技术要点,以展示自己在Java开发方面的能力和经验。
以下是一些可能包含在Java 开发简历CRUD技术要点中的内容。
1.数据库知识:说明自己熟悉常见的关系型数据库(如MySQL、Oracle等)以及非关系型数据库(如MongoDB、Redis等),了解数据库的基本概念和原理,能够使用SQL语言编写查询语句、创建表、定义索引等。
2. Java编程语言:突出自己熟练掌握Java语言,包括面向对象编程(OOP)的基本理念和特性,熟悉Java的核心类库和常用的开发框架。
3. JDBC(Java Database Connectivity):说明自己熟悉JDBC编程,能够使用JDBC API连接数据库,执行SQL语句,处理结果集等。
还可以介绍自己对JDBC的一些高级特性的了解,如批量处理、事务管理等。
4. ORM(Object-Relational Mapping)框架:如果有使用过ORM 框架(如Hibernate、MyBatis等)的经验,可以突出说明。
说明自己能够使用ORM框架实现数据对象(DO)与数据库表之间的映射,简化数据库操作的开发流程。
5. SQL优化:突出自己对SQL优化的经验和技巧。
说明自己能够分析查询语句的执行计划,使用索引加速查询,优化SQL语句的逻辑和物理结构,提升数据库的性能。
6.事务管理:说明自己熟悉事务的概念和原理,能够使用数据库事务来确保数据的一致性和完整性。
还可以介绍自己对分布式事务(如XA事务)的了解和使用经验。
7.缓存技术:说明自己熟悉常见的缓存技术(如Redis、Memcached等),能够将缓存技术应用于减轻数据库的压力,提高系统的性能和可伸缩性。
struts2+hibernate3.2+spring2.5集成步骤

Struts2+Hibernate3.2+Sprint2.5整合Hibernate使用数据库连接池、MyEclipse6.5Tomcat6.0创建项目,整合Hibernate右键项目,MyEclipse—>Add Hibernate Capabilities使用Spring管理,把勾去掉整合Spring2.5右键项目,MyEclipse—>AddSpring Capabilities配置Hibernate的数据源Hibernate自带的连接池算法相当不成熟。
它只是为了让你快些上手,并不适合用于产品系统或性能测试中。
出于最佳性能和稳定性考虑你应该使用第三方的连接池。
只需要用特定连接池的设置替换hibernate.connection.pool_size 即可。
这将关闭Hibernate自带的连接池。
例如,你可能会想用C3P0.C3P0是一个随Hibernate一同分发的开源的JDBC连接池,它位于lib目录下。
如果你设置了hibernate.c3p0.*相关的属性,Hibernate将使用C3P0ConnectionProvider来缓存JDBC连接。
如果你更原意使用Proxool,请参考发行包中的hibernate.properties并到Hibernate网站获取更多的信息。
<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:jee="/schema/jee"xsi:schemaLocation="/schema/beans[url]/schema/beans/spring-beans-2.0.xsd[/url] [url]/schema/jee[/url][url]/schema/jee/spring-jee-2.0.xsd[/url]"><!--********************配置数据源,采用C3P0********************--> <bean id="dataSource"class="boPooledDataSource"destroy-method="close"><property name="driverClass"><value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value> </property><property name="jdbcUrl"><value>jdbc:sqlserver://localhost:1433;DatabaseName=shopping</value> </property><property name="user"><value>sa</value></property><property name="password"><value>sa</value></property><!--连接池中保留的最小连接数。
Java语言应用中的常见技术和框架介绍

Java语言应用中的常见技术和框架介绍Java语言是一门广泛应用的高级编程语言,自推出以来就一直受到程序员们的青睐。
由于其平台无关性、可移植性以及强大的生态系统,Java语言在大型企业级应用开发、云计算、数据科学、Web开发等领域得到广泛应用。
在Java语言技术的基础上,还有很多重要的技术和框架,下面就来简单介绍一下Java常见的技术和框架。
一、Spring框架Spring是目前最流行的开源Java框架之一,它提供了一个全面的编程和配置模型,可以解决开发企业级应用中遇到的各种问题。
Spring框架提供了一个轻量级的容器,其中可以管理对象的生命周期,控制依赖注入和AOP(面向切面编程)等关键特性。
此外,Spring还提供了一系列的插件和扩展,用于支持持久化、web开发、缓存、安全、集成和测试等方面的功能。
二、Hibernate框架Hibernate是一个流行的ORM(对象关系映射)框架,它是Java持久化的事实标准。
Hibernate的主要目标是简化数据访问并提高开发人员的生产力,它通过在代码中使用对象来处理数据库中的数据,将对象映射到关系数据库中的表和列。
Hibernate提供了一系列的API和工具,支持查询、缓存、事务管理和数据库连接池等特性。
Hibernate还支持多种关系型数据库,包括MySQL、Oracle和SQL Server等。
三、Struts框架Struts是一个流行的MVC(模型-视图-控制器)框架,它可以帮助开发人员组织和管理Web应用程序。
Struts的核心组件是Action,它处理来自浏览器的请求并根据请求内容执行相应的动作。
Struts还提供了一些其他的功能,包括表单数据验证、错误处理、邮件和文件上传等。
Struts具有很高的可扩展性,可以与其他框架和工具一起使用。
四、Java EEJava EE(Java Enterprise Edition)是一个广泛使用的Java应用程序平台,这个平台包含了许多基本的技术和API,用于构建企业级应用。
个人总结Hibernate+struts实例学习过程

这篇文章本来是要在昨天睡觉之前发上来,但是家里的网速实在是让我郁闷,刚忙完工作偷空上来赶紧发了,还有一点让我郁闷的就是JavaEye的这个编辑器不是太好用,在word里面写好的内容不能全部粘贴过来,文档中有很多图片,需要一张张上传,然后在加上来!痛苦。
以后还是少截图。
不说了,还是赶紧发文章吧!1、数据库设计建立crud.student数据库表:图1 数据库表你可以使用如下语句创建该库表:Sql代码1.create database if not exists `crud`;E `crud`;3.DROP TABLE IF EXISTS `student`;4.CREATE TABLE `student` (5. `id` int(4) NOT NULL auto_increment,6. `name` varchar(20) default NULL,7. `age` int(4) default NULL,8. `score` int(4) default NULL,9. PRIMARY KEY (`id`)10.) ENGINE=InnoDB DEFAULT CHARSET=utf8;在这里我使用的是SQL Server2000数据库,当然你也可以选择别的数据库,只是在选择之前请准备好相应的jar包即可。
2、程序编写:第一步:配置数据源1、打开MyEclipse,新建一个web工程,这里命名为hibernate_demo2、打开数据库设置器:依次单击【window】-->【Show View】-->【Other…】如下图所示:3、在弹出的窗口ShowView中选择DB Browser,如下图所示:4、在DB Browser窗口中,选择显示的图标,单击右键执行新建命令,如下图示5、弹出Database Driver对话框,在此会要求我们配置数据库的相关信息,具体设置如下图所示,设置完成,单击Finish.(Connection URL填写:jdbc:microsoft:sqlserver://localhost:1433 Driver IARS:加入SQL Server 的那三个jar包)【第二步】引入hibernate配置文件1、添加hibernate包:选中我们的Web工程,依次单击鼠标右键-->MyEclipse-->Add Hibernate Capabilities… 如下图所示:2、在弹出的窗口中做如下设置:【Next】【Next】单击Next,把要创建的SessionFactory放置于相应的包中,如果前面没有设置包名,这里要先单击New创建新的包。
利用Struts2+Spring3+Hibernate4+ExtJS4.2开发企业富客户端商业应用

一、本课程是怎么样的一门课程(全面介绍)1.1、课程的背景该课程是北风品牌课程-《BF-TECH J2EE软件工程师就业课程》第四阶段:课程二、Struts2+Spring3+Hibernate4+ExtJS4.2开发企业富客户端商业应用课程。
由于富客户端技术进一步扩展浏览器功能,使之提供更加高效和友好的用户接口,越来越多的企业和开发人员选择使用富客户端技术构建商业应用1.2、课程内容简介本课程主要是介绍ExtJs4.0 最新版本特性,了解并掌握extjs4语法及应用,了解最流行的富客户端框架及熟悉掌握其高级特性,并结合SSH框架与DWR实现富户端商业应用的全部开发过程1.3、课程大纲一、理论讲解部分:ch01_ExtJS4快速入门-Hello ExtJs4第一讲:ExtJS4.x框架最新特性简介第二讲:第一个ExtJS4.x官方推荐示例程序第三讲:利用sencha sdk tool打包发布ExtJS4.x应用ch02_ExtJs 4 新类库特性及JS新语法扩展第一讲:ExtJS4 对JS语法的扩展第二讲:ExtJS 4 中的新功能- 定时事件与健盘导航第三讲:ExtJS 4 类库新特性-Ext.difine与Configurationch03_ExtJs 4 中布局与容器第一讲:ExtJs 4 类的混合与静态类的使用第二讲:ExtJs 4 中的容器与布局(上)第三讲:ExtJs 4 中的容器与布局(下)ch04_ExtJs 4 常用组件详解第一讲:Ext.Button组件详解第二讲:Ext.MessageBox组件详解第四讲:滚轴控件、进度条控件和编辑控件第五讲:Ext中面板与VIewport组件第六讲:Ext.tab.tabPanel组件详解ch05_ExtJs 4 选择器与DOM操作第一讲:Ext.DomQuery中的选择器第二讲:Ext4中利用DomQuery进行筛选与过滤第三讲:Ext4中的DOM操作与事件ch06_ExtJs 4 中的数据操作(Proxy+Model+Store)第一讲:Ext.Ajax.Request功能详解第二讲:Ext.data.Proxy Rest及Direct操作数据第三讲:Ext.data.Model及自定义验证详解第四讲:Ext.data.Store对数据的操作第五讲:Store+Model+Proxy综合示例ch07、ExtJs 4 中的Form表单详解第一讲:BasicForm+BaseField的配置项、属性、方法和事件第二讲:常用的验证函数Ext.form.field.VTypes第三讲:常用Form表单组件详解(一)第四讲:常用Form表单组件详解(二)第五讲:常用Form表单组件详解(三)第六讲:常用Form表单组件详解(四)第七讲:Form表单的加载、提交与验证数据第八讲:综合示例-产品信息管理ch08、ExtJs 4 中的复杂组件-Grid && Tree第一讲:Ext4 Grid组件配置详解第二讲:Grid的本地排序和过滤第三讲:Grid行内数据修改及主从表实现第四讲:Tree的配置项、属性、方法和事件第五讲:Tree 的动态加载与维护ch09、ExtJs 4 中的图形与图表第一讲:ExtJs中的图表初探第二讲:ExtJs中的图表详解第三讲:ExtJs中的图表高级第五讲:ExtJs中的图形高级ch10_ExtJs 4 中的MVC应用架构第一讲:ExtJS 4 MVC原理第二讲:ExtJS 4.x MVC框架搭建与注意事项第三讲:ExtJS 4.x MVC综合示例(一)第四讲:ExtJS 4.x MVC综合示例(二)ch11_SSH2 整合ExtJs 4 MVC开发Web应用第一讲:本章简介、后台框架简介、登录功能第二讲:前台框架搭建,构造出菜单树第三讲:用户的初步界面,完成查询功能、添加功能第四讲:用户的修改、删除功能和导入eclipse中需要注意的事项ch12_ExtJs4.2 中主题与皮肤第一讲:ExtJs4.2 中主题与皮肤快速制作(一)第二讲:ExtJs4.2 中主题与皮肤快速制作(二)第三讲:ExtJs4.2 中主题与皮肤按标准制作(一)第四讲:ExtJs4.2 中主题与皮肤按标准制作(二)更多免费资料视频加群106537671二、项目讲解部分(讲师:飞扬):第1章:项目基本框架搭建、Extjs4的MVC中添加多个Controller支持第2章:菜单树配置、动态获取菜单树、展示用户列表第3章:后台框架简单封装,角色管理初步讲解第4章:角色管理、展示权限树第5章:角色管理,通过权限树动态修改角色权限第6章:部门管理,树形结构的动态添加、移除第7章:部门管理,树形结构的顺序调整第8章:项目管理,新建工作项目第9章:普通下拉列表,树形下拉列表,多选下拉列表的实现第10章:实现多选下拉列表如何修改,用户登录后根据角色构造权限树。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Hibernate+Spring+Struts2+ExtJS开发CRUD功能/myloon/archive/2007/11/08/1873652.aspx入门:各种开源框架环境及下载:Hibernate:3.x /需要hibernate core 和annotations 包。
Spring:2.x /Struts2:2.x /2.x/ExtJS:2.X /JSON:JSON可以到/查看详细内容,这里使用json-lib /本所需要的包:2、配置:(1)首先是配置web.xml,配置方法可以在下面的配置文件代码注释中查看,这里主要是Struts2的配置:<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-clas s></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>和Spring的配置:<context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring/*.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderList ener</listener-class></listener>Web.xml的全部文件:<?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp_ID" version="2.4" xmlns="/xml/ns/j2ee" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd"><display-name>struts2</display-name><!-- Spring ApplicationContext配置文件的路径,可使用通配符*,多个路径用,号分隔,此参数用于后面的Spring-Context loader --><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring/*.xml</param-value></context-param><!-- 著名 Character Encoding filter --><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</fil ter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><!-- struts2 滤镜配置 --><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-clas s></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--Spring ApplicationContext 载入,必须--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</li stener-class></listener><!-- Spring 刷新Introspector防止内存泄露 --><listener><listener-class>org.springframework.web.util.IntrospectorCleanupListener< /listener-class></listener><!-- session超时定义,单位为分钟 --><session-config><session-timeout>10</session-timeout></session-config><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list></web-app>(2)Hibernate配置:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><!—-数据库驱动类名称 --><propertyname="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</pr operty><!—-数据库用户名 --><property name="ername">MY</property><property name="hibernate.default_schema">MY</property> <!—-数据库用户密码 --><property name="hibernate.connection.password">MY</property> <!—-数据库连接字符串--><propertyname="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:loon</prope rty><propertyname="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</property> <!—-控制台是否输出SQL语句 --><property name="hibernate.show_sql">true</property><mapping class="privilege.database.Level" /></session-factory></hibernate-configuration>(3)Spring基本配置:配置文件应该在WEB-INF/spring/下面<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN""/dtd/spring-beans.dtd"><beans default-autowire="autodetect"><!—如果用的是XML配置文件,sessionFactory用这个配置"org.springframework.orm.hibernate3.LocalSessionFactoryBean" --> <bean id="sessionFactory"class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactor yBean"><property name="configLocation"><value>classpath:hibernate.cfg.xml</value></property><!-- 配置多个hibernate.cfg.xml<property name="configLocations"><list><value>classpath:hibernate_admin1.cfg.xml</value><value>classpath:hibernate_admin2.cfg.xml</value></list></property>--></bean><!-- Hibernate 事务管理 --><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean><bean id="baseTransactionProxy"class="org.springframework.transaction.interceptor.TransactionProxyFactoryBe an" abstract="true"><property name="transactionManager" ref="transactionManager" /><property name="transactionAttributes"><props><prop key="find*">PROPAGATION_REQUIRED,readOnly</prop><prop key="persist*">PROPAGATION_REQUIRED,-Exception</prop><prop key="remove*">PROPAGATION_REQUIRED,-Exception</prop><!--<prop key="insert*">PROPAGATION_REQUIRED</prop><prop key="save">PROPAGATION_REQUIRED</prop><prop key="update*">PROPAGATION_REQUIRED</prop><prop key="edit*">PROPAGATION_REQUIRED</prop><prop key="del*">PROPAGATION_REQUIRED</prop><prop key="get*">PROPAGATION_REQUIRED,readOnly</prop><prop key="query*">PROPAGATION_REQUIRED,readOnly</prop><prop key="disPlay*">PROPAGATION_REQUIRES_NEW</prop>--></props></property></bean><bean id="LevelService" parent="baseTransactionProxy"><property name="target"><bean class="privilege.service.LevelService"><property name="dao"><bean class="privilege.dao.LevelDAO"><property name="sessionFactory" ref="sessionFactory" /></bean></property></bean></property></bean><bean id="LevelAction" class="privilege.action.LevelAction"><property name="levelService" ref="LevelService" /></bean></beans>(4)struts.xml文件的配置:<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="privilege" extends="struts-default"><action name="LoadLevel" class="LevelAction" method="findLevelById"> <result>/resource/json_struts2.jsp</result></action><action name="LevelAjaxJsonData" class="LevelAction"method="jsonExecute"><result>/resource/json_struts2.jsp</result></action></package></struts>3、建立的项目目录:Root:/resource/ext2.0/ 将下载的ext-2.0-beta1.zip文件解压到该目录/WEB-INF/web.xml/WEB-INF/lib/WEB-INF/classes/struts.xml/WEB-INF/spring/applicationContext.xml4、代码清单:Level.javaimport javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name = "LOON_LEVEL")public class Level implements java.io.Serializable {private Long levelid;private String levelname;private String description;public Level() {}public Level(Long levelid) {this.levelid = levelid;}public Level(Long levelid, String levelname, String description) { this.levelid = levelid;this.levelname = levelname;this.description = description;}@Id@Column(name = "LEVELID", unique = true, nullable = false, precision = 5, scale = 0)public Long getLevelid() {return this.levelid;}public void setLevelid(Long levelid) {this.levelid = levelid;}@Column(name = "LEVELNAME", length = 64)public String getLevelname() {return this.levelname;}public void setLevelname(String levelname) {this.levelname = levelname;}@Column(name = "DESCRIPTION", length = 256)public String getDescription() {return this.description;}public void setDescription(String description) {this.description = description;}}ILevelDAO.javaimport java.util.List;public interface ILevelDAO {public Level findLevelById(Long id);public List<Level> findAllLevels();public void persistLevel(Level level);public void removeLevel(Level level);public void removeById(Long id);}LevelDAO.javaimport java.util.List;import org.hibernate.Session;import org.springframework.orm.hibernate3.HibernateCallback;importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;public class LevelDAO extends HibernateDaoSupport implements ILevelDAO {public LevelDAO() {super();}public Level findLevelById(Long id) {return (Level) getHibernateTemplate().get(Level.class, id);}public List<Level> findAllLevels() {returngetHibernateTemplate().loadAll(Level.class);// .find("from Level o");//}public void persistLevel(Level level) {getHibernateTemplate().saveOrUpdate(level);}public void removeLevel(Level level) {getHibernateTemplate().delete(level);}public void removeById(final Long id) {this.getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) {session.createQuery("delete from Level o where o.levelid=" + id + "").executeUpdate();return 1;}});}}ILevelService.javaimport java.util.List;public interface ILevelService {public Level findLevelById(Long id) throws Exception;public List<Level> findAllLevels() throws Exception;public List<Level> findLevelsByExample(Level level) throws Exception;public void persistLevel(Level level) throws Exception;public void removeLevel(Level level) throws Exception;public void removeLevelById(Long id) throws Exception;}LevelService.javaimport java.util.List;import privilege.dao.*;import privilege.database.Level;import org.springframework.context.ApplicationContext;public class LevelService implements ILevelService {private ILevelDAO dao;private static final String SERVICE_BEAN_ID = "LevelService";public LevelService() {super();}public static ILevelService getInstance(ApplicationContext context) {return (ILevelService) context.getBean(SERVICE_BEAN_ID);}public Level findLevelById(Long id) throws Exception {try {return getDao().findLevelById(id);} catch (RuntimeException e) {throw new Exception("findLevelById failed with the id " + id + ": " + e.getMessage());}}public void persistLevel(Level level) throws Exception {try {getDao().persistLevel(level);} catch (RuntimeException e) {throw new Exception("persistLevel failed: "+ e.getMessage());}}public void removeLevel(Level level) throws Exception {try {getDao().removeLevel(level);} catch (RuntimeException e) {throw new Exception("removeLevel failed: "+ e.getMessage());}}public void removeLevelById(Long id) throws Exception {try {getDao().removeById(id);} catch (RuntimeException e) {throw new Exception("removeLevel failed: "+ e.getMessage());}}public void setDao(ILevelDAO dao) {this.dao = dao;}public ILevelDAO getDao() {return this.dao;}}ExtJSONActionSuport.java辅助类,继承了ActionSupportimport com.opensymphony.xwork2.ActionSupport;public class ExtJSONActionSuport extends ActionSupport { private int totalCount = 0;// 总数private transient int start = 0;// 开始数private transient int limit = 0;// 限制数量private String jsonString = "";public String getJsonString() {return jsonString;}public void setJsonString(String jsonString) { this.jsonString = jsonString;}public String jsonExecute() throws Exception { return super.execute();}public int getTotalCount() {return totalCount;}public void setTotalCount(int totalCount) {this.totalCount = totalCount;}public int getStart() {return start;}public void setStart(int start) {this.start = start;}public int getLimit() {return limit;}public void setLimit(int limit) {this.limit = limit;}}LevelAction.javaimport java.util.List;import java.util.ArrayList;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import net.sf.json.JSONArray;import privilege.database.Level;import privilege.service.*;import commons.utils.action.ExtJSONActionSuport;public class LevelAction extends ExtJSONActionSuport {private static final long serialVersionUID = 1L;private Level level = null;private List<Level> levels = new ArrayList<Level>(0);private ILevelService levelService = null;private String delData;public String execute() {return this.SUCCESS;}@Overridepublic String jsonExecute() throws Exception {if (this.getDelData() != null && !"".equals(this.getDelData())) {if (this.getDelData().indexOf(",") < 0) {this.levelService.removeLevelById(Long.parseLong(this.getDelData( )));System.out.println("del_id:" + getDelData());} else {String id[] = this.getDelData().split(",");for (int i = 0; i < id.length; i++) {System.out.println("del:" + id[i]);this.levelService.removeLevelById(Long.parseLong(id[i]));}}}HttpSession session =ServletActionContext.getRequest().getSession();Object o = null;// session.getAttribute("Level_Data1");if (o == null) {try {this.levels = this.getLevelService().findAllLevels();session.setAttribute("Level_Data1", this.levels);System.out.println("query database");} catch (Exception e) {e.printStackTrace();}} else {this.setLevels(((List<Level>) o));}this.setTotalCount(this.levels.size());JSONArray array = JSONArray.fromObject(this.levels);// System.out.println(this.getStart() + "---" + this.getLimit());this.setJsonString("{success:true,totalCount : " +this.getTotalCount() + ", list:" + array.toString() + "}");// System.out.println(this.getJsonString());return super.jsonExecute();}/***Find an entity by its id(primary key).**@param id*@return The found entity instance or null if the entity does not exist.*/public String findLevelById(Long id) {try {this.level = this.getLevelService().findLevelById(id);} catch (Exception e) {e.printStackTrace();}JSONArray array = JSONArray.fromObject(this.levels);this.setJsonString(array.toString());return SUCCESS;}public String findLevelById() {System.out.println(this.level.getLevelid());try {this.level =this.getLevelService().findLevelById(this.level.getLevelid());} catch (Exception e) {e.printStackTrace();}JSONArray array = JSONArray.fromObject(this.level);this.setJsonString(array.toString());this.setJsonString("{success:true,totalCount:1,list:" +array.toString() + "}");System.out.println(array.toString());return SUCCESS;}/***@return Return all persistent instances of the<code>Level</code> entity.*/public String getAllLevels() {try {this.levels = this.getLevelService().findAllLevels();} catch (Exception e) {e.printStackTrace();}return SUCCESS;}/***Make the given instance managed and persistent.**@return*/public String persistLevel() {System.out.println(this.level.getLevelid() + "---" + this.level.getLevelname() + "---"+ this.level.getDescription());this.setJsonString("{success:true}");try {this.getLevelService().persistLevel(this.getLevel());} catch (Exception e) {e.printStackTrace();}return SUCCESS;}/***Remove the given persistent instance.**@return*/public String removeLevel() {try {this.getLevelService().removeLevel(this.getLevel());} catch (Exception e) {e.printStackTrace();}return SUCCESS;}/***Remove an entity by its id(primary key).***@return*/public String removeLevelById(Long id) {try {this.getLevelService().removeLevelById(id);} catch (Exception e) {e.printStackTrace();}return SUCCESS;}public Level getLevel() {return level;}public void setLevel(Level level) {this.level = level;}public List<Level> getLevels() {return levels;}public void setLevels(List<Level> levels) {this.levels = levels;}public ILevelService getLevelService() {return levelService;}public void setLevelService(ILevelService levelService) { this.levelService = levelService;}public String getDelData() {return delData;}public void setDelData(String delData) {this.delData = delData;}}配置spring,添加:<bean id="LevelService" parent="baseTransactionProxy"><property name="target"><bean class="privilege.service.LevelService"><property name="dao"><bean class="privilege.dao.LevelDAO"><property name="sessionFactory"ref="sessionFactory" /></bean></property></bean></property></bean><bean id="LevelAction" class="privilege.action.LevelAction"> <property name="levelService" ref="LevelService" /> </bean>配置struts.xml:添加操作配置:<action name="AddLevel" class="LevelAction" method="persistLevel"> <result>/resource/json_struts2.jsp</result></action>修改时载入数据操作配置:<action name="LoadLevel" class="LevelAction" method="findLevelById"> <result>/resource/json_struts2.jsp</result></action>列表查询和删除数据时操作配置:<action name="LevelAjaxJsonData" class="LevelAction" method="jsonExecute"> <result>/resource/json_struts2.jsp</result></action>json_struts2.jsp :这个页面是一个公用的页面,服务器段向客户端传输时用于JSON字符串的输出,特别注意的是:<s:property>标签的escape属性一定要是false,默认是true,不然输出的JSON字符串被转码。