SSH框架整合开发项目详细步骤
- 格式:docx
- 大小:2.65 MB
- 文档页数:26
SSH框架整合步骤详解SSH框架 2009-04-09 10:47:00 阅读611 评论0 字号:大中小订阅更系统地学习Struts1.x/Struts2.x+Hibernate+Spring,请学习该开源项目Appfuse终于,终于将SSH整合成功了,弄了几个小时,可以休息了(有的朋友弄了半个月,甚至重装了系统也没弄好,哎,庆幸啊)。
碰到问题千万不要放弃,要相信没有解决不了的问题!项目结构图:jsp部分为:index.jsp;success.jsp;fail.jspUserDAO.java,User.hbm.xml自动生成,HibernateSessionFactory 是多余的。
相关的配置文件、类文件详细信息,请参看Struts+Spring+Hibernate/SSH整合开发详细二以前是整过这三个框架的,可是工作期间都不曾用过,不知不觉之中,学的东西全忘了。
这次又要开始找工作了,看着招聘启事上都写着:要求熟练掌握Struts,Hibernate或Spring框架……,没得办法,重新学呗。
Spring in Action中文版下载地址(ftp协议)ftp://222.214.218.61/book5/20080228/cf8b35cc-5bcd-497 3-b6b7-37ae3ec78391.rar如果无法下载,可以在里重新搜索首先开始搭建项目环境,步骤如下:使用平台:MyEclipse 6.0框架版本:Struts 1.2 Hibernate 3.0 Spring 2.01>添加过程:<1> 新建项目。
Package Explorer视图下,右键单击 New -> Web Project;<2> 添加Struts框架。
菜单栏MyEclipse -> Capabilities,或者右键单击新建的项目名,选择快捷菜单中的"MyEclipse"下的二级菜单;设置相关的包名后,请写一个Struts的小例子,用来测试Struts是否可用;<3> 添加Spring。
1:构建WEB项目2:构建数据库3:加入依赖包尽量不要依赖IDE,通过自己手动加包完成访问数据库需要的包:mysql的驱动包Hibernate的包:hibernate3.jar 核心包依赖的必须包:antlr-2.7.6.jar 用于解析成HQL语句的包commons-collections-3.1.jar apache提供的包,提供对集合框架的增强dom4j-1.6.1.jar 解析XML文件的包javassist-3.9.0.GA.jar 动态修改字节码需要用到的包jta-1.1.jar 用于JTA事务的包slf4j-api-1.5.8.jar 日志接口包---》依赖一定的实现包slf4j-log4j12-1.5.0.jar log4j.jar另外一种实现包:slf4j-simple-1.5.10.jar可选的包:c3p0-0.9.1.jar 用于创建C3P0连接池的包ehcache-1.2.3.jar :用于缓存实现的包cglib-2.2.jar 动态修改字节码的包Spring的包:spring.jar 核心包aopalliance.jar 使用Aop功能可以用到的包aspectjrt.jaraspectjweaver.jar 使用ASPECTJ表达式需要用到的包如果是使用DBCP连接池的话,需要两个jar包commons-dbcp.jar commons-pool.jar如果需要用到commons增加包的话,可以加入以下包commons-beanutils.jar commons-lang.jar commons-logging.jarStruts2的包:commons-fileupload-1.2.1.jar commons-io-1.3.2.jarfreemarker-2.3.13.jar :在Struts2 中默认使用的是FreeMarker模板引擎ognl-2.6.11.jar :Struts2中使用OGNL表达式struts2-core-2.1.6.jar 核心包xwork-2.1.2.jar 核心包struts2-spring-plugin-2.1.6.jar Struts2跟Spring整合需要的插件包4:构建项目分包结构5:放置配置文件6:创建POJO和相对应的hbm.xml7:修改空白的Hibernate.cfg..xml并创建表结构8:创建DAO,SERVICE,ACTION9:修改配置文件并且按照模块的分布进行applicationContext文件的配置Struts.xml。
搭建SSH框架:Struts1.* + Spring2.5 + Hibernate3.0 一,项目结构:图(1)Jsp页面省略,主要是一些添删改查的页面;二,开始搭建项目环境,步骤如下:使用平台:MyEclipse6.0/6.5框架版本:Struts1.* + Spring2.5 + Hibernate3.0;1,添加过程:1>,新建项目: 打开MyEclipse,在Package Explorer视图下,右键单击New-> Web Project;注意:在新建项目时,JDK的版本最好要选择Java EE 5.0;因为版本过低,可能有些JSP方面的功能不支持;新建玩项目之后,把该导的包导入到下面,下图为SS H 框架所需要的Jar包,注意,该项目用的是ORACLE数据库;其中,activation与mail这两个包为Java发邮件的包;classes12为Oracle数据库的驱动包,如果不是Oracle数据库,可更换该Jar包;dwe为Ajax dwr 框架中的包;2>,接着就开始用MyEclipse辅助开发Struts,Spring,Hibernate了;3>,首先MyEclipse辅助开发Struts,方法:右键单击你所建的项目,出现一级菜单,选择Myeclipse,选择Myeclipse之后会出现二级菜单,接着选择Add Struts Capabilities;;接着具体操作如下面图示:点击Finish按钮完成;完成之后,可将包删除;在上图中,如果那个勾没有去掉的话,就会自动生产如下标签:当然,如果你觉得标签对你没什么用的话,可以删除;如果该勾去掉的话,就只生成标签,这是Struts的核心标签;4>,MyEclipse辅助开发Spring,方法跟上面的一样,选择Add Spring apabilities;;接着具体操作如下面图示:然后点击Next,具体操作如下图:接着点击 Finish按钮,完成此项操作;5>,,最后MyEclipse辅助开发Hibernate,在执行和上面类似方法之前,Hibernate 需要先做另外一件事情,那就是和数据建立连接,具体操作如下图:点击上图位置的或者右边的>> ,然后再选择MyEclipse Database Explorer切换到如下图页面:,然后右键单击,新建一个Database Driver;如下图:下面这个截图是该项目的数据库链接图:如图所示,测试数据库链接成功;然后可直接点击Finish完成;接着切换到窗口,按照上面第三小步的方法,选择Add Hibernate apabilities;;接着具体操作如下面图示:点击下一步:点击下一步:点击下一步:点击下一步:点击 Finish 完成;6>,最后一步,就是运用Hibernate的映射机制,把数据库的表与JAVA的对形成一个关系映射;在此之前,首先应该在项目SRC的目录下面新建一个包,如该项目所示,用来存放映射生成的POJO对象以及映射文件;如下图:有一点说一下,你生成的*.hbm.xml文件可能不止一个,对,你可以把它们整合到一个文件中;然后新建按第五小步的方法,把窗口切换到MyEclipse Database Explorer界面,然后打开右键刚才所建立的链接,选择属于你自己的用户;然后选择Tble;右键选择如上图的属性:接下来的操作如下图:点击 Next,进入下一步:点击 Next,进入下一步:至此,项目环境己经搭建完成;三,项目搭建完成,SSH各个部分配置文件的说明,以及它们之间存在的关系:1,首先是Struts的核心配置文件,即struts-config.xml:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN""/dtds/struts-config_1_2.dtd"><struts-config><data-sources /><form-beans><!—建立Form表单,在此处进行登记 -→<form-bean name="userForm"type="erForm" /> </form-beans><global-exceptions /><global-forwards /><!—各个Action对应与之相对应的表单 -→<action-mappings><!-- 用户管理 --><action parameter="opers" attribute="userForm" name="userForm"path="/doUser" scope="request"><forward name="login_ok" path="/welcome.jsp"></forward><forward name="login_no" path="/index.jsp"></forward> </action></action-mappings><controllerprocessorClass="org.springframework.web.struts.DelegatingRequestProc essor"></controller><message-resourcesparameter="ermanagerview.struts.ApplicationResources"> </message-resources><!—Spring辅助Struts管理Struts-→<plug-inclassName="org.springframework.web.struts.ContextLoaderPlugIn"><set-property property="contextConfigLocation"value="/WEB-INF/action-servlet.xml" /></plug-in></struts-config>2,其次就是Springd的applicationContext.xml文件和action-servlet.xml文件:applicationContext.xml文件:<?xml version="1.0" encoding="UTF-8"?><beansxmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-2.5.xsd"><!-- Session 工厂 --><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation"value="classpath:hibernate.cfg.xml"><!-- 可以不要配置文件(hibernate.cfg.xml),直接写在这个Spring的配置文件中 --></property></bean><!-- 模板 --><bean id="hibernateTemplate"class="org.springframework.orm.hibernate3.HibernateTemplate"><property name="sessionFactory" ref="sessionFactory" /> </bean><!-- 事务器 --><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManage r"><property name="sessionFactory" ref="sessionFactory" /> </bean><!-- 对外代理 --><!-- 1,用户管理 --><bean id="userDaoImp"class="erDaoImp"><property name="hibernateTemplate" ref="hibernateTemplate" /> </bean><bean id="userServiceTarget"class="erServiceImp"> <property name="userdao"><ref local="userDaoImp" /></property></bean><bean id="userService"class="org.springframework.transaction.interceptor.TransactionProxyF actoryBean"><property name="transactionManager"><ref local="transactionManager" /></property><property name="target"><ref local="userServiceTarget" /></property><property name="transactionAttributes"><props><prop key="*">PROPAGATION_REQUIRED</prop></props></property></bean></beans>action-servlet.xml文件:<!—Spring辅助Struts管理Struts-<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-2.0.xsd"> <bean name="/doUser"class="erAction"scope="prototype"></bean></beans>3,最后就是Hibernate的hibernate.cfg..xml文件:<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools. --><hibernate-configuration><session-factory><property name="ername">wangxiaodong</property><property name="connection.url">jdbc:oracle:thin:@192.168.0.2:1521:ALIZEEDB</property><property name="dialect">org.hibernate.dialect.Oracle9Dialect</property><propertyname="myeclipse.connection.profile">Test</property><property name="connection.password">donny</property><property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property><mappingresource="com/ygkq/usermanager/model/entity/User.hbm.xml" /></session-factory></hibernate-configuration>该文件基本上不用动,都是自动生成的代码;当然,你也可以根据自己的需要添加代码,例如,你想在执行HQL语句的时候让它显示SQL语句,可将<property name="hibernate.show_sql">true</property>插入代码中;另外在图(1)中还有两个配置文件没有提到,那就是log4j.properties 与mytag.tld;其中log4j.properties是配置日志信息的;而mytag.tld主一个自定义标签;四,SSH框架搭建完成:SSH框架基本搭建完成,如果有不对或者不妥之处,请随时指教!~E-mail:jerry8059@。
ssh框架原理及流程SSH框架原理及流程。
SSH框架是指Struts、Spring、Hibernate三大开源框架的整合,它们分别解决了Web层、业务逻辑层和数据访问层的开发问题。
SSH框架的整合,旨在充分发挥各自框架的优势,实现高效、灵活、可维护的Web应用程序开发。
在本文中,我们将深入探讨SSH框架的原理及流程。
首先,我们来了解一下SSH框架各个组成部分的原理。
Struts作为Web层框架,它采用MVC(Model-View-Controller)设计模式,将应用程序分为模型、视图和控制器三层,实现了数据、展示和控制的分离,提高了代码的复用性和可维护性。
Spring作为业务逻辑层框架,它提供了IoC(控制反转)和AOP(面向切面编程)等功能,通过IoC容器管理对象之间的依赖关系,实现了松耦合,降低了组件之间的耦合度。
Hibernate作为数据访问层框架,它提供了ORM(对象关系映射)功能,将Java对象和数据库表之间建立映射关系,实现了面向对象的数据访问,简化了数据库操作。
接下来,我们来了解SSH框架的整合流程。
首先,我们需要在项目中引入Struts、Spring、Hibernate的相关jar包,并配置它们的配置文件。
在web.xml中配置DispatcherServlet,用于拦截所有的请求,然后将请求分发给对应的Controller处理。
在Spring的配置文件中配置业务逻辑层和数据访问层的Bean,以及事务管理器等。
在Hibernate的配置文件中配置数据源、SessionFactory等。
然后,我们需要编写业务逻辑层和数据访问层的代码,并在Controller中调用业务逻辑层的方法,最终将数据返回给视图层进行展示。
在SSH框架中,我们可以充分利用Struts的表单验证、Spring的事务管理、Hibernate的持久化操作等功能,实现了Web应用程序的快速开发。
同时,SSH框架也提供了良好的扩展性,我们可以根据项目的需要,灵活地替换其中的某个框架,而不影响整体架构。
ssh三⼤框架整合Hibernate框架 1 hibernate核⼼配置⽂件 (0)orm思想 - 对象关系映射 (1)数据库信息 (2)hibernate信息 (3)映射配置 (4)hibernate核⼼配置⽂件 - 如果单纯使⽤hibernate框架,核⼼配置⽂件名称 hibernate.cfg.xml和位置 src下⾯固定的 - hibernate和spring整合时候,hibernate核⼼配置⽂件名称和位置没有固定要求的 2 hibernate映射配置⽂件 (1)实体类和数据库表映射关系—使⽤orm思想 3 hibernate操作的步骤 (1)在spring框架对hibernate框架进⾏封装,使⽤hibernateTemplateStruts2框架 1 Action操作 (1)action创建三种⽅式 - 继承类 ActionSupport (2)配置action访问路径 - 创建struts.xml配置⽂件,这个⽂件名称和位置固定 src下⾯的 (3)配置访问action的多个⽅法 - 使⽤通配符⽅式配置 (4)在action获取表单提交数据 - 获取request对象 ** 使⽤ServletActionContext类获取 - 属性封装 - 模型驱动(重点) - 表达式封装 (5)在action操作域对象 - 使⽤ServletActionContext获取域对象 (6)配置struts2的过滤器 2 值栈 (1)向值栈放数据 - set⽅法 - push⽅法 - 定义变量,⽣成get⽅法 (2)从值栈获取数据 - 在jsp中使⽤struts2标签+ognl获取 - <s:property> - <s:iterator> 3 拦截器 (1)aop和责任链模式 (2)⾃定义拦截器 - 继承MethodFilterInterceptor - 重写类⾥⾯的⽅法 - 配置拦截器和action关联Spring框架 1 spring核⼼配置⽂件 (1)名称和位置没有固定要求 (2)在spring核⼼配置⽂件中引⼊schema约束 2 创建对象 (1)xml配置⽅式:<bean id=”” class=”” scope=””/> (2)注解⽅式:四个注解 3 注⼊属性(对象类型属性) (1)xml配置⽅式: (2)注解⽅式:两个注解 - autowired - resource 3 使⽤ServletContext对象和监听器实现 (1)在服务器启动时候,加载spring配置⽂件,创建对象 (2)配置spring的监听器 (3)指定spring配置⽂件位置 4 jdbcTemplate 5 spring事务配置 (1)xml⽅式 (2)注解⽅式SSH框架整合思想 1 三⼤框架应⽤在javaee三层结构 2 struts2框架和spring整合 (1)struts2的action在spring配置 3 spring框架和hibernate框架整合 (1)hibernate的sessionFactory交给spring配置 (2)把hibernate数据库配置交给spring配置整合struts2和spring框架 1 把struts2的action交给spring管理 2 实现过程 第⼀步导⼊struts2的jar包 (1)导⼊⽤于整合的jar包 (log4j.properties为log4j的⽇志输出格式,放⼊src下⾯) (2)Spring为了整合Struts还需要额外再导⼊⼀个jar包:(该包在struts的lib⽬录下) (3)导⼊Struts2的jar包(struts2版本为2.3.24): (4)创建Actionpublic class UserAction extends ActionSupport {public String execute() throws Exception {System.out.println("Success....");return NONE;}} (5)创建Strut2的核⼼配置⽂件<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd"><struts><package name="demo" extends="struts-default" namespace="/"><action name="userAction" class="erAction"></action></package></struts> (6)在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> (7)导⼊Spring整合Web项⽬的jar包,也就是监控项⽬启动的监听器所在的jar包 (8)创建Spring的核⼼配置⽂件并在其中引⼊约束<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd/schema/aop/schema/aop/spring-aop.xsd/schema/tx/schema/tx/spring-tx.xsd"></beans> (9)把action交给Spring进⾏配置1 <!-- 配置action的对象 -->2 <!-- 注意action是多实例的,因此我们这⾥把scope配置为prototype的 -->3 <bean id="userAction" class="erAction" scope="prototype"></bean> ①在spring配置action对象,在struts.xml中也配置action对象 ②解决: 只需要在spring⾥⾯配置action对象,不要在struts.xml中配置<struts><package name="demo1" extends="struts-default" namespace="/"><!-- class属性⾥⾯不写action全路径了,因为写,action对象创建两次写spring配置的action的bean的id值--><action name="userAction" class="userAction"></action></package></struts> 可以这样写的原因是我们导⼊了⼀个Spring整合Struts2的jar包:struts2-spring-plugin-2.3.24.jar (10)web.xml中Spring监听器的配置<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:bean.xml</param-value></context-param> (11)测试准备 ①所需的为Struts2的核⼼配置⽂件:struts.xml ②Spring的配置⽂件:bean.xml ③项⽬的配置⽂件:web.xml ④Struts2的UserAction类 ⑤在UserAction中对UserService的调⽤ ⑥UserService中对UserDao的调⽤ ⑦UserDao类的编写struts.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd"><struts><package name="demo1" extends="struts-default" namespace="/"><!-- class属性⾥⾯不写action全路径了,因为写,action对象创建两次写spring配置的action的bean的id值--><action name="userAction" class="userAction"></action></package></struts>bean.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd/schema/aop/schema/aop/spring-aop.xsd/schema/tx/schema/tx/spring-tx.xsd"><bean id="userAction" class="erAction"><property name="userService" ref="userService"></property></bean><bean id="userService" class="erService"><property name="userDao" ref="userDaoImp"></property></bean><bean id="userDaoImp" class="erDaoImp"></bean></beans>web.xml<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="/xml/ns/javaee" xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" <display-name>spring-day4-ssh</display-name><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:bean.xml</param-value></context-param><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><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>UserAction.javaimport com.opensymphony.xwork2.ActionSupport;import erService;public class UserAction extends ActionSupport {private UserService userService;public void setUserService(UserService userService) {erService = userService;}public String execute() throws Exception {userService.add();return NONE;}}UserService.javapublic class UserService {private UserDao userDao;public void setUserDao(UserDao userDao) {erDao = userDao;}public void add() {userDao.add();}}UserDao.java 其实现类public class UserDaoImp implements UserDao {public void add() {System.out.println("UserDaoImp....");}} (12)测试结果: 可以在后台观察到如下测试结果:image ⾄此,Spring和Struts2的整合已经完毕,然后是Spring对Hibernate的整合了。
S S H框架项目(总15页) -CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除南华大学计算机科学与技术学院项目设计报告( 2014 ~2015 学年度第 1 学期)课程名称JavaEE轻量级结构项目设计 BBS论坛系统姓名牛宇辰学号212郭旭215胡绍坤115李进怀214专业网络工程班级网络01、02地点8教实验室教师谢卫星组长:牛宇辰组员:郭旭、胡绍坤、李进怀。
一:系统分析1、需求分析2、功能分析二:系统设计1、绘制用例图设计系统功能2、绘制系统流程图三:数据库分析与设计1、数据库E-R 图2、数据库逻辑结构设计3、创建数据库及表四:公共类设计1、新增用户2、浏览用户3、浏览用户五:栏目管理模块1、创建新栏目2、查看所有栏目3、删除指定栏目六:子栏目管理模块1、在栏目下创建子栏目2、查询栏目下所有子主题3、删除指定子栏目七:前台功能模块1、指向论坛首页2、显示子栏目中所有主题3、发表新主题4、浏览主题5、回复主题基于SSH的BBS论坛系统论坛是BBS的中文译名,最早的论坛是用来公布股票价格等信息的。
随着互联网的发展和普及,论坛已成为网民相互交流的主要工具。
目前主流门户网站,例如搜狐、百度等等都拥有自己的论坛频道。
还有一些专门的论坛网站,如天涯论坛、水木社区。
通过论坛,网民可以发布一些自己感兴趣的主题,也可以回复别人发表的主题。
在本章中我们就来开发一个类似的论坛系统。
重点内容:了解论坛网站系统的基本需求学会如何分析和设计数据库学会如何使用Struts2+Spring+Hibernate进行开发学会数据库的基本使用学会使用MyEclipse进行SSH整合开发一、系统分析1.需求分析对于一个论坛系统来说,最大的需求就是让更多的用户来发表和回复主题。
对于任何用户,只要进入论坛系统,就能够浏览其他用户发表的主题。
但是用户要自己来发表主题或者回复别人发表的主题,首先需要注册,注册完成后,就能进行登录。
SSH框架的搭建详细图⽂教程转载-6.在MySQL中新建⼀个表,⽤来测试数据我在这⾥准备做⼀个注册登录功能,所以在test⾥建了⼀个user表,表⾥的字段有id、username、password、nickname四个字段。
nickname⽤来测试中⽂是否乱码。
SQL语句:CREATE TABLE `user` (`id` bigint(20) unsigned NOT NULL auto_increment COMMENT 'ID',`username` varchar(40) character set utf8 NOT NULL COMMENT '⽤户名',`password` varchar(40) collate utf8_unicode_ci NOT NULL COMMENT '密码',`nickname` varchar(40) character set utf8 NOT NULL COMMENT '昵称',PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ciCOMMENT='⽤户信息表';SSH框架搭建步骤:1. 新建⼀个项⽬。
打开MyEclipse,新建⼀个Web项⽬,起名就叫SSH,点击完成,若弹出提⽰点Yes即可。
2.添加Struts框架。
右键这个项⽬,选择MyEclipse->Add StrutsCapabilities。
在弹出的菜单中把包的路径改⼀下, Base package for new classes选项中的路径com.yourcompany.struts改成com.ssh.struts, 点击完成。
展开WebRoot中的WEB-INF⽂件夹,看到⽬录结构如下图,证明Struts框架添加完成。
达梦数据库的使用及整合SSH达梦数据库(Dameng Database)是中国自主研发的一种高性能、高可用、高可靠的企业级数据库管理系统。
它提供了丰富的数据库功能和性能优化技术,支持海量数据的存储和处理,广泛应用于银行、保险、电信、能源等各行各业。
本文将介绍达梦数据库的使用以及与SSH(Spring+Struts2+Hibernate)整合的方法。
一、达梦数据库的使用1.安装达梦数据库2.创建数据库使用达梦数据库提供的客户端工具(如DM SQL Studio),连接到数据库服务器,创建新的数据库。
可以使用SQL语句或图形界面进行数据库的创建,如:```CREATE DATABASE mydb;```3.创建表和插入数据在创建好的数据库中,创建表并插入数据。
可以使用SQL语句或图形界面进行表的创建和数据的插入,如:```CREATE TABLE mytableid INT PRIMARY KEY,name VARCHAR(50)INSERT INTO mytable (id, name) VALUES (1, 'Alice');INSERT INTO mytable (id, name) VALUES (2, 'Bob');```4.执行查询使用达梦数据库提供的客户端工具,执行查询语句查看数据。
可以使用SQL语句或图形界面进行查询,如:```SELECT * FROM mytable;```执行以上查询语句后,将会显示表中的所有数据。
二、达梦数据库与SSH的整合1.引入达梦数据库的驱动在SSH项目的pom.xml文件中,添加达梦数据库的驱动依赖,例如:```<dependency><artifactId>dmjdbc</artifactId><version>7.2</version></dependency>```2.配置数据源在项目的配置文件(如jdbc.properties)中,配置达梦数据库的连接信息,例如:```jdbc.url=jdbc:dm://localhost:5236/mydbername=your_usernamejdbc.password=your_password```3. 配置Hibernate在项目的配置文件(如hibernate.cfg.xml)中,配置Hibernate的相关信息,例如:```<propertyname="hibernate.dialect">org.hibernate.dialect.DmDialect</proper ty><propertyname="hibernate.connection.url">jdbc:dm://localhost:5236/mydb</p roperty><propertyname="ername">your_username</property> <propertyname="hibernate.connection.password">your_password</property> ```4.编写DAO层代码在SSH项目中,编写DAO层的代码,用于与达梦数据库进行交互。
Snaker-Struts2项目【项目框架SSH】Snaker-Struts2项目主要是基于struts2、spring3、mybatis3、snaker框架整合的一个最基本的流程管理模块,方便大家轻松地完成流程引擎的整合.snaker开源轻量级工作流引擎。
适用于企业应用中常见的业务流程。
本着轻量、简单、灵巧理念设计,定位于简单集成,多环境支持。
整合步骤:1.依赖包整合snakerlib.zipmaven项目可直接添加依赖<dependency><groupId>com.github.snakerflow</groupId><artifactId>snaker-core</artifactId><version>${snaker.version}</version></dependency><dependency><groupId>com.github.snakerflow</groupId><artifactId>snaker-spring</artifactId><version>${snaker.version}</version></dependency><dependency><groupId>com.github.snakerflow</groupId><artifactId>snaker-mybatis</artifactId><version>${snaker.version}</version></dependency>2.流程引擎配置增加snaker的spring配置文件【applicationContext-snaker.xml】<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-3.0.xsd"default-lazy-init="true"><description>SnakerEngine配置</description><bean class="org.snaker.engine.spring.SpringSnakerEngine"><property name="processService"ref="processService"/><property name="orderService"ref="orderService"/><property name="taskService"ref="taskService"/><property name="queryService"ref="queryService"/><property name="managerService"ref="managerService"/> </bean><!-- 配置hibernate方言 --><bean id="dbAccess"class="org.snaker.engine.access.hibernate.Hibernate3Access"><property name="sessionFactory"ref="sessionFactory"/> </bean><!-- 流程定义 --><bean id="processService"class="org.snaker.engine.core.ProcessService"> <property name="access"ref="dbAccess"/><property name="cacheManager"ref="memoryCacheManager"/> </bean><!-- 流程实例 --><bean id="orderService"class="org.snaker.engine.core.OrderService"> <property name="access"ref="dbAccess"/></bean><!-- 节点任务 --><bean id="taskService"class="org.snaker.engine.core.TaskService"> <property name="access"ref="dbAccess"/></bean><bean id="managerService"class="org.snaker.engine.core.ManagerService"> <property name="access"ref="dbAccess"/></bean><bean id="queryService"class="org.snaker.engine.core.QueryService"> <property name="access"ref="dbAccess"/></bean><bean id="memoryCacheManager"class="org.snaker.engine.cache.memory.MemoryCacheManager"/><bean class="org.snaker.engine.impl.LogInterceptor"/><bean class="org.snaker.engine.spring.SpelExpression"/><bean class="org.snaker.engine.impl.SurrogateInterceptor"/><!-- spring jdbc access<bean id="dbAccess"class="org.snaker.engine.access.spring.SpringJdbcAccess"><property name="dataSource" ref="dataSource"/><property name="lobHandler" ref="lobHandler"/></bean><bean id="lobHandler"class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true" />--></beans>配置事务[注意:事务配置会影响流程引擎的数据处理]<!-- 事务管理器配置,单数据源事务 --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource"ref="dataSource"/></bean><tx:advice id="txAdvice"transaction-manager="transactionManager"> <tx:attributes><tx:method name="start*"propagation="REQUIRED"/><tx:method name="execute*"propagation="REQUIRED"/><tx:method name="save*"propagation="REQUIRED"/><tx:method name="delete*"propagation="REQUIRED"/><tx:method name="update*"propagation="REQUIRED"/><tx:method name="remove*"propagation="REQUIRED"/><tx:method name="assign*"propagation="REQUIRED"/><tx:method name="create*"propagation="REQUIRED"/><tx:method name="complete*"propagation="REQUIRED"/><tx:method name="finish*"propagation="REQUIRED"/><tx:method name="terminate*"propagation="REQUIRED"/><tx:method name="take*"propagation="REQUIRED"/><tx:method name="deploy*"propagation="REQUIRED"/><tx:method name="undeploy*"propagation="REQUIRED"/><tx:method name="redeploy*"propagation="REQUIRED"/><tx:method name="get*"propagation="REQUIRED"read-only="true"/><tx:method name="find*"propagation="REQUIRED"read-only="true"/><tx:method name="query*"propagation="REQUIRED"read-only="true"/><tx:method name="search*"propagation="REQUIRED"read-only="true"/><tx:method name="is*"propagation="REQUIRED"read-only="true"/><tx:method name="*"propagation="REQUIRED"/></tx:attributes></tx:advice><aop:config><aop:advisor advice-ref="txAdvice"pointcut="execution(* org.snaker.engine.core..*.*(..))"/></aop:config><aop:aspectj-autoproxy proxy-target-class="true"/>本人项目中的【applicationContext.xml】文件中的配置如下,标红部分为snaker的相关配置;<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:amq="/schema/core"xmlns:jms="/schema/jms"xmlns:tx="/schema/tx"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:p="/schema/p"xmlns:aop="/schema/aop"xmlns:task="/schema/task"xmlns:cache="/schema/cache"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-3.1.xsd /schema/core/schema/core/activemq-core-5.5.0.xsd/schema/tx/schema/tx/spring-tx-3.0.xsd/schema/context/schema/context/spring-context-3.0.xsd/schema/aop/schema/aop/spring-aop-3.0.xsd/schema/task/schema/task/spring-task-3.0.xsd/schema/cache/schema/cache/spring-cache-3.1.xsd/schema/jms/schema/jms/spring-jms-3.1.xsd"><import resource="datasource.xml"/><import resource="applicationContext-snaker.xml" /><!-- 注解支持 --><context:annotation-config/><!--自动扫描com下面的所有包,当发现包下面有@services @controller @component..就交给spring的容器来管理--><context:component-scanbase-package=".webjg.*"></context:component-scan><!-- spring自己的换管理器,这里定义了两个缓存位置名称,既注解中的value --> <!-- cacheManager工厂类,指定ehcache.xml的位置 --><!-- <cache:annotation-driven cache-manager="cacheManager" /> --><bean id="cacheManagerFactory"class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"p:configLocation="classpath:ehcache.xml"></bean><!-- 声明cacheManager --><bean id="cacheManager"class="org.springframework.cache.ehcache.EhCacheCacheManager"p:cacheManager-ref="cacheManagerFactory"></bean><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"ref="sessionFactory"/></bean><bean name="openSessionInViewInterceptor"class="org.springframework.orm.hibernate3.support.OpenSessionInViewIntercep tor"><property name="sessionFactory"><ref bean="sessionFactory"/></property><property name="flushMode"value="1"/><property name="singleSession"value="true"/></bean><!-- 配置aop 切入点和事务访问策略 --><tx:advice id="txAdvice"><tx:attributes><tx:method name="delete*"propagation="REQUIRED"/><tx:method name="add*"propagation="REQUIRED"/><tx:method name="save*"propagation="REQUIRED"/><tx:method name="insert*"propagation="REQUIRED"/><tx:method name="update*"propagation="REQUIRED"/><!-- <tx:method name="find*" propagation="REQUIRED" /><tx:method name="*" propagation="REQUIRED"/> --><tx:method name="create*"propagation="REQUIRED"/><tx:method name="start*" propagation="REQUIRED"/><tx:method name="execute*" propagation="REQUIRED"/><tx:method name="remove*" propagation="REQUIRED" /><tx:method name="assign*" propagation="REQUIRED" /><tx:method name="create*" propagation="REQUIRED" /><tx:method name="complete*" propagation="REQUIRED" /><tx:method name="finish*" propagation="REQUIRED" /><tx:method name="terminate*" propagation="REQUIRED" /><tx:method name="take*" propagation="REQUIRED" /><tx:method name="deploy*" propagation="REQUIRED" /><tx:method name="undeploy*" propagation="REQUIRED" /><tx:method name="redeploy*" propagation="REQUIRED" /><tx:method name="get*" propagation="REQUIRED" read-only="true" /><tx:method name="find*" propagation="REQUIRED" read-only="true" /><tx:method name="query*" propagation="REQUIRED" read-only="true" /> <tx:method name="search*"propagation="REQUIRED"read-only="true"/> <tx:method name="is*" propagation="REQUIRED" read-only="true" /> <tx:method name="*" propagation="REQUIRED" /></tx:attributes></tx:advice><aop:config><aop:pointcut id="serviceOperation"expression="execution(* .webjg.*.service.impl.*(..)) or execution(* .webjg.cq.*.service.impl.*(..)) or execution(*org.snaker.engine.core..*.*(..))"/><aop:advisor pointcut-ref="serviceOperation" advice-ref="txAdvice" /> </aop:config><bean id="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource"ref="zxt_fmplat_datasource"/> </bean></beans>3.辅助工具类//流程引擎api的简易封装com.snakerflow.examples.struts2.engine.SnakerEngineFacets.java //页面状态图使用json数据展现,通过此类构造json数据com.snakerflow.examples.struts2.engine.SnakerHelper.java4.流程定义整合前端页面整合,可以将应用中的jsp页面copy,替换自己项目的样式即可processList.jsp//流程定义查询列表页面processEdit.jsp//流程定义编辑页面,一般可编辑状态、类别、重新上传流程定义文件 processDesigner.jsp//流程定义的web设计器,需要依赖设计器的js、css等processDeploy.jsp//流程定义部署页面,只提供一个文件上传控件,上传流程定义的xml文件processView.jsp//流程定义查看页面,用于查看流程状态图及历史任务记录 actor.jsp//动态添加参与者页面diagram.jsp//流程定义的状态图后台服务整合com.snakerflow.examples.struts2.web.snaker.ProcessAction.javaWeb设计器整合styles\js\snaker 文件夹styles\js\jquery-ui-1.8.4.customstyles\js\raphael-min.js5.待办、协办、抄送、历史任务整合前端页面整合activeTask.jsp//待办任务页面(主办、协办、抄送)activeTaskMore.jsp//待办任务列表页面activeCCMore.jsp//抄送列表页面historyTask.jsp//历史任务列表页面后台服务整合com.snakerflow.examples.struts2.web.snaker.TaskAction.java6.流程实例整合前端页面整合order.jsp//流程实例列表页面后台服务整合com.snakerflow.examples.struts2.web.snaker.FlowAction.java7.委托代理功能整合前端页面整合surrogateList.jsp//委托代理列表页面surrogateEdit.jsp//新增委托代理页面surrogateView.jsp//查看委托代理页面后台服务整合com.snakerflow.examples.struts2.web.snaker.SurrogateAction.java 8.相关js截图整合参照的相关链接:/yuqs/snaker-struts2 Snaker百度云地址:/s/1hqza8BU#path=%252FSnaker本人整理相关资料:snaker相关资料.rar。
详解ssh框架原理及流程什么是SSHSSH是 struts+spring+hibernate的⼀个集成框架,是⽬前较流⾏的⼀种web应⽤程序开源框架。
SSH不是⼀个框架,⽽是把多个框架(Struts、Spring以及Hibernate)紧密的结合在⼀起,⽤于构建灵活、易于扩展的多层Web应⽤程序。
SSH框架的系统从职责上分为四层:表⽰层、业务逻辑层、数据持久层和域模块层(实体层)。
SSH(Struts2+Spring+Hibernate)框架的项⽬,该架构主要分为三个层次:(1)Struts2:负责web层(2)Spring:业务层的管理(3)Hibernate:负责数据持久化Struts2⼯作原理:1.初始化⼀个指向servlet容器的请求。
2.请求经过web.xml中配置的过滤器过滤,FilterDispatcher(struts2控制器的核⼼)询问ActionMapper是否需要调⽤某个Action来处理这个请求。
如果ActionMapper决定需要调⽤某个Action,FilterDispatcher则把请求的处理交给ActionProxy。
3.ActionProxy通过配置⽂件Struts.xml配置⽂件找到需要调⽤的Action类。
4.ActionProxy创建⼀个ActionInvocation实例,同时ActionInvocation通过代理模式调⽤Action。
但在调⽤之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)。
5.Action执⾏完毕后,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result。
即开发⼈员通过发送http请求,这个请求经过web.xml的过滤器过滤看看是否要调⽤某个action,如果有则在Struts.xml找到该请求的实现的⽅法,然后返回运⾏的结果。
Hibernate⼯作原理:1. 读取并解析配置⽂件2.读取并解析映射信息,创建SessionFactory3. 打开Sesssion4.创建事务Transation5. 持久化操作6.提交事务7.关闭Session8. 关闭SesstionFactory即通过spring管理的Hibernate初始化时加载了xxx.hbm.xml然后读取解析映射信息,创建了SessionFactory。
SSH整合SSH整合前应该先熟悉各个框架的单独使用,至少要了解各自的xml配置。
环境:struts-2.3.15.1,spring-3.2.4,hibernate-4.2.3,myeclipse10,JDK-1.6,Mysql Jar包:1.新建web项目2.以简单的登录验证为例3.建立login.jsp,login_success.jsp,login_error.jsp4.引入struts2(1)web.xml配置<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepa reAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>(2)src下的struts.xml配置<package name="default"namespace="/"extends="struts-default"><action name="login"class="com.accp.action.LoginAction" method="login"><result name="success"> /login_success.jsp </result><result name="error"> /login_error.jsp </result></action></package>(3)测试struts2是否能够通过5.引入spring(1)配置web.xml,添加listener<listener><listener-class>org.springframework.web.context.ContextLoaderListener </listener-class></listener><!-- 告知spring config location 的存储位置 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:beans.xml</param-value></context-param>(2)配置src下的beans.xml将spring的ApplicationContext.xml拷贝至src下,删除里面的配置项,只保留下面内容<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd"></beans>6.引入hibernate(1)配置beans.xml<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:jee="/schema/jee"xmlns:tx="/schema/tx"xmlns:aop="/schema/aop"xmlns:p="/schema/p"xmlns:util="/schema/util"xmlns:tool="/schema/tool" xmlns:context="/schema/context"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd /schema/tx/schema/tx/spring-tx.xsd/schema/aop/schema/aop/spring-aop.xsd/schema/jee/schema/jee/spring-jee.xsd/schema/context/schema/context/spring-context.xsd/schema/util/schema/util/spring-util.xsd/schema/tool/schema/tool/spring-tool.xsd"default-lazy-init="true"default-autowire="byName"><!--spring jdbc配置数据源 Mysql--><bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"value="com.mysql.jdbc.Driver" /><property name="url"value="jdbc:mysql://localhost:3306/test" /><property name="username"value="user"/><property name="password"value="123456"/></bean><!-- hibernate.cfg.xml Spring config --><bean id="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><!-- connection --><property name="dataSource"><ref local="dataSource"/></property><!-- hibernate自身属性 --><property name="hibernateProperties"><props><prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql">true</prop><propkey="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <propkey="hibernate.current_session_context_class">thread</prop></props></property><!-- 映射文件<property name="mappingResources"><list><value>com/forwor/ssh/entity/xml/User.hbm.xml</value></list></property>--></bean><!-- 注入 --><bean id="userDao"class="erDaoImpl"> <property name="sessionFactory"><ref local="sessionFactory"/></property></bean><!-- aop --><!-- transaction --><bean id="userManager"class="erManagerImpl"><property name="userDao"><ref local="userDao"/></property></bean><!-- advice --><bean id="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager "><property name="sessionFactory"><ref local="sessionFactory"/></property></bean><!-- 事务处理 --><bean id="transactionInterceptor"class="org.springframework.transaction.interceptor.TransactionInterce ptor"><property name="transactionManager"><ref local="transactionManager"/></property><property name="transactionAttributes"><props><prop key="register">PROPAGATION_REQUIRED</prop><!--hibernate4必须配置为开启事务否则 getCurrentSession()获取不到--><prop key="get*">PROPAGATION_REQUIRED,readOnly</prop><prop key="find*">PROPAGATION_REQUIRED,readOnly</prop><prop key="select*">PROPAGATION_REQUIRED,readOnly</prop><prop key="query*">PROPAGATION_REQUIRED,readOnly</prop><prop key="sync*">PROPAGATION_REQUIRED</prop><prop key="finish*">PROPAGATION_REQUIRED</prop><prop key="add*">PROPAGATION_REQUIRED</prop><prop key="insert*">PROPAGATION_REQUIRED</prop><prop key="edit*">PROPAGATION_REQUIRED</prop><prop key="update*">PROPAGATION_REQUIRED</prop><prop key="save*">PROPAGATION_REQUIRED</prop><prop key="remove*">PROPAGATION_REQUIRED</prop><prop key="delete*">PROPAGATION_REQUIRED</prop><prop key="login*">PROPAGATION_REQUIRED</prop><propkey="*">PROPAGATION_REQUIRED,ng.Exception</prop></props></property></bean><!-- autoproxy 自动创建代理--><bean id="ProxyCreator"class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyC reator"><property name="beanNames"><list><value>*Manager</value></list></property><property name="interceptorNames"><list><value>transactionInterceptor</value></list></property></bean><bean id="loginAction"class="com.accp.action.LoginAction"scope="prototype"><property name="userManager"><ref local="userManager"/></property></bean></beans>7.类图以用户登录验证为基础的测试流程控制8.注意事项(1)login.jsp 输入内容的name为ername user.password时,LoginAction中应该为user生成相应的get/set方法。
一.在MyEclipse里先建立一个Web project 的工程,选最新版本的java ee。
1.引入struts2必须得几个jar包,放在WebRoot->WEB-INF->lib目录下。
2.将WEB应用部署到tomcat效劳器上:找到tomacat的安装目录Tomcat6.x\apache-tomcat-\conf,翻开其中的server.xml文件,在文件末尾</Host>上面参加例如<Context path="/ssh2" docBase="F:\javaWeb\ssh2\WebRoot" reloadable="true" />这样的句子,其中path的值为你需要访问网站的上下文,docBase的值为该web工程的WebRoot所在的目录,最后一个readloadable最好选true。
3.在WebRoot->WEB-INF->web.xml中参加struts2的过滤器将部署好的应用纳入到struts2的管辖范围类,具体代码如下<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPre pareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>rc目录下,建一个struts.xml文件,这里是处理struts整个流程的文件。
ssh框架开发流程SSH框架开发流程。
SSH框架是指Struts2 + Spring + Hibernate的整合开发框架,是目前Java企业级应用开发中比较流行的一种开发模式。
它将Struts2的MVC设计模式、Spring的IoC(控制反转)和AOP(面向切面编程)功能、Hibernate的ORM(对象关系映射)功能有机地结合在一起,为企业级应用的开发提供了一种高效、规范的解决方案。
下面将介绍SSH框架的开发流程。
1. 环境准备。
在进行SSH框架开发之前,首先需要搭建好相应的开发环境。
通常情况下,我们会选择使用Eclipse作为开发工具,同时需要安装好Tomcat作为应用服务器,以及配置好MySQL等数据库。
另外,还需要下载好Struts2、Spring和Hibernate的相关jar包,并将它们加入到项目的构建路径中。
2. 创建项目。
在环境准备完成后,接下来需要创建一个SSH框架的项目。
可以通过Eclipse的新建项目向导来创建一个Dynamic Web Project,然后在项目中引入Struts2、Spring和Hibernate的配置文件,以及相关的jar包。
接着可以创建相应的实体类、DAO(数据访问对象)、Service和Action等各层的代码文件。
3. 配置文件。
在项目创建完成后,需要进行各个框架配置文件的编写。
在Struts2中,需要编写struts.xml配置文件,配置Action的映射关系;在Spring中,需要编写applicationContext.xml配置文件,配置Bean的定义和依赖注入;在Hibernate中,需要编写hibernate.cfg.xml配置文件,配置数据库连接信息和实体类的映射关系。
4. 编写业务逻辑。
在配置文件编写完成后,可以开始编写业务逻辑代码。
首先需要编写实体类,用于映射数据库中的表结构;然后编写DAO接口和DAO实现类,用于数据库操作;接着编写Service接口和Service实现类,用于业务逻辑处理;最后编写Action类,用于处理用户请求并调用相应的Service方法。
我的SSH框架实例(附源码) 整理⼀下从前写的SSH框架的例⼦,供新⼈学习,使⽤到了注解的⽅式. 对新同学的建议:最好的学习⽅法是⾃⼰⼿动敲⼀遍,切不可看过别⼈写的,就觉得⾃⼰会做了使⽤⽅式 1、⾸先将项⽬mywork3.rar解压,导⼊到myeclipse中,注意修改applicationContext.xml 中⽤户名、密码,jdk使⽤1.6以上的就可以。
解压后其⽬录结构如下: 2、在mysql中新建数据库mydb 3、导⼊SQL⽂件 user.sqlweb.xml1<?xml version="1.0" encoding="UTF-8"?>2<web-app version="2.5" xmlns="/xml/ns/javaee"3 xmlns:xsi="/2001/XMLSchema-instance"4 xsi:schemaLocation="/xml/ns/javaee5 /xml/ns/javaee/web-app_2_5.xsd">6<welcome-file-list>7<welcome-file>index.jsp</welcome-file>8</welcome-file-list>9<!-- ⽤来定位Spring XML⽂件的上下⽂位置 -->10<context-param>11<param-name>contextConfigLocation</param-name>12<param-value>classpath:applicationContext.xml</param-value>13</context-param>14<!-- spring监听 -->15<listener>16<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>17</listener>18<!-- 过滤器将 Hibernate Session 绑定到请求线程中,它将⾃动被 Spring 的事务管理器探测到 -->19<filter>20<filter-name>openSessionInViewFilter</filter-name>21<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> 22<init-param>23<param-name>singleSession</param-name>24<param-value>false</param-value>25</init-param>26</filter>27<filter-mapping>28<filter-name>openSessionInViewFilter</filter-name>29<url-pattern>/*</url-pattern>30</filter-mapping>applicationContext.xml31 <filter >32 <filter-name >struts2</filter-name >33 <filter-class >org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class >34 </filter >35 <filter-mapping >36 <filter-name >struts2</filter-name >37 <url-pattern >/*</url-pattern >38 </filter-mapping >39</web-app >View Code1 <?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.xsd9 /schema/aop10 /schema/aop/spring-aop-2.5.xsd11 /schema/tx12 /schema/tx/spring-tx-2.5.xsd">1314 <!-- ⽤注解⽅法注⼊bean 上边schemaLocation 的三条语句顺序很重要,否则报错 -->15 <context:annotation-config />16 <context:component-scan base-package ="com" />1718 <!-- 数据库连接池 -->19 <bean id ="dataSource" class ="mons.dbcp.BasicDataSource"20 destroy-method ="close">21 <property name ="driverClassName" value ="com.mysql.jdbc.Driver" />22 <property name ="url" value ="jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF-8" />23 <property name ="username" value ="root" />24 <property name ="password" value ="123456" />25 </bean >2627 <!-- 配置sessionFactory ,数据库配置在hibernate.cfg.xml 中-->28 <!--LocalSessionFactoryBean 加载bean ⽅式 <mapping resource="com/model/User.hbm.xml"/>29 AnnotationSessionFactoryBean 加载bean ⽅式 <mapping class="er"/> ,它主要功能是取消了hbm.xml ⽂件30 -->31 <bean id ="sessionFactory"32 class ="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">33 <property name ="dataSource" ref ="dataSource" />34 <!-- 配置实体描述⽂件 -->35 <property name ="mappingResources">36 <list >37 <value >com/model/User.hbm.xml </value >38 </list >39 </property >40 <!--扫描com.cuangwu 包下以及⼦包种有 @Service @Controller @Repository @Component 注解的类,⼀旦发现,则将其纳⼊到spring 容器中管理41 此spring.jar 必须是 Spring2.5以上版本的,因为,Spring2.5之前org.springframework.orm.hibernate3.LocalSessionFactoryBean 类中,42 并没有 packageToScan 这个属性,只有mappingResuorces 这个属性。
SSH三⼤框架的⼯作原理及流程摘要: Hibernate⼯作原理及为什么要⽤? 原理: 1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置⽂件 2.由hibernate.cfg.xml中的读取并解析映射信息 3.通过config.buildSessionFactory();//创建SessionFactory 4.sessionFactoryHibernate⼯作原理及为什么要⽤?原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置⽂件2.由hibernate.cfg.xml中的读取并解析映射信息3.通过config.buildSessionFactory();//创建SessionFactory4.sessionFactory.openSession();//打开Sesssion5.session.beginTransaction();//创建事务Transation6.persistent operate持久化操作7.session.getTransaction().commit();//提交事务8.关闭Session9.关闭SesstionFactory为什么要⽤:1. 对JDBC访问数据库的代码做了封装,⼤⼤简化了数据访问层繁琐的重复性代码。
1. Hibernate是⼀个基于JDBC的主流持久化框架,是⼀个优秀的ORM实现。
他很⼤程度的简化DAO层的编码⼯作2. hibernate使⽤Java反射机制,⽽不是字节码增强程序来实现透明性。
3. hibernate的性能⾮常好,因为它是个轻量级框架。
映射的灵活性很出⾊。
它⽀持各种关系数据库,从⼀对⼀到多对多的各种复杂关系。
2. Hibernate是如何延迟加载?1. Hibernate2延迟加载实现:a)实体对象 b)集合(Collection)1. Hibernate3 提供了属性的延迟加载功能当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从⽽提⾼了服务器的性能。
一、Struts2和Spring整合,创建一个OA工程1、整合struts21)导入strut2的jar 包:commons-logging-1.0.4.jar,freemarker-2.3.8.jar,ognl-2.6.11.jar,struts2-core-2.0.12.jar,xwork-2.06.jar。
暂时导入这些jar包,到时候需要再倒入。
2)将struts.xml文件放置在OA工程的src目录下。
3)在web.xml里面配置struts2用到的核心过滤器。
Xml代码<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>2、整合spring1)导入spring的jar包:spring.jar2)将applicationContext.xml文件放置在OA工程的WEB-INF目录下。
3)在web.xml里面配置spring用到的监听器。
Xml代码<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>4)添加struts2-spring整合的插件:struts2-spring-plugin-2.0.12.jar,如果不使用这个插件,则需要在struts.xml里面配置:Xml代码<constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" />3、测试struts2和spring整合对不对?写一个jsp页面login.jsp来测试:Html代码<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><s:form action="Login" method="post"><s:textfield name="userName" label="userName"></s:textfield><s:password name="password" label="password"></s:password><s:submit label="submit"></s:submit></s:form></body></html>写一个LoginActionJava代码package com.struts2.action;import com.opensymphony.xwork2.ActionSupport;import com.struts2.service.LoginService;public class LoginAction extends ActionSupport {private LoginService loginService;private String userName;private String password;public void setLoginService(LoginService loginService) {this.loginService = loginService;}public String getUserName() {return userName;}public void setUserName(String userName) {erName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String execute() throws Exception {if(loginService.isLogin(userName, password))return SUCCESS;elsereturn INPUT;}}写一个ServiceJava代码package com.struts2.service;public interface LoginService {boolean isLogin(String userName,String password);}写一个Service的实现Java代码package com.struts2.service.impl;import com.struts2.service.LoginService;public class LoginServiceImpl implements LoginService {public boolean isLogin(String userName, String password) { if("hello".equals(userName) && "world".equals(password)) return true;elsereturn false;}}在struts.xml里面配置:Xml代码<package name="struts2" extends="struts-default"><action name="Login" class="loginAction"><result name="success">/result.jsp</result><result name="input">/login.jsp</result></action></package>在applicationContext.xml里面配置:Xml代码<bean id="loginService" class="com.struts2.service.impl.LoginServiceImpl"></bean><bean id="loginAction" class="com.struts2.action.LoginAction" scope="prototype"> <property name="loginService" ref="loginService"></property></bean>启动tomcat,分别输入hello和world,提交,结果为hello和world。
一、myEclipse 8.5:安装(略):最高可提供:框架:Java EE 5Spring 2.0Hibernate 3.2Struts 2二、A、创建一个新的web project,B、配置Hibernate:1、先配置Hibernate,选择工程,MyEclipse->Capabilities->Add Hibernate Capabilities,进入如下页面:2、选择Hibernate3.2,如上图选择,3、配置文件选择默认即可,如下图:4、用spring管理数据库链接配置,这里不选数据库链接配置,如下图:5、不用创建SessionFactory class,如下图:6、点击finish,即可。
C、配置Spring1、选择工程,MyEclipse->Capabilities->Add Spring Capabilities,进入如下页面:选择spring2.0,选中前4个和Web Libraries(也可以直接导入spring.jar,spring.jar包含了所需要的所有jar文件);选中增加到lib目录2、spring配置文件,路径选择到WEB-INF下,如下图:3、不创建Spring SessionFactory,待会手工完成,如下图:4、点击Finish,完成。
D、配置Struts 2.01、拷贝struts的支持jar包到lib文件夹,拷贝文件如下:第四个为Spring支持文件。
E、开始编写代码咯:1、new一个struts.xml文件,放在/src路径下,如下图:2、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会自动下载struts-2.0.dtd文件,自此struts具有标签提示功能。
SSH框架Struts2.1+Spring3.1.1+Hibernate4.2.0编号:SSH-S2-S3-H4版本:V1.1环境说明本文章是根据个人的搭建经验完成的轻量级SSH框架,也是实际应用中比较全面的基础框架。
其中SSH指:Struts,Spring, Hibernate,是一个将MVC思想发挥的很好的web框架。
开发平台: Windows 7 + MyEclipse 2014 + Tomcat 8.0.3+ JDK 1.8 + Mysql不同的版本大同小异。
其中SSH所需的包均直接使用MyEclipse2014内集成的jar包,这样无需手动添加,比较方便。
建立工程目录新建工程打开MyEclipse,新建一个web project:file -> new -> Web Project 如下图所示:然后next两步,到下面时,修改一点:之后直接next到finish即可,建立后目录如下:建立src目录为了使得目录结构清晰,将不同层次的源程序放到不同包内,分别建立如下4个目录:- com.ssh.action :存放Action代码- com.ssh.service :存放Service代码- com.ssh.dao :存放Dao代码- com.ssh.entity :存放数据库实体类直接右击src, 然后new -> package 如下图:然后直接finishi即可。
同样的步骤建立剩下三个目录。
这一步完成后的目录如下:导入Struts,Spring,Hibernate环境就是导入SSH环境了,这里使用的是MyEclipse集成的jar包导入Struts过程:右击项目名SSH 然后 MyEclipse ->Project Facets[capabilities]->Install Apache Struts 2.x Facet初始图如下:next到这步修改为第三项(重要):之后一直到finish即可。