STRUTS2 JSON JQUERY SPRING HIBERNATE整合开发例子
Struts2 json jquery spring hibernate整合开发例子

Struts2+json+jquery+spring+hibernate整合开发例子准备工作:1、OperaMasksStudio-7.1.1,一个中文的Eclipse IDE,下载地址:/downloads/index.faces2、jquery的UI使用的是金蝶公司的OperaMasks-UI下载地址:/website/download.html3、mysql表CREATE TABLE `ip` (`id` int(11) NOT NULL AUTO_INCREMENT,`city` varchar(255) DEFAULT NULL,`address` varchar(255) DEFAULT NULL,`start` varchar(255) DEFAULT NULL,`end` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=gbk;一、新建Apusic工程完成二、在src下新建三个包,分别是action、model、service三、生成实体类对象class右键选择model包,选择Apusic Tools 打开模型视图右键选择”数据库至代码同步”选择数据库表点击“映射”,修改主键生成类别,在IP类加入下面红色两行代码。
@Column(name = "id", nullable = false)@Id@GeneratedValue(generator = "paymentableGenerator")@GenericGenerator(name = "paymentableGenerator", strategy = "native")private ng.Integer id;四、生成业务实现右键→增强功能→生成业务实现选择第一个”spring service”,下一步输出包选择service至此spring整合hibernater已完成。
struts2+json+jquery实现ajax登录和注册功能

在上一篇博文中已经学习了如何整合mybatis和spring,实现持久层的CRUD操作、业务层的事务管理和spring的IoC。
现在我们这个demo的基础上,继续整合struts2,并利用json插件和jquery实现ajax,完成后系统将实现登录与注册的简单功能。
浏览器端如何简单、高效地与服务器端进行数据交互是web开发者最为关心的内容。
在客户端构造intput表单数据或者拼凑URL参数名称/参数值,然后在服务器端笨拙地用request.getParameter(“参数名称”)获取参数显然已经过时了,在struts2中,只要在action 里定义了input表单名称/URL参数名称对应的String类型属性,并设置getter和setter 方法,struts2在调用action的时候就可以根据参数值自动帮你设置好action中对应的属性值供你使用,这极大地方便了开发者。
但是json更为强大——它可以根据浏览器端上传的符合格式的数据设置action中对象的值,也就是说,struts2自动封装的数据只有一层,而json是无限层。
json给页面参数的传递带来极大的方便,结合jquery来使用,可以轻易地做到页面局部刷新、页面无跳转进行友好的系统异常提示等,其中后者是我觉得最有必要做到的一点,在action中定义一个message变量,把action方法执行的结果或者系统异常信息放到里面以json的方式返回给客户端,客户端根据这个变量的结果来进行下一步的操作或者提示系统异常信息,非常地好用。
json由javascript中的对象和数组构成,基本形式是{key:value},key为属性名称,value 为属性值,value可以为数字、字符串、数组、对象,value可以为数组和对象是json可以封装无限层数据的关键所在。
至于如何建构和解析json不是本篇博文的详细表述范围,请参考其他资料。
现在就让我们利用struts2作为MVC框架,整合json插件,在浏览器端使用jquery解析和系列化json数据,由此制作一个具有登陆/注册功能的小demo。
Struts2、spring2、hibernate_的整合

一.struts 2 与spring2struts2 本身就采用了类似于spring的IOC容器机制,可以利用struts2官方提供的插件struts2-spring-plugin-2.0.11.1.jar,直接与spring进行整合,配置文件中只需要设置struts.objectFactory=spring这样,就将struts2的对象管理交给了spring2的IOC容器。
在struts.xml中配置的action<package name="maintaince" extends="struts-default"><action name="serverInfoList" class="serverInfoService" method="getAllServersInfo"><result name="list">/jsp/server_info/server_info_list.jsp</result></action>在spring的配置文件中配置的bean<bean id="serverInfoService" class="com.wod.service.impl.ServerInfoServiceImpl"><property name="serverInfoDao" ref="serverInfoDao"/><property name="sib" ref="serverInfoBean"/></bean>可以看出,struts2可以直接只用在spring2中配置的bean,引用过来作为action。
Spring学习之Spring与Struts2的整合

Spring学习之Spring与Sturts2的整合●单个Struts2操作:通常web客户端访问web服务器要经过拦截器到达action,然后在action中进行一系列的操作,比如访问数据库,转发到目标页面:例如:定义一个TestAction extends ActionSourpport{}⏹需要在struts.xml文件中配置:<action name=”test” class=”TestAction的全限定名称”><result name=”success”>/test.jsp</result></action>⏹在web.xml文件中需要配置struts2的核心过滤器:<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2></filter-name><url-pattern>/*</url-pattern></filter-mapping>●单个Spring操作Spring和Struts2整合操作:由Spring定义TestAction:<bean id=”test”class=”TestAction类的全限定没名称”></bean>当然,在测试的时候,在Spring容器中获取一个对象需要先获取Spirng的IOC容器,然后在容器中获取目标对象首先获取Spring的IOC容器ApplicationContext ac = new ClassPathXmlApplicationContext(“applicationContext.xml”);//然后获取TestAction对象TestAction ta = (TestAction) ac.getBean(“test”);然后就可以使用这个对象了,但是,在一个web应用中,只能使用一个Spring的IOC 容器,如何才能使web的多个业务层使用同一个IOC容器呢,这就需要在web.xml文件中配置Spring的初始化IOC容器的监听器:是在整个web应用中都可以使用<listener><listener-class>org.springframework.web.context.ContextLoaderListener></listener-class> </listener><context-param><param-name>contextConfigLoaction></param-name><param-value>/WEB-INF/classes/applicationContext.xml</param-value>这里是applicationContext.xml位置</context-param>在web.xml文件中配置Spring的初始化IOC容器的监听器,就可以使整个web应用中都共享一个Spring的IOC容器,这样使用注解就可以定义一个bean,如果一个对象需要属性,就使用@Resource给对象注入属性这样,如果需要属性的时候,就可以拿来直接使用:当然也可以这样使用:配置web.xml文件:<?xml version="1.0"encoding="UTF-8"?><web-app version="2.5"xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"><!-- 配置Spring的IOC初始化容器配置IOC初始化容器就是为了是整个web应用共用一个Sprig的IOC容器,因为整个容器只能有一个,并且可以在整个web应用中使用--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/classes/applicationContext.xml</param-value> </context-param>采用注解,在applicationContext.xml文件中只要配置组件扫描在TestAction中属于控制层:使用@Controller(“prototype”)多例形式package com.workit.acton;import javax.annotation.Resource;import javax.servlet.ServletContext;import org.apache.struts2.ServletActionContext;import org.springframework.context.ApplicationContext;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import org.springframework.web.context.support.WebApplicationContextUtils;import com.opensymphony.xwork2.ActionSupport;import erService;@SuppressWarnings("serial")@Controller("testAction")@Scope("prototype")public class TestAction extends ActionSupport{@Resource //给TestAction注入userService属性private UserService userService; //前提是这个UserService类要交给Spring容器管理@Overridepublic String execute() throws Exception {System.out.println("TestAction.execute()");System.out.println("\n============================\n");System.out.println(userService);userService.printInfo();//获取ServletContextServletContext application = ServletActionContext.getServletContext();//获取Spring的ioc容器ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(application);System.out.println("在整个应用中使用Spring的IOC的容器");UserService us = (UserService) ac.getBean("userService");System.out.println(us);return "success";}}因为TestAction这个类已经交给Spring的ioc容器管理,所以在<action >中的class中不需要写类的全限定名。
struts2+spring+hibernate整合步骤

引用struts2、hibernate、spring所需jar包struts-core-2.x.x.jar ----struts核心包xwork-core-2.x.x.jar -----身体ruts在其撒很难过构建ognl-2.6.x.jar ----对象导航语言freemarker-2.3.x.jar ------struts2的ui标签的模板使用commons-fileupload-1.2.x.jar ----文件上传组件 2.1.6版本后需加入此文件struts-spring-plugin-2.x.x.jar ---用于struts2继承spring的插件hibernate核心安装包下的(下载路径:/ ,点击Hibernate Core 右边的download)hibernate2.jarlib\bytecode\hibernate-cglib-repack-2.1_3.jarlib\required\*.jarhibernate安装包下的(下载路径:/;点击Hibernate Annotations 右边的下载)hibernate-annotations.jarlib\ejb3-persistence.jar、hibernate-commons-annotations.jar hibernate针对JPA的实现包(下载路径:/ ,点击Hibernate Entitymanager右边下载)hibernate-entitymanager.jarlib\test\log4j.jar、 slf4j-log4j12.jarspring安装包下的dist\spring.jarlib\c3p0\c3p0-0.9.1.2.jarlib\aspecti\aspectjweaver.jaraspectjrt.jarlib\colib\cglib-nodep-2.1_3.jarlib\j2ee\common-annotations.jarvlib\log4j\log4j-1.2.15.jarlib\jakarta-commons\commons_loggin.jar数据库驱动包引用创建mysql数据库ssh 设置编码为utf-8 语句:create database ssh character set 'utf8' collate 'utf8_general_ci'引用1.先整合spring和hibernate*将spring和hibernate的jar包放入lib下;*创建spring的beans.xml配置文件Java代码1.<?xml version="1.0" encoding="UTF-8"?>2.<beans xmlns="/schema/beans"3. xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"4. xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"5. xsi:schemaLocation="/schema/beans6./schema/beans/spring-beans-2.5.xsd7. /schema/context8./schema/context/spring-context-2.5.xsd 9. /schema/aop/schema/aop/spring-aop-2.5.xsd10. /schema/tx/schema/tx/spring-tx-2.5.xsd">11.12. <!-- 将bean交由spring管理可以用<bean></bean>和扫描加注 -->13. <!--14. 扫描该包及该包下的子包15. -->16. <context:component-scanbase-package="com.yss"></context:component-scan>17.18.19. <!-- 集成hibernate sessionFactory单例模式线程安全创建耗内存-->20. <!-- 将hibernate的事务也交由spring管理 -->21. <bean id="dataSource"class="boPooledDataSource"22. destroy-method="close">23. <property name="driverClass"value="org.gjt.mm.mysql.Driver" />24. <property name="jdbcUrl"25.value="jdbc:mysql://localhost:3306/ssh?useUnicode=true&characterE ncoding=UTF-8" />26. <property name="user" value="root" />27. <property name="password" value="root" />28. <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize 之间。
struts2+hibernate+spring经典整合实例教程

Struts2与Spring、Hibernate三者整合的过程示例:示例工具:MyEclipse 7.0、Tomcat 6.0、MySql步骤:1.创建一个WEB工程,命名为BookShop(名字自己取,此处为示例工程名);2.导入struts2的核心jar包,也就是在WEB-INF下的lib文件夹中放入jar包文件,如下图(图中jar包为示例版本):3.加载spring,选中工程名,右击并选择【MyEclipse】选项下的【Add Spring Capabilities...】(或者在工具栏中选择【MyEclipse】下的【Add Spring Capabilities...】),在弹出的对话框中进行如下图所示操作:点击【Next】,点击Folder文本框后的【Browse】,在弹出对话框中选择spring配置文件存储位置为WEB-INF 文件夹,如下图所示:点击【OK】后,再点击【Finish】完成。
至此,已经完成加载spring,在WEB-INF文件夹下已经生成了配置文件applicationContext.xml。
4.加载Hibernate,选择【MyEclipse】下的【Add Hibernate Capabilities...】,在弹出对话框中进行如下图所示操作:点击【Next】后,选择Existing Spring configuration file单选框,在SessionFactory Id文本框中填入"sessionFactory",如下图所示:点击【Next】,进行如下图所示操作:该操作中,只需在Bean Id文本框中输入一个Id名,作为数据库源的代用名,意义不大。
然后在DB Driver 下拉列表中,选择MyEclipse中创建好的数据库源xiaoqi,其他信息将自动填写。
点击【Next】,在弹出对话框中去掉Create SessionFactory class?复选框,不创建该类,点击【Finish】完成(创建过程中,加载的jar包文件可能有重复,所以这个时候如果提示有某些jar包重复,问全部保存【Keep Exiting】,还是替换掉【Replace】,可以选择替换掉【Replace】)。
spring struts2 整合原理

spring struts2 整合原理
Spring和Struts2的整合原理是通过Struts2框架提供的拦截器
来实现的。
在整合中,Spring框架负责管理Struts2的Action
对象,并提供依赖注入的功能。
具体的整合步骤如下:
1. 在Spring的配置文件中,配置Struts2的拦截器,指定
Struts2的配置文件路径,并注册Spring的拦截器。
2. 在Struts2的配置文件中,使用Spring创建Action对象,通
过Spring的依赖注入注入依赖的业务逻辑对象。
3. 配置Struts2的拦截器栈,指定拦截器的顺序和执行条件。
4. 在Struts2的Action类中,使用注解或XML配置将Action
类注册为Spring的Bean。
5. 在Spring的配置文件中,配置Action类所需要的依赖对象,并使用依赖注入将其注入到Action类中。
通过以上的步骤,实现了Spring和Struts2的整合。
整合后,Spring负责管理Struts2的Action对象以及其依赖的业务逻辑
对象,实现了两个框架的功能互补。
同时,整合后还可以利用Spring的强大功能,如AOP、事务管理等,来增强Struts2的
功能。
Java Web程序设计教程第14章 Spring与Struts 2、Hibernate框架的整合基础

14.1 Spring与Struts 2的整合方式
14.2 Spring与Hibernate的整合
14.1 Spring与Struts 2的整合方式
Struts 2应用的扩展方式 Spring插件的应用
返回
14.1.1 Struts 2应用的扩展方式(1)
<!-- 配置数据源--> <bean id="dataSource" class="boPooledDataSource" destroy-method="close"> <property name="driverClass" value="com.mysql.jdbc.Driver" /> <property name="jdbcUrl" value=" jdbc:mysql://localhost:3306/test " /> <property name="user" value="root" /> </bean>
Struts 2框架对其它框架提供了良好的支持,这主要是通过Struts 2框架中的插件实现的。Struts 2提供的插件其实就是一个JAR文 件,它以“Struts2-框架名-plugin-版本号.jar”这种方式命名,如 果想在应用程序中安装某个插件,只需将该JAR文件拷贝到 Web应用的classpath下即可。 若将插件的JAR文件解压缩以后会发现该文件下包含一个名为 struts-plugin.xml的XML文件,在struts-plugin.xml文件里可配置 自己想扩展的功能,包括:
Struts2,Spring,Hibernate整合步骤及一个简单实例

Struts2,Spring,Hibernate整合步骤(自己笔记)配步骤的例子一个:请参看:Struts2,Spring,Hibernate整合例子一个1.建立web项目2.在web.xml 配置 struts2,和 spring ,<!-- 配置Struts2 --><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher(struts的过滤器)</filter-class></filter><filter-mapping>(加载struts2)<filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 配置Spring --><listener><listener-class>org.springframework.web.context.ContextLoaderListener(spring监听器)</listener-class></listener><!-- 查找spring配置文件 --><context-param>(程序从此处开始加载.xml 文件,并执行)<param-name>contextConfigLocation</param-name><param-value>classpath*:*.xml</param-value></context-param>3.在src根目录下创建struts.xml文件<include file="struts-default.xml"/>固定格式,用到此包4.在src根目录创建hibernate.cfg.xml文件<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN" "/hibernate-configura tion-3.0.dtd"><hibernate-configuration><session-factory><!-- 基本配置 --><property name="dialect">org.hibernate.dialect.Oracle9Dialect</property><property name="show_sql">false</property><property name="format_sql">true</property><propertyname="e_reflection_optimizer">true</property><property name="max_fetch_depth">2</property><property name="default_batch_fetch_size">8</property><property name="jdbc.batch_size">20</property></session-factory></hibernate-configuration>系统给的文件只需要拷贝,都是一些数据库库的基本配置5.在src根目录拷贝struts.properties文件struts.objectFactory = spring 该项是告诉系统用spring来控制hibernate和Actionstruts.action.extension=action 告诉系统访问时以什么结尾。
Spring和Struts2整合

Spring和Struts2整合⽬的:spring容器管理Action类,代替Servlet步骤:主要在配置⽂件Struts2:添加⽀持spring的jar包,配置<action class="Action类在容器中的id"Action类:定义需要容器注⼊的属性,也就是定义service,service层也要添加调⽤DAO的属性。
并⽣成get和set⽅法。
Action:service:DAO://模拟数据库连接private String conn;spring:1.web.xml配置⽂件:alt+/ C 选择ContextLoadListener创建配置配置⽂件的位置和名称classpath:spring⽂件名.xml加载容器的监听器<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:app.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>2.添加Action类的bean:注⼊Action类的属性scope=“prototype” 多例模式<!-- DAO --><bean id="testDAO" class="com.hanqi.test.TestDAO"><property name="conn" value="Oracle"></property></bean><!-- service --><bean id="testService" class="com.hanqi.test.TestService"><property name="testDAO" ref="testDAO"></property></bean><!-- Action --><!-- scope="prototype"多利模式,Action类的实例不能是单利的 --><bean id="testID" class="com.hanqi.test.TestAction" scope="prototype"> <property name="testService" ref="testService"></property></bean>。
Struts2+JQuery+JSON集成

Struts2+JQuery+JSON集成各位搞java的兄弟们,小弟搞了一个上午加中午,终于搞出用ajax传输json数据了,下面完完全全的将我遇到困难和配置给贴出来!!结合/fengda2870/article/details/4052527这篇文章,慢慢的搞出来点击“点我看看”按钮后,用jquery取得venus和password,用ajax传输到后台,处理,将处理后的数据,返回并显示在页面上1、新建web工程2、导入strust2的jar包(易错)3、导入struts2里相关的json的包(2个)4、要下载个处理json的库,(网上很多)/json的官网(里面有这些链接)推荐google的gson和json发明者自己写的类(我这里用的是json发明者自己的写的类)5、工程目录结构(红色框内重点!)6、web.xml里写7、struts2.xml里写(!!!!很容易出错,注意)8、Action类packagecom.zyn.action;importjava.util.ArrayList;importjava.util.List;import org.apache.struts2.ServletActionContext; importorg.json.JSONObject;import com.opensymphony.xwork2.ActionSupport; er;public class Test extends ActionSupport{private User user;private String result;public String getResult(){return result;}public void setResult(String result){this.result = result;}public User getUser() {return user;}public void setUser(User user) {er = user;}public static void main(String[] args){List<String> list = new ArrayList<String>();for (String string : list){System.out.println(string);}System.out.println("---------------");}public String test(){System.out.println("---------");String[] checkbox = ServletActionContext.getRequest().getParameterValues("checkbox");for (String string : checkbox){System.out.println(string);}return SUCCESS;}public String mytest1(){System.out.println(user.getName());System.out.println(user.getPassword());//将要返回的user实体对象进行json处理JSONObjectjo= newJSONObject(user);//打印一下,格式如下//{"name":"风达","age":23}System.out.println(jo);//调用json对象的toString方法转换为字符串然后赋值给resultresult = jo.toString();return SUCCESS;}}9、user类packagecom.zyn.pojo;public class User{private String name;private String password;public String getName(){return name;}public void setName(String name){ = name;}public String getPassword(){return password;}public void setPassword(String password){this.password = password;}}10、相应的jsp页面(页面要用到jquery,需要去网上下载)<script type="text/javascript" src="./js/jquery-1.6.4.js"></script><script type="text/javascript">$(function(){$("#button1").click(function(){$.ajax({type: "POST",url: "jsontest",dateType: "json",data: {"": $("#1").val(), "user.password": $("#2").val()},success: function(returnedData){var json = eval( "("+returnedData+")" );var str = "姓名:" + + "<br />"; str += "密码:"+ json.password + "<br />";$("#3").html(str);}});});});</script></head><body><input type="text" id="1" value="venus"><br/><input type="text" id="2" value="password"><br/><div id="3"><br/><input type="button" value="点我看看" id="button1">11、测试:点击后:期间碰到个问题!HTTP Status 404 - There is no Action mapped for action name网上搜了一大堆,但还是不对,struts2.xml里没有写错,解决:变了下action的名字,相应的修改struts2.xml的action名字,就可以了,奇怪啊下面是那篇文章的内容:导入包列表:目录结构如图:2.建立实体类User//将要返回的user实体对象进行json处理JSONObject jo = JSONObject.fromObject(er);//打印一下,格式如下//{"name":"风达","age":23}System.out.println(jo);//调用json对象的toString方法转换为字符串然后赋值给resultthis.result = jo.toString();return this.SUCCESS;}}4.建立struts.xml文件<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2 .0//EN""/dtds/struts-2.0.dtd"> <struts><constant name="struts.i18n.encoding" value="UTF-8"></constant ><package name="ttttt" extends="json-default"><action name="jsonAction" class="action.JsonAction"><result type="json" ><!-- 因为要将reslut的值返回给客户端,所以这样设置 --><!-- root的值对应要返回的值的属性 --><param name="root">result</param></result></action></package></struts>5.编写index.jsp文件<%@ page language="java" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"%><%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ><html><head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword 3"><meta http-equiv="description" content="This is my page"><!-- basePath用来获取js文件的绝对路径 --><script type="text/javascript" src="<%=basePath%>js/jquery.js" ></script><script type="text/javascript" src="<%=basePath%>js/index.js"></script><s:head theme="ajax" /></head><body><div id="result"></div><s:form name="userForm" action="" method="post"><s:textfield label="用户名" name="" /><s:textfield label="年龄" name="user.age" /><button>提交</button></s:form></body></html>6.在WebRoot目录下建立js文件件,将jquery.js文件放到文件夹下,然后再建立文件index.js$(document).ready(function() {// 直接把onclick事件写在了JS中$("button").click(function() {// 序列化表单的值var params = $("input").serialize();$.ajax({// 后台处理程序url : "jsonAction.action",// 数据发送方式type : "post",// 接受数据格式dataType : "json",// 要传递的数据data : params,// 回传函数success : update_page});});});function update_page(result) {var json = eval( "("+result+")" );var str = "姓名:" + + "<br />"; str += "年龄:"+ json.age + "<br />";$("#result").html(str);}7.运行前效果:要的是效果,布局就不整了运行后效果:网上相关的信息太少了,很多Struts2+JQuery+JSON的教程,点开链接之后都是那几篇文章转了又转,遇到问题真的很想找到有用的信息,或许是我太笨了,找不到,或许就是网上相关的信息就很少。
Struts2,Spring与Hibernate整合应用,学生成绩管理系统

实验四:Struts2、Spring与Hibernate整合应用————学生成绩管理系统实验要求:(1)整合Struts2、Spring和Hibernate框架(2)实现“登录”功能(3)实现“学生信息管理”功能(4)实现“学生成绩管理”功能(5)实现分页功能实验目的:掌握Struts2的开发步骤掌握Hibernate的开发步骤掌握Spring的开发步骤,理解依赖注入、AOP、事务管理等掌握Struts2、Spring和Hibernate框架的整合掌握分页技术实验思路:1、建库建表2、利用分层思想,建package3、添加Spring开发能力4、添加Hibernate开发能力5、生成Hibernate所需的POJO类和映射文件6、开发DAO层(1)新建DAO层接口。
(2)新建DAO层实现类(该类要实现DAO层接口,继承HibernateDaoSupport类)。
(3)在Spring配置文件中增加该DAO层实现类的定义,并需要依赖注入一个SessionFactory bean的引用。
7、开发Service层(1)新建Service层接口。
(2)新建Service层实现类,该类中需要声明所调用DAO层接口,并生其setter方法。
(3)在Spring配置文件中增加该Service层实现类的定义,并需要依赖注入DAO层的bean。
8、实现WEB层(1)在web.xml中增加struts2的过滤器和Spring的监听器。
(2)增加Spring和Struts2的整合文件struts.properties。
(3)新建所需的jsp文件。
(4)新建Action类,该类要继承ActionSupport,同时该类要依赖注入Service的bean(声明+setter方法)。
(5)在Spring配置文件中增加该Action类的定义,并注入Service 层的bean。
(6)在struts.xml中增加该Action的定义,其中class的属性是在Spring中定义的该Action bean的id。
Spring整合Struts 2与Hibernate

(2) 添加Spring框架及相关的jar包。
5
20.1.1 环境搭建
将struts-2.5.8-lib.zip解压后的lib目录下如图20-3所示的14个jar包复制到 项目s2sh的WebRoot\WEB-INF\lib目录中。
(3) 添加Struts 2框架的jar包 。
项目最终的目录结构如图20-4所示。
10
20.1.6 Action开发
在项目src目录下创建包com.restaurant.action,用于存放 Action,在包中创建类UsersAction.java。
11
20.1.7 Spring整合Struts 2
Spring整合Struts 2的目的在于使用Spring IOC容器来管理 Struts 2的Action,整合的步骤如下所示:
(1) 在web.xml配置文件中指定以Listerner方式启动Spring,并配 置Struts 2的StrutsPrepareAndExecuteFilter。 (2) 在Spring配置文件中配置UsersAction类 为了保证对每个用户的请求都会创建一个新的Bean实例,在配置 UsersAction的实例时,需要将<bean>元素的scope属性设置为 “prototype”(原型模式)。 (3) 在项目src目录下创建Struts 2的配置文件struts.xml Spring整合Struts 2后,<action>元素中class属性不再使用 UsersAction的全类名,而是引用Spring配置文件中UsersAction类的 Bean实例名usersAction。
8
20.1.4 DAO层开发
在项目s2sh中创建包com.restaurant.dao,在包中创建接口 UsersDAO,在UsersDAO接口中声明方法search,用于登录 验证 。 创建UsersDAO接口的实现类UsersDAOImpl,存放在 com.restaurant.dao.impl包中,实现search方法。
struts+spring+hibernate三个框架的整合

struts+spring+hibernate三个框架的整合准备三个框架结合的lib包Spring3结合Struts2的步骤如下:1:开启Struts2结合Spring3,在struts.xml中添加如下语句:java代码:<constant name="struts.objectFactory" value="spring"/>2:在web.xml中添加listener,如下:java代码:<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>3:在web.xml中指定需要初始读取的spring配置⽂件,如下:java代码:<context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value></context-param>5.当然别忘了加上Struts2⾃⼰的filter4:在struts.xml中Action配置的时候,如下:java代码:<action name="testAction" class="springBeanName"><result name="success">/index.jsp</result></action>5:在Spring中正常定义Bean就可以了,把Action定义成为Bean,如下:java代码:<bean id="testAction" class="com.bjpowernode.test.web.TestActioin"><property name="ebi" ref="testEbi"/></bean>6:在Struts的Action中,就可以通过依赖注⼊的⽅式来注⼊需要使⽤的接⼝了。
Struts2+Spring+Hibernate框架整合总结详细教程

Struts2+Spring+Hibernate框架整合总结详细教程⼀.SSH三⼤框架知识总结 Struts 2是Struts的下⼀代产品,是在 struts 1和WebWork的技术基础上进⾏了合并的全新的Struts 2。
其全新的Struts 2的与Struts 1的体系结构差别巨⼤。
Struts 2以WebWork为核⼼,采⽤的机制来处理⽤户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。
虽然从Struts 1到Struts 2有着太⼤的,但是相对于WebWork,Struts 2的变化很⼩。
⼀ Struts2⼯作原理 在Struts2框架中的处理⼤概分为以下⼏个步骤 1 客户端初始化⼀个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过⼀系列的过滤器(Filter)(这些过滤器中有⼀个叫做ActionContextCleanUp的可选过滤器, 这个过滤器对于Struts2和其他框架的集成很有帮助,例 如:SiteMesh Plugin) 3 接着FilterDispatcher被调⽤,FilterDispatcher询问ActionMapper来决定这个请求是否需要调⽤某个Action 4 如果ActionMapper决定需要调⽤某个Action,FilterDispatcher把请求的处理交给ActionProxy 5 ActionProxy通过Configuration Manager询问框架的配置⽂件,找到需要调⽤的Action类 6 ActionProxy创建⼀个ActionInvocation的实例。
7 ActionInvocation实例使⽤命名模式来调⽤,在调⽤Action的过程前后,涉及到相关拦截器(Intercepter)的调⽤。
8 ⼀旦Action执⾏完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。
ch12 Spring、Struts2、Hibernate整合

如果系统采用Spring框架。Spring负责业务逻辑组件的创建 和生成,并可管理业务逻辑组件的生命周期。可以如此理解: Spring是个性能非常优秀的工厂,可以生产出所有的实例,从 业务逻辑组件,到持久层组件,甚至控制器。 控制器如何访问到Spring容器中的业务逻辑组件?为了让Action 访问Spring的业务逻辑组件,有两种策略: 1、Spring管理控制器,并利用依赖注入为控制器注入业务逻辑 组件。 2、控制器定位Spring工厂,也就是Spring的容器,从Spring容 器中取得所需的业务逻辑组件。 对于这两种策略,Spring与Struts2都提供了对应的整合实现。 Struts 2框架整合Spring很简单,整合的步骤参见课本。
Spring有3个作用:
◦ 允许Spring创建Action、Interceptor和Result ◦ 由Struts创建的对象能够被Spring装配 ◦ 如果没有使用Spring ObjectFactory,提供了两个拦截器 来自动装配action
SS2H三者整合代码比较多,初学者做起来很繁,其实如果理 解为什么要整合、整合所需要的包以及根据书中的配置文件模 板也不是很难。以后项目中就使用该配置文件模板。 整合基本步骤描述如下: 1、先向项目中加入Hibernate3.2+Spring2.支持,删除 hibernate.cfg.xml文件,修改applicationContext.xml文件的内容, 增加SessionFactory和dataSource的设置。 2、通过MyEclipse的向导方式,生成POJO类和对应的映射文件。 3、修改applicationContext.xml文件中<property name="mappingResources">元素的内容。 4、编写DAO接口和实现类。 5、修改applicationContext.xml文件,增加对Dao实现类的配置。
第9章 Spring与Struts2、Hibernate框架的整合

第9章Spring与Struts2、Hibernate框架的整合基础一、搭建Struts框架注:导入的jar包与前面课程介绍的不同二、搭建Spring框架1.添加的类库包括AOP、Core、Persistent Core、JDBC、Web库2.修改applicationContext.xml的存储目录为WebRoot/WEB-INF三、搭建hibernate框架1.建立数据库连接2.搭建框架,注意选择的配置文件为applicationContext.xml而不是hibernate.cfg.xml。
1)设置SessionFactory的Bean id为sessionFactory。
2)设置DataSource的Bean Id为dataSource3)取消“Create SessionFactory class”选项4)导入包commons-pool-1.3到lib文件夹。
四、修改web.xml加入Spring监听器配置,至此所有框架搭建完毕。
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>五、数据库建表六、在工程下创建domain、dao包,反向工程自动生成实体类、配置文件、dao类。
1)反向工程将生成的dao文件2)移动dao类到dao包,修改由于移动dao类后applicationContext.xml出现的错误,并将id名首字母改成小写。
3)为dao类提取出接口。
在工作区右键dao文件-》refactor-》extract interface七、编写service、service接口并配置1)创建service包2)创建service类,定义方法findScoreBySnumber()。
Struts2、Hibernate和Spring整合应用

8
6.3 添加Spring开发
₪ 在添加Spring开发能力之前先介绍如何自定义User Labraries。右击项目名xscjManage,选择【Build Path】 →【Configure Build Path】菜单项,出现如图6.2所示的 对话框。
图6.2 Properties for xscjManage对话框
17
6.4 实现Hibernate持久层
₪ Kcb.java文件代码如下:
private String kch; private String kcm; private Short kxxq; private Short xs; private int xf; …… //课程号 //课程名 //开学学期 //学时 //学分
₪ Kcb.hbm.xml
<hibernate-mapping> <class name="org.model.Kcb" table="KCB" schema="dbo" catalog="XSCJ"> <id name="kch" type="ng.String"> <column name="KCH" length="4" /> <generator class="assigned" /> </id> <property name="kcm" type="ng.String"> <column name="KCM" length="16" /> </property> <property name="kxxq" type="ng.Short"> <column name="KXXQ" /> </property> <property name="xs" type="ng.Short"> <column name="XS" /> </property> <property name="xf" type="ng.Integer"> <column name="XF" /> </property> </class> </hibernate-mapping>
struts2 json jquery 集成详解

<struts>
<package name="sajax" extends="json-default" namespace="/book">
<action name="getAjaxBookChannelList" method="getAjaxBookChannelList" class="bookChannelAction">
<struts>
<package name="json-default" extends="struts-default">
<result-types>
<result-type name="json" class="com.googlecode.jsonplugin.JSONResult"/>
}
strAjaxChannel = sb.toString();//返回的数据
return Action.SUCCESS;
}
4页面操作。Jquery中已经提供几供ajax请求的方法,如果返回的是json对象,使用jQuery.getJSON(url,[data],[callback])会比较方便,
object (Object) : 需要例遍的对象或数组。
callback (Function) : (可选) 每个成员/元素执行的回调函数。
回调函数拥有两个参数:第一个为对象的成员或数组的索引,第二个为对应变量或内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
public int getTotal() { return total; } public void setTotal(int total) { this.total = total; } } 七、修改业务逻辑,增加后台服务器分页功能 1、 修改 IipService 类,代码如下: package service; import model.Ip; import java.util.List; public interface IIpService { public boolean create(Ip instance); public boolean remove(Ip instance); public boolean modify(Ip instance); public Ip findById(ng.Integer id); public List<Ip> findAll(); public List<Ip> query(String query); public List<Ip> findAll(final int startPos,final int pageSize,final String query); public int getTotalCount( int startPos, int pageSize, String query) ; } 2、 修改 IpService 类,代码如下: package service; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import model.Ip; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.springframework.transaction.annotation.Transactional; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
选择第一个”spring service
至此 spring 整合 hibernater 已完成。 五、删除 lib 目录下所有 jar 文件,复制附件中的 jar 文件到项目 lib 目录中。 六、在 model 包下新建 grid 的模板类 GridDataModel,代码如下: package model; import java.util.ArrayList; import java.util.List; public class GridDataModel<T> { // 显示的总数 private int total; // 行数据 private List<T> rows = new ArrayList<T>(); public List<T> getRows() { return rows; } public void setRows(List<T> rows) { this.rows = rows; }
完成 二、在 src 下新建三个包,分别是 action、model、service 三、生成实体类对象 class 右键选择 model 包,选择 Apusic Tools打开模型视图
右键选择”数据库至代码同步”
选择数据库表
点击“映射” ,修改主键生成类别,在 IP 类加入下面红色两行代码。 @Column(name = "id", nullable = false) @Id @GeneratedValue(generator = "paymentableGenerator") @GenericGenerator(name = "paymentableGenerator", strategy = "native") private ng.Integer id; 四、生成业务实现 右键增强功能生成业务实现
/**
* Spring Service Implement for domain model class Ip. * @interface service.IIpService * @author OperaMasks Studio */ @Transactional public class IpService extends HibernateDaoSupport implements IIpService { /** * @Create */ public boolean create(Ip instance) { logger.debug("persisting Ip instance"); try { getHibernateTemplate().save(instance); logger.debug("persist successful"); return true; } catch (RuntimeException re) { logger.error("persist failed", re); throw re; } } /** * @Delete */ public boolean remove(Ip instance) { logger.debug("removing Ip instance"); try { getHibernateTemplate().delete(instance); logger.debug("remove successful"); return true; } catch (RuntimeException re) { logger.error("remove failed", re); throw re; } } /** * @Update */ public boolean modify(Ip instance) { logger.debug("modifing Ip instance"); try { getHibernateTemplate().update(instance);
try { return getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) { String hql = "FROM Ip "; if (query != null) { hql += query; } hql+=" order by city"; Query q = session.createQuery(hql); q.setFirstResult(startPos); q.setMaxResults(pageSize); List result = q.list(); if (result == null || result.size() == 0) { logger.debug("no data found"); return new ArrayList<Ip>(0); } return result; } }); } catch (RuntimeException re) { logger.error("find paged data failed", re); throw re; } } //总数 public int getTotalCount( int startPos, int pageSize, String query) { logger.debug("get total count"); try { String hql = "SELECT count(*) FROM Ip "; if (query != null) { hql += query; } List result = getHibernateTemplate().find(hql); if (result != null && result.size() > 0) { return ((Long) result.get(0)).intValue(); } return 0; } catch (RuntimeException re) { logger.error("get total count failed", re); throw re; } } /**