SSH整合
SSH2整合实例详细教程
本次教程是SSH2的环境搭建,主要用到的技术是struts2.0+hibernate3.2+spring2.0,这种架构在现在很流行的,也是很多高校学生做毕业设计的架构,今天我们就用这种架构做一个简单的实例,详细的步骤,在于抛砖引玉,给大家一点启发。
一、创建数据库的时候会创建出联合主键<Composite-id>。
二、项目创建1、打开MyEclipse,点击File,指向New,点击Web Project。
2、输入工程名SSH,J2EE Specification Level为Java EE 5.0,点Finish即可创建完项目。
三、添加hibernate环境1、右击刚建立的SSH项目,指向MyEclipse,点击Add Hibernate Capabilities。
2、出现如下对话框之后,选择要用到的Hibernate3.2,以及所用到的包,选择Copy checked Library Jars to project folder and add to build-path,点击Next。
3、到了这一步,按默认设置,点击Next。
4、取消Specify database connection details的选择,再点击Next。
5、取消Create SessionFactory class选择,最后点击Finish。
这样一些有关hibernate的jar包点导进来了,以及建了一个hibernate.cfg.xml文件。
导入前:导入后:四、添加spring环境1、和添加hibernate环境的方法大致相同,右击SSH项目,指向MyEclipse,点击Add spring Capabilities。
2、选择要用到的Spring 2.0,勾选用到的库,注意还要勾选Spring 2.0 Web Libraries的库,一共是勾选了5个库的。
再选择Copy checked Library contents to project folder(TLDs always copied),点击Next。
SSH整合常见错误
spring+hiberna te出错小结:(1)ng.NoClass DefFou ndErro r: org/hiberna te/context/Current Sessio nConte xt原因:出现这错误时,请更改hibe rnate的包,更新至最新或3.1以上(2)ng.NoClass DefFou ndErro r: javax/transac tion/Transac tionMa nager原因:缺少jta.jar 或者是找不到h bm.xml文件导致sessio nfacto ry出错,检查hbm文件路径是否正确,文件是否存在(3) 错误:Excepti on in thread"main" org.hiberna te.excepti on.SQLGram marExc eption: Could not execute JDBC batch update或者org.springf ramewo rk.jdbc.BadSqlG rammar Except ion: Hiberna te operati on: could not insert: [com.yourcom pany.model.Login]; bad SQL grammar [insertinto mysql__login(name, passwor d) values(?,?)]; nestedexcepti on is java.sql.SQLExce ption:Table 'mysql.mysql__login'doesn't exist java.sql.SQLExce ption: Table 'mysql.mysql__login' doesn't exist原因与解决:因为Hiber nate Tools(或者Eclip se本身的D atabas e Explore r)生成*.hbn.xml工具中包含有cata log="***"(*表示数据库名称)这样的属性,将该属性删除就可以了(4)org.springf ramewo rk.orm.hiberna te3.Hiberna teQuer yExcep tion: undefin ed alias原因:在spring配置文件中,可能你设置了<prop key="hiberna te.query.factory_class"> org.hiberna te.hql.classic.Classic QueryT ransla torFac tory</prop>,指定了HQL的解释器,请删除或更改另一个解释器o rg.hiberna te.hql.ast.ASTQuer yTrans latorF actory,如果没有设置,请确认是否有写错了HQL语句,是否与POJO里的属性一样。
SSH框架整合常见异常
spring+hibernate出错小结:(1)ng.NoClassDefFoundError: org/hibernate/context/CurrentSessionContext原因:出现这错误时,请更改hibernate的包,更新至最新或3.1以上(2)ng.NoClassDefFoundError: javax/transaction/TransactionManager原因:缺少jta.jar 或者是找不到hbm.xml文件导致sessionfactory出错,检查hbm文件路径是否正确,文件是否存在(3) 错误:Exception in thread "main" org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update或者org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not insert: [com.yourcompany.model.Login]; bad SQL grammar [insert into mysql__login (name,password) values (?,?)]; nested exception is java.sql.SQLException: Table'mysql.mysql__login' doesn't exist java.sql.SQLException: Table 'mysql.mysql__login' doesn't exist原因与解决:因为Hibernate Tools(或者Eclipse本身的Database Explorer)生成*.hbn.xml 工具中包含有catalog="***"(*表示数据库名称)这样的属性,将该属性删除就可以了(4)org.springframework.orm.hibernate3.HibernateQueryException: undefined alias原因:在spring配置文件中,可能你设置了<prop key="hibernate.query.factory_class"> org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>,指定了HQL的解释器,请删除或更改另一个解释器org.hibernate.hql.ast.ASTQueryTranslatorFactory,如果没有设置,请确认是否有写错了HQL语句,是否与POJO里的属性一样。
bpm与SSH整合详解
基本步骤1、集成JBPM到系统(第一步:创建数据库表)* 拷贝相关的依赖包到WEB-INF/lib下面(bsh.jar/ jcr-1.0.jar/ jbpm-identity.jar/ jbpm-jpdl.jar)* 修改hibernate.cfg.xml,添加JBPM的映射配置,以及缓存属性的配置,可从jbpm包下的config文件夹下参考其hibernate.cfg.xml文件*在使用Jbpm工作流引擎的时候,Hibernate配置文件一定要加上属性<property name="hibernate.hbm2ddl.auto">update</property>Hbm2dll.auto是数据库表和类自动连接更新* 因为JBPM中的User对象与OA系统中的User对象名称上有冲突,所以需要修改系统中User映射的auto-import 属性为"false"。
(参考User.hbm.xml)* 当修改了User映射的auto-import="false"之后,需要在查询User对象的时候,使用其全路径类名(请参考UserManagerImpl.java)* 启动Tomcat,应能正确创建JBPM的所有数据库表2、集成JBPM到系统(第二步:与Spring集成)* 集成JBPM与spring,需要用到第三方的集成包:spring-modules-0.8.zip* 将其中的spring-modules-jbpm31.jar拷贝到WEB-INF/lib下面即可* 集成JBPM与Spring的方法是:将JbpmConfiguration对象的创建交给Spring来完成* 所以,需要在spring配置文件中配置JbpmConfiguration对象的创建<!-- 配置JbmpConfiguration --><bean id="jbpmConfiguration"class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean"><property name="configuration" value="classpath:jbpm.cfg.xml"></property></bean>* 这时候,需要jbpm.cfg.xml,这是JBPM的配置文件,我们可以从:JBPM_HOME"src"jpdl"org"jbpm目录下拷贝default.jbpm.cfg.xml文件,并重新命名为jbpm.cfg.xml3、集成JBPM到系统(第三步:如何实现业务逻辑类,请参考WorkflowManagerImpl.java)* 用到jbpmConfiguration对象的时候,需要注入 (<property name="jbpmConfiguration"ref="jbpmConfiguration"></property>)* 当我们使用JbpmContext对象来操纵JBPM的时候,需要将JbpmContext的HibernateSession对象设置为当前的HibernateSession对象private JbpmContext getContext(){JbpmContext context = jbpmConfiguration.createJbpmContext();context.setSession(getSession());return context;}4、实现WorkflowManagerImpl- 理解基本的JBPM操作:流程定义、流程实例、任务列表、流向Jbpm与ssh整合常出现的问题1、因为JBPM中的User对象与OA系统中的User对象名称上有冲突,所以需要修改OA系统中User映射的auto-import属性为"false"。
基于SSH整合MVC分层的网上商城的设计与实现
随 着经 济发 展 逐步趋 于 信息 化 和 网络技 术 的发
展 ,网上 购物 势必 成 为一 种 新 的 消 费方 式 .与 实 际 的商 店相 比 ,网上 商店 没 有 商 业 营业 面积 限制 ,也 没有 任何 时 间 限制 , 它 是 商 品 的 展示 平 台 ,是 一 种 虚拟 的 空 间.近 年 来 ,网上 商 城 系 统 由于 其 低 成 本 、高 效益 而得 到市 场 的 认 可 ,随之 而 来 的是 大量
系统 的升 级 .
第一层 : 客户端即浏览器 , 该层 次的功 能是客
户 和后 台 的交互及 最 终查 询结 果 的输 出.客户 端 向 指 定 的 We b服务 器 提 出服 务 器 请 求 ,然 后 We b服
务器 用 H 1 T r P协 议把 所 需 文件 资 料 传 给用 户 ,客 户 端接 受并 显示 在 WWW 浏 览器 上 . 第二 层 We b服 务 器 的功 能 层 ,完 成 客 户 的应
开发 , 使得软件开发 的分 工变细 , 提高生产 效率 , 这 里设 计 的 网上 商 城 的关 键 技 术 是 S t r u t s 2+H i b e r — n a t e + S p i r n g 和A J A X, 即S S H整合技术来对 网上商
城进 行 有效 的分 层 开发 .
洛 阳师范学院学报
J o u na r l o f L u o y a n g No r ma l Un i v e r s i t y
F e b ., 2 0 1 3
V0 1 . 3 2 No. 2
第3 2卷 第 2期
基于 S S H 整 合 MVC 分 层 的 网 上 商 城 的 设 计 与 实 现
ssh框架原理及流程
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三大框架整合
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的整合了。
基于SSH整合框架的研究生导师信息管理系统
2 7 4
内蒙古工业 大学学报
用户管理模块功能包括 : 用户可以修改登录账号和登录密码。 系统管理模块功能包括: 校级管理员可以添加角色、 修改角色 , 为角色分配功能菜单 、 添加用户、 修
改用 户登 录信 息 、 删 除用 户 、 为 用户 授权 、 对用 户 的 密码 进 行重 置 。院级 管 理 员 可 以在 自己管 理 范 围 内 使 用 以上 功能 ( 例如 : 学 院管理 员 只能添加 本学 院 的人员 ) 。
收 稿 日期 : 2 0 1 2—1 2—1 0
基金项 目: 内蒙古工业大学基金项 目( Z S 2 0 1 0 4 5 ) ; 内蒙古工业大学基金项 目( S K 2 0 1 1 2 8 )
作者简介 : 李 昆( 1 9 7 9 . ~) , 男, 内蒙丰镇 人 , 讲师 , 硕士 , 主要研究方 向: 研究生教育管理 We b 信息系统
的问题 , 而且 简 化 了系统 的开发 流程 , 提 高 了系统 的灵 活性 、 可 扩展性 和 可维 护性 。
1 系统 业 务 模 块 分 析
研究生导师管理系统共分为导师遴选、 网上招生、 信息维护 、 查询统计 、 用户管理 、 系统管理六大模
块 。各 模块 功 能详 细描 述 如下 :
作用 日 益增强 。改善现行管理模式 , 将研究生导师工作信息化和科学化 , 是研究生教育管理 的发展方
达梦数据库的使用及整合SSH
达梦数据库的使用及整合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层的代码,用于与达梦数据库进行交互。
SSH框架整合常见错误及解决方案
Caused by:
ng.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
</plug-in>
找不到org/hibernate/cfg/HbmBinder$SecondPass
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in file [D:\develop\apache-tomcat-5.5.27\webapps\test\WEB-INF\classes\applicationContext.xml]: Initialization of bean failed; nested exception is ng.NoClassDefFoundError: org/hibernate/cfg/HbmBinder$SecondPass
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="classpath*:applicationContext*.xml" />
ng.NoClassDefFoundError: org/hibernate/cfg/HbmBinder$SecondPass
ssh整合web导出excel案例
基于Spring,Struts2,Hibernate整合,jsp页面导出(下载)excel文件的简单应用1)本例不采用Java任何导出excel文件常用的poi或者jxl 等第三方jar包,仅仅基于I/O,做一个最简单的ssh整合excel文件导出(下载)。
2)2-3为功能展示a.主页展示·导出当前页到excel文件·导出全部到excel文件b.详细信息展示(下属子地名)·导出当前页到excel文件3)4-7为ssh整合相关xml配置a. Spring相关xml配置b. Hibernate相关xml配置c. Struts2相关xml配置d. web.xml配置(Spring容器的实例化,struts过滤器的配置)3)8-14为源代码a.action代码b.service代码(导出excel文件具体实现,包括下载文件名中文乱码问题,详见代码注释)c.dao代码4)15-17为jsp页面a.index.jsp(主页)b.list.jsp(列表显示)c.detail.jsp(详细信息-子地址列表显示)1.导入相关jar包(ssh+dbcp)2.本例导出全国地址详细信息,数据库中数据内容如下:3.功能展示a.主页b.导出当前页(文件名为当前页起始id到结束id)c.导出当前页的excel文件内容d.导出全部e.下属地名详细信息f.导出下属地名4.spring配置<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:p="/schema/p"xmlns:aop="/schema/aop"xmlns:context="/schema/context"xmlns:jee="/schema/jee"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/aop/schema/aop/spring-aop-2.5.xsd/schema/beans/schema/beans/spring-beans-2.5.xsd /schema/context/schema/context/spring-context-2.5. xsd/schema/jee/schema/jee/spring-jee-2.5.xsd/schema/tx/schema/tx/spring-tx-2.5.xsd"> <bean id="dataSource"class="mons.dbcp.BasicDataSource"><property name="url"value="jdbc:mysql://localhost:3306/photo"></property><property name="username"value="root"></property><property name="password"value="hl1437"></property><property name="driverClassName"value="com.mysql.jdbc.Driver"></property></bean><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"ref="dataSource"></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql">true</prop></props></property><property name="mappingResources"><list><value>com/luo/ssh/entity/Address.hbm.xml</value></list></property></bean><bean id="addressDao"class="com.luo.ssh.dao.impl.AddressDaoHibernateImpl"><property name="sessionFactory"ref="sessionFactory"></property></bean><bean id="addressService"class="com.luo.ssh.service.impl.AdressServiceImpl"><property name="addressDao"ref="addressDao"></property> </bean><bean id="addressAction"class="com.luo.ssh.action.AddressAction"> <property name="addressService"ref="addressService"></property></bean></beans>5.hibernate映射配置(基本)<?xml version="1.0"encoding="utf-8"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="com.luo.ssh.entity.Address"table="address"catalog="photo"><id name="id"type="integer"><column name="id"/><generator class="native"></generator></id><property name="name"type="string"><column name="name"length="50"/></property><property name="level"type="integer"><column name="level"/></property><property name="upid"type="integer"><column name="upid"/></property><property name="info"type="string"><column name="info"/></property></class></hibernate-mapping>6.struts配置<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN""/dtds/struts-2.1.7.dtd"><struts><package name="ssh"extends="struts-default"><action name="list"class="addressAction"method="list"> <param name="pageSize">36</param><result>/list.jsp</result></action><action name="detail"class="addressAction"method="detail"> <result>/detail.jsp</result></action><action name="pageToExcel"class="addressAction"method="pageToExcel"></action><action name="allToExcel"class="addressAction"method="allToExcel"></action><action name="childrenToExcel"class="addressAction"method="childrenToExcel"></action></package></struts>7.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容器位置 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:ssh.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.StrutsPrepareAndExecuteFi lter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>8.实体类Addresspackage com.luo.ssh.entity;import java.io.Serializable;/*** 地名类* @author罗立明**/public class Address implements Serializable { /**地名的id,唯一*/private int id;/**地名*/private String name;/**地名的下属级别,直辖市,省,自治区为1,其他没下一级级别+1*/ private int level;/**地名上一级的id,直辖市,省,自治区的上级id为0*/private int upid;/**保留字段,地名备注及描述*/private String info;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public int getLevel() {return level;}public void setLevel(int level) {this.level = level;}public int getUpid() {return upid;}public void setUpid(int upid) {this.upid = upid;}public String getInfo() {return info;}public void setInfo(String info) { = info;}@Overridepublic int hashCode() {return id<<16;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Address other = (Address) obj;if (id != other.id)return false;return true;}@Overridepublic String toString() {return"id:"+id+"\n地名:"+name+"\n级别:"+level+"\n上一级id:"+upid;}}9.dao接口定义package com.luo.ssh.dao;import java.util.List;import com.luo.ssh.entity.Address;public interface AddressDao {/*** 查询地址总数* @return*/public int count();/*** 根据id查找地址* @param id* @return*/public Address findById(int id);/*** 根据id查找所有下级地址* @param address* @return*/public List<Address> findChildren(Address address);/*** 根据id查找该地址的详细信息,追溯到最高上级* @param id* @return 结果形如:湖北省-荆州市-公安县-狮子口镇*/public String findDetailById(int id);/*** 根据地名模糊查询所有满足条件的地址* @param name* @return*/public List<Address> findLikeName(String name);/*** 分页查询地址信息* @param page* @param pageSize* @return*/public List<Address> findPage(int page,int pageSize);/*** 查询全部* @return*/public List<Address> findAll();}10.dao的Hibernate实现package com.luo.ssh.dao.impl;import java.sql.SQLException;import java.util.List;import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Session;import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateTemplate; importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.luo.ssh.dao.AddressDao;import com.luo.ssh.entity.Address;public class AddressDaoHibernateImpl extends HibernateDaoSupport implements AddressDao {public Address findById(int id) {HibernateTemplate template=getHibernateTemplate();Address address=(Address)template.get(Address.class, id);return address;}public List<Address> findChildren(Address address) { String hql="from Address where upid=?";return getHibernateTemplate().find(hql, address.getId());}public String findDetailById(int id) {Address add=findById(id);String detail=add.getName();while(add.getLevel()!=1){add=findById(add.getUpid());detail=add.getName()+"-"+detail;}return detail;}public List<Address> findLikeName(String name) {String hql="from Address where name like ?";return getHibernateTemplate().find(hql, "%"+name+"%");}public int count() {String hql="select count(*) from Address";returnInteger.parseInt(getHibernateTemplate().find(hql).get(0).toString());}public List<Address> findPage(final int page, final int pageSize) { HibernateTemplate template=getHibernateTemplate();HibernateCallback() {public Object doInHibernate(Session session) throws HibernateException,SQLException {String hql="from Address";Query query=session.createQuery(hql);query.setFirstResult((page-1)*pageSize);query.setMaxResults(pageSize);return query.list();}});return list;}public List<Address> findAll() {String hql="from Address";return getHibernateTemplate().find(hql);}}11.service接口定义package com.luo.ssh.service;import java.util.List;import javax.servlet.http.HttpServletResponse;import com.luo.ssh.entity.Address;public interface AddressService {/*** 分页查找* @param page* @param pageSize* @return*/List<Address> findPage(int page, int pageSize);/*** 统计总数* @return*/int count();/*** 根据ID查找地址* @param id* @return*/Address findById(int id);/*** 查找当前地址的下属地址* @param address* @return*/List<Address> findChildred(Address address);/*** 导出当前页到excel文件* @param page* @param pageSize* @param response*/void pageToExcel(int page, int pageSize,HttpServletResponse response);/*** 导出数据库全部信息到excel文件* @param response*/void allToExcel(HttpServletResponse response);/*** 导出指定id的地址子地址到excel文件* @param id* @param response*/void childrenToExcel(int id, HttpServletResponse response);/*** 导出功能实现* @param list 要导出的数据* @param fileName 下载显示的文件名* @param response*/void toExcel(List<Address> list,String fileName, HttpServletResponse response);/*** 根据id查找完整地址* @param id* @return*/String findDetailById(int id);}12.service实现package com.luo.ssh.service.impl;import java.io.IOException;import java.io.OutputStream;import java.util.List;import javax.servlet.http.HttpServletResponse;import com.luo.ssh.dao.AddressDao;import com.luo.ssh.entity.Address;import com.luo.ssh.service.AddressService;public class AdressServiceImpl implements AddressService { private AddressDao addressDao;public void setAddressDao(AddressDao addressDao) {this.addressDao = addressDao;}public AddressDao getAddressDao() {return addressDao;}public List<Address> findPage(int page, int pageSize) {//page和pageSize的简单验证int total=count();if(page<=0){page=1;}if(pageSize<10){page=10;}if(pageSize>100){page=100;}int maxPage=total%pageSize==0?total/pageSize:total/pageSize+1;if(page>maxPage){page=maxPage;}return addressDao.findPage(page, pageSize);}public int count() {return addressDao.count();}public Address findById(int id) {return addressDao.findById(id);}public List<Address> findChildred(Address address) {return addressDao.findChildren(address);}//导出当前页到excel文件public void pageToExcel(int page, int pageSize, HttpServletResponse response) {//需要导出的数据List<Address> list=findPage(page,pageSize);//下载是显示给用户的文件名(如果是中文需要作一定处理,否则会有乱码)String fileName=(page-1)*pageSize+1+"-"+page*pageSize+".xls";//调用导出的具体实现方法toExcel(list,fileName,response);}//导出数据库全部信息到excel文件public void allToExcel(HttpServletResponse response) {//需要导出的数据List<Address> list=addressDao.findAll();//下载是显示给用户的文件名(如果是中文需要作一定处理,否则会有乱码)String fileName="all.xls";//调用导出的具体实现方法toExcel(list,fileName,response);}public void childrenToExcel(int id, HttpServletResponse response) { Address parent=new Address();parent.setId(id);List<Address> list=addressDao.findChildren(parent);//下载是显示给用户的文件名(如果是中文需要作一定处理,否则会有乱码)String fileName=addressDao.findDetailById(id)+"_下属地址.xls";//调用导出的具体实现方法toExcel(list,fileName,response);}//导出的具体实现方法public void toExcel(List<Address> list, String fileName, HttpServletResponse response) {try {//对文件名作处理,避免中文乱码问题String name = newString(fileName.getBytes("gbk"),"iso8859-1");//设置response相应属性,设置为下载response.setContentType("application/x-msdownload");response.setHeader("Content-Disposition","attachment;filename="+name);//获得response中的输出流OutputStream out=response.getOutputStream();//excel表格第一行标题,本例中不采用poi或jxl,只对每个单元属性后面添//加\t,每行结束加\n。
SSH整合过程(struts-2.3.15.1+spring-3.2.4+hibernate-4.2.3)
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方法。
基于SSH框架整合开发用户管理信息系统
用 S r g的 IcIvr o f o t l控 制 反 转 ) 器 来 负 责 创 建 信 息 系统 无 论 是 在 整 体 结 构 上 还 是 在 局 部 的 复 杂 业 务 模 型 中 都 pi n o ( cs nO nr , n i C o 容 和管 理 组 件 . 些 组 件 包 括 前 端 的业 务 控 制 器 。 间 的 业 务 逻 辑 有 了更 低 的耦 合 性 . 们 的 灵 活 性 与 可维 护性 也得 到 了 提 高 . 这 中 它 从 组件 , 以及 底 层 的 D O 组 件 。这 些 组 件 都 处 于 S r g的 I A pn i o e容 而 消 除 了单 独 使 用 这 三种 框 架 开 发 系统 的不 足 。 器 中 . 而大 大 降低 了各 组 件 之 间 的耦 合 度 。 从 31Sr t . t s与 S r g的 整 合 u pn i
21 0 0年第 6期
福
建
电
脑
13 2
基 于 S H框 架整合 开发用户 管理信 息 系统 S
陈 有 为 .冯 楠 z
10 1) ( . 安 邮 电 学 院 计 算 机 学 院 陕 西 西安 7 0 2 2西安 医 学 院 陕西 西安 7 0 2 1 西 111 .
【 摘
要 】 用P管理信息 系统采 用 S H(t s+ pig Hi ma ) : S smt S f + b t 框架 来实现功 能需求。通过框 架的使 用 , 2 n e e 降低 了代码
耦 合 度 , 少 了 开发 周 期 , 到 了快 速 , 减 达 高效 的 开 发 目的 , 而 为程 序 开发 者 提 供 了便 利 。 从
解析SSH整合框架的优化处理
3 1 Sp ng . i r
架做出来的系统在性 能上会 出现很大 的不 同 ,因此对 S H整 S 合框架做适 当的优化是一个必要 的过程。
Z HOU in a
( a g i a nn n ti ae r ri n c o l N n ig 5 0 2 ) G n x n igYiga C re T a ig S h o , a nn 3 0 2 N n
Ab t a t h t l D s o i g o t t 、 p n 、 b r a e i t r t n a c i cu e wa a e o t r e f me r f s r c :T e Op i ip sn f S r s S r g Hi e n t n e ai r ht t r s b s d n h e r ma u i g o e a wo k o
()使用 S r g 身提 供 的 c aat E cdn Flr 符 1 pi 本 n hrc r no i ie 字 e g t 编码过滤 器解 决 中文乱码 问题 。这 样不仅 不用 动手 写代码 , 而且保证每次请求 只过滤 一次。提高 了开发性 能和过滤效率 。
即在 w b m 中加 入 相 应 的配 置 。 e. l x
i tr a p i z t n . e p p re p u d h r c p e o S n e r t n a c ie t r n h p i z t n meh d i s d n en lo t mia i t a e x o n s t e p n i l fS H i t ga i r h tc u e a d t e o t o h i o miai t o n u e o
基于SSH整合框架的运输企业安全管理系统设计与实现
入 、 驶 员 的 清 退 、 驶 员 的 事 故 处 理 、 驶 员 的 违 法 记 驾 驾 驾
分 、 驶 员 的安 全 学 习 、 驶 员 的技 能培 训 等 。 驾 驾 ( ) 辆 管 理 : 辆 基 本 档 案 、 辆 的二 级 维 护 、 辆 2车 车 车 车
韦 字 , 志 刚 . 于 S P的 邮 件 发送 程 序 设 计 [] 电 脑 开 发 与 应 陈 基 MT J.
用 , 0 0 1 ) 2 0 ( 0.
( 责任 编 辑 : 余
晓)
I pl m e a i n o a a y S nd Bu k Usng CDO. e s g m e nt to fS l r e l i M sa e Ba e n S TP m po nt sdo M Co ne
s u c sd p rm e tt a h e l y e t e d s l r .To r p a e t r dto a a u lalte e d malt e e tlb r o r e e a t n o e c mp o e o s n aa y e lc het a iin l m n a e t rs n i o r p a a o , t v i e a s fm io e ai n r s lig i a e la s m a . o a o d b c u e o s p r to e utn n w g e k y
2 重庆 市港航 管理 局 科技 信息 处 , . 重庆 4 0 2 ) 0 0 0
摘 要 : 首先对 Srt, braeS r g框 架进行 了分析 。根 据 S H框 架的分层模 型, tus Hien t,pi n S 设计并实现 了运输企 业安全
SSH_三大框架介绍
SSH_三大框架介绍SSH是指Struts、Spring和Hibernate三个开源框架的整合,其中每个框架都有自己的设计思想和特点,通过整合,可以充分发挥它们的优势,提高开发效率和系统性能。
下面将分别介绍这三个框架。
1. Struts:Struts是一个基于MVC设计模式的Web应用程序框架,它将应用程序分为三个层:模型(Model)、视图(View)和控制器(Controller)。
模型负责处理业务逻辑,视图负责展示数据,控制器负责接收用户输入和导航请求。
Struts通过配置文件定义请求的映射和处理逻辑,通过统一的控制器Servlet接收请求,根据配置文件将请求转发给相应的Action。
在Action中进行请求处理和业务逻辑的实现。
2. Spring:Spring是一个轻量级的IoC(Inverse of Control)容器和应用程序框架,它主要解决企业应用中的复杂性问题。
Spring的核心思想是面向接口编程和依赖注入。
通过Spring的IoC容器管理对象的生命周期和依赖关系,将对象的创建和销毁过程交给容器处理。
通过依赖注入,可以将对象之间的依赖关系解耦,提高代码的可维护性和可测试性。
Spring还提供了丰富的功能模块,如AOP(Aspect-Oriented Programming)框架、事务管理、远程调用等,可以在应用程序中灵活地配置和使用。
Spring的优点是具有良好的灵活性和扩展性,可以与其他框架进行无缝集成,支持多种数据库和应用服务器。
同时,Spring还提供了很强的层次化管理和面向切面编程的能力,使得开发人员可以更加精细地控制应用程序的流程和行为。
3. Hibernate:Hibernate是一个开源的对象关系映射框架,用于将Java对象映射到关系数据库中的表结构上。
Hibernate通过配置文件和注解,提供了一种方便的方式来实现数据的持久化和检索。
Hibernate根据对象的映射关系,自动生成相应的SQL语句,实现了对象与数据库之间的映射和转换。
基于SSH整合框架的运输企业安全管理系统设计与实现
基于SSH整合框架的运输企业安全管理系统设计与实现摘要:首先对Struts,Hibernate,Spring框架进行了分析。
根据SSH 框架的分层模型,设计并实现了运输企业安全管理系统。
该系统达到了设计目标,性能可靠,取得了令人满意的效果。
关键词:Struts;Hibernate;Spring;运输企业;安全管理系统0引言对于长途汽车客运企业而言,车辆的安全营运管理在企业管理中处于绝对核心地位。
特别是随着企业公车化经营范围的不断扩大,运输企业对安全营运的压力陡增,传统的管理方式难以跟上安全管理的新形势、新要求。
因此,运输企业迫切需要建立安全管理信息系统来弥补管理上的疏漏,有效发现安全隐患,从而降低安全事故发生的几率,并不断完善安全管理工作的长效机制。
1系统需求分析针对运输企业的行业特点,安全管理系统主要是对人、车、路(即驾驶员、车辆、道路状况)进行管理和评估,并对安全隐患进行预警。
系统的主要需求如下:(1)驾驶员管理:驾驶员基本档案、驾驶员的资质准入、驾驶员的清退、驾驶员的事故处理、驾驶员的违法记分、驾驶员的安全学习、驾驶员的技能培训等。
(2)车辆管理:车辆基本档案、车辆的二级维护、车辆的保险、车辆的临时检查(包括路检、路查)、车辆的月检、车辆的检测、车辆超速记录(数据从已有的GPS系统中提取)、车辆驾驶员指派等。
(3)线路管理:线路基本信息、线路的查勘、路况的分段记录等。
(4)安全预警管理:预警参数的设置、手机短信群发等。
(5)其他管理:安全管理人员基本档案、安全管理组织结构、安全法规及制度、安全统计报表、安全会议、安全预案及演练、安全投入、安全文件发放、消防安全检查等。
2系统设计SSH整合架构在轻量级Java EE企业级开发中处于主流地位。
其中Struts实现了MVC模式,能够将应用的模型、视图、控制器这3个部分以最少的耦合协同工作,从而提高应用的可扩展性及可维护性。
Hibernate可实现对象/关系数据库的映射,从而既可利用面向对象程序设计语言的简单易用性,又可利用关系数据库的优势,提高开发数据库应用的效率。
达梦数据库的使用及整合SSH
达梦数据库的使用及常规sql语句规则及SSH整合(作者:崔世民)一、数据库下载---------------------------------------------------------------01二、硬件要求及系统要求---------------------------------------------------02三、数据库安装---------------------------------------------------------------03四、数据库使用---------------------------------------------------------------04五、数据库语句规则---------------------------------------------------------05六、表的新建------------------------------------------------------------------06七、数据库驱动的位置查找------------------------------------------------07八、方言架包的位置查找---------------------------------------------------08九、Myeclipse连接DBA----------------------------------------------------09十、反射数据库---------------------------------------------------------------10 十一、修改实体类的映射文件(使用达梦数据库增删改查规则)-------------------------------------------------------------------------------11 十二、DM服务平台---------------------------------------------------------12说明:达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM。
ssj集成详细过程(附带源文件)
以添加用户为示例的SSH整合全过程,按以下细节集成ssh,包你一次成功,百试百灵,帮你轻松拿下SSH(*^__^*)1.添加struts1.2支持。
(大家应该都会吧!)(同上操作,选择)(同第一步操作,选择)下一步:下一步:下一步:支持添加完毕,首先修改web.xml配置: <<<listenerclass的位置,仔细看看4.到现在环境搭建的差不多了,开始建实体类以及映射文件,dao类(接口以及实现类),完成后如图:下面注意,映射文件中的lazy属性:接下来到hibernate.cfg.xml中写入映射文件:<mapping resource="com/entity/User.hbm.xml" />5.下面开始建前台页面以及action和actionform:struts-config.xml配置如下:6.先写好userDaoImp的具体实现方法:(如下)public class UserDaoImp extends HibernateDaoSupport implements UserDao { //继承HibernateDaoSupportpublic boolean addUser(User user) { //用boolean类型判断转跳页面,也可是voidboolean b=false;this.getHibernateTemplate().save(user); //直接调用模板方法b=true;System.out.println("addUser--"+user.getName()); //顺便加个打印输出测试下,加不加无所谓return b;}}下面注意actionform里面对象不要忘记实例化了:然后在action中调用daoImp的方法;首先添加属性userdao以及提供set方法:private UserDao ud;public void setUd(UserDao ud) {this.ud = ud;}调用的userDaoImp的方法:public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { RegForm regForm = (RegForm) form;// TODO Auto-generated method stubUser user=new User();user.setName(regForm.getUser().getName());user.setPassword(regForm.getUser().getPassword());boolean b=ud.addUser(user); //方法返回boolean类型if (b) {return mapping.findForward("suc");}else{return mapping.findForward("fail");}}7.一切准备就绪,现在开始将userDaoImp以及action注入到spring种,applicationContext.xml的配置如下:<!--将UserDaoImp注入 --><bean id="userDao"class="erDaoImp"><property name="sessionFactory"ref="sessionFactory"></property> // sessionFactory一定要注入到userDao </bean><!-- action --><bean name="/reg"class="com.struts.action.RegAction"><property name="ud"ref="userDao"></property></bean>经过那么多过程,到现在,快启动下tomcat测试看看,没有报错的页面让你心情舒畅很多吧(^_^),先别急着高兴,现在该配置事务了配置事务很简单,在applicationContext.xml中如下配置:(大家手动配下,不要copy了,自配一次才印象深刻嘛)首先,这点很关键:自动生成的applicationContext.xml不完整,准备就绪后就在applicationContext.xml写入如下配置:<!-- 配置事务管理器 --><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory"ref="sessionFactory"></property>//别忘了注入sessionFactory </bean><!-- 配置事务传播特性 --><tx:advice id="txAdvice"transaction-manager="transactionManager"> <tx:attributes><tx:method name="add*"propagation="REQUIRED"/><<//Listener 监听器的另一种配法:最后dataSource配置参数就可以,可以看看如下代码:<!-- 配置数据源 --><bean id="dataSource" class="mons.dbcp.BasicDataSource"><!—这里需要说明一下的是 name是不能变的只能是driverClassName --><!—value就是指定driverClassName 的值--><!—-${jdbc.driverClassName}类似EL表达式,{}括号里面的实际是你属性文件的里面key,要一一对应--> <property name="driverClassName" value="${jdbc.driverClassName}"/><!—只能是url --><property name="url" value="${jdbc.url}"/><!—只能是username --><property name="username" value="${ername}"/><!—只能是password --><property name="password" value="${jdbc.password}"/></bean>到此,配置结束了···。
SSH集成CKEditor和CKFinder
SSH集成CKEditor和CKFinder一、本文档目的最近接触一个网站信息发布系统。
要实现在本地浏览器对系统服务器端的图片、flash、视频进行管理的功能。
在查阅资料的过程中,找到了将ckeditor 和ckfinder配合使用来实现该功能。
这里主要是想给大家分享一下将ckeditor 和ckfinder集成到SSH框架的配置过程以及在此过程中所遇到问题的解决方法。
二、环境介绍本集成涉及的内容有:MyEclipse9.0M1、Struts2.1、Spring3.0、Hibernate3.3、ckeditor_3.6.4、ckfinder_java_2.2。
这里不细介绍SSH框架的搭建,把主要的精力放在已配好的SSH框架里整合ckeditor和ckfinder。
三、集成过程1、下载ckeditor和ckfinder:ckeditor下载地址为:/downloadckfinder下载地址为:/download这里提醒一点:ckfinder一定得下载针对Java的。
下载后你会得到:ckeditor_3.6.4.zip和ckfinder_java_2. 2.zip 这2个压缩文件。
下载截图如下:进入ckeditor主页,点击Previous versions下的“View all”即可到如下界面。
图1-1下载ckeditor-java-3.6.4.zip图1-2 下载ckfinder_java_2. 2.zip2、将ckeditor和ckfinder添加到项目中:解压你下载的ckeditor_3.6.4.zip和ckfinder_java_2.2.zip这2个压缩文件,将ckeditor_3.6.4目录下的ckeditor文件夹和ckfinder_java_2. 2目录下的ckfinder_java_2.2\ckfinder\_sources\CKFinder for Java\WebApp\src\main\webapp目录下的ckfinder文件夹复制到你项目的Webroot根目录下的plugins目录下(自己建的,也可以不放刺目录下,但要注意以后配置的路径也要相应的改变)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MyEclipse6.0的SSH整合Version 1.12010-6-20目录0.概述 (2)1.准备环境 (2)2.创建工程 (10)3.添加Struts支持 (11)4.添加Spring支持 (13)5.配臵数据源 (17)6.添加Hibernate支持 (28)7.添加Hibernate反转工程 (35)8.修改目录结构 (39)9.测试Spring和Hibernate的整合 (41)10.整合Struts和Spring (51)11.测试SSH的整合 (52)0.概述MyEclipse 是 Eclipse 的一个优秀插件,用于 Java EE 的开发,提供了诸如数据库管理、文件配臵管理等的一站式服务。
然而对于 SSH 的整合,仅仅使用 MyEclipse 是无法成功实现的。
这或许是MyEclipse 的 Bug,因为它自带的部分库文件并不能按照预期进行整合,需要我们手工干预。
因此,我们编写这个这个文档,希望对以后的 SSH 整合技术有一定的帮助。
本公司使用 MyEclipse6.0 构建 SSH 项目。
对公司开发部开会讨论,开发工具MyEclipse6.0。
另外需要指出的是,SSH 的整合有很多方法,这里只介绍其中的一种。
作为 Java EE 的开发,我们使用Tomcat5.5 作为 Web 容器,使用 MySQL 作为数据库。
1.准备环境下面是我们需要使用的软件开发环境:MyEclipse6.0Tomcat5.5MySQL5.1JDK6.0需要指出的是,各个软件的版本号并不一定需要和上面列出的相同。
但是,由于我们编写本教程时的实验环境是由上述各版本系统搭建的,因此不能确保其它版本的软件是不是能够正常运行。
另外由于MyEclipse 中已经附带了 SSH 所需要的各种库文件,所以我们一般不再需要另外的准备。
对于软件的设臵,我们将 MySQL 数据库编码设臵为 UTF-8。
具体方法为:安装好 MySQL 后,打开 MySQL Server Instance Config Wizard,请根据下面的图示进行设臵:1) 启动 MySQL 配臵向导界面,点击 Next 继续;图表 1 MySQL 服务器编码设臵(1)2)由于已经存在 MySQL 实例,因此系统会提示我们是重新配臵实例(Reconfigure Instance),还是删除该实例(Remove Instance)。
对于新安装的 MySQL 数据库则没有这一选项。
这里我们选择重新配臵即可;3 我们选择"Detailed Configuration";图表 3 MySQL 服务器编码设臵(3)4) 选择服务器类型,"Developer Machine(开发测试类,MySQL占用很少资源)"、"Server Machine(服务器类型,MySQL占用较多资源)"、"Dedicated MySQL Server Machine(专门的数据库服务器,MySQL占用所有可用资源)",根据自己需要的类型选择。
这里我们选择"Developer Machine";图表 4 MySQL 服务器编码设臵(4)5)选择MySQL数据库的大致用途,"Multifunctional Database(通用多功能型,好)"、"TransactionalDatabase Only(服务器类型,专注于事务处理,一般)"、"Non-Transactional Database Only(非事务处理型,较简单,主要做一些监控、记数用,对MyISAM数据类型的支持仅限于non-transactional),根据自己的需要而选择。
这里我们按照默认选择"Multifunctional Database";图表 5 MySQL 服务器编码设臵(5)6) 对InnoDB Tablespace进行配臵,就是为InnoDB 数据库文件选择一个存储空间,如果修改了,要记住位臵,重装的时候要选择一样的地方,否则可能会造成数据库损坏。
当然,对数据库做个备份就没问题了,这里不再详述。
这里没有修改,使用默认位臵,直接点击"Next"继续;图表 6 MySQL 服务器编码设臵(6)7) 选择一般MySQL访问量,即同时连接的数目,"DecisionSupport(DSS)/OLAP(20个左右)"、"OnlineTransaction Processing(OLTP)(500个左右)"、"ManualSetting(手动设臵输入一个数值)",这里选 "Decision Support(DSS)/OLAP",点击"Next"继续;图表 7 MySQL 服务器编码设臵(7)8)是否启用TCP/IP连接,设定端口,如果不启用,就只能在自己的机器上访问MySQL数据库。
这里按照默认设臵即可。
在这个页面上,还可以选择"启用标准模式"(Enable Strict Mode),这样MySQL就不会允许细小的语法错误。
如果还是个新手,建议取消标准模式以减少麻烦。
但熟悉MySQL以后,尽量使用标准模式,因为它可以降低有害数据进入数据库的可能性。
点击"Next"继续;图表 8 MySQL 服务器编码设臵(8)9) 这里是MySQL设臵服务器编码的地方。
第一个是西文编码,第二个是多字节的通用utf8编码,都不是通用的编码。
我们选择第三个,然后在Character Set那里选择"utf-8",当然也可以用"GB2312" 或"GBK",区别就是GBK的字库容量大,包括了GB2312的所有汉字,并且加上了繁体字、和其它字体——使用MySQL的时候,在执行数据操作命令之前运行一次"SET NAMES GBK;"(运行一次就行了,GBK可以替换为其它值,视这里的设臵而定),就可以正常的使用汉字(或其它文字)了,否则不能正常显示汉字。
点击"Next"继续;图表 9 MySQL 服务器编码设臵(9)10) 选择是否将MySQL安装为windows服务,还可以指定ServiceName (服务标识名称),是否将mysql的bin目录加入到Windows PATH(加入后,就可以直接使用bin下的文件,而不用指出目录名,比如连接,"mysql.exe -uusername-ppassword;"就可以了,不用指出mysql.exe 的完整地址)。
如果不是全新安装后的第一次设臵,这里是不允许全部设臵的。
保留默认选项,点击"Next"继续;图表 10 MySQL 服务器编码设臵(10)11)这一步询问是否要修改默认root用户(超级管理员)的密码(默认为空),"New root password",如果要修改,就在此填入新密码(如果是重装,并且之前已经设臵了密码,在这里更改密码可能会出错,请留空,并将"Modify SecuritySettings"前面的勾去掉,安装配臵完成后另行修改密码),"Confirm(再输一遍)"内再填一次,防止输错。
"Enable root access from remote machines(是否允许root 用户在其它的机器上登陆,如果要安全,就不要勾上,如果要方便,就勾上它)"。
最后"CreateAn Anonymous Account(新建一个匿名用户,匿名用户可以连接数据库,不能操作数据,包括查询)",就不用选择了,设臵完毕,点击"Next"继续。
图表 11 MySQL 服务器编码设臵(11)12) 确认设臵无误,如果有误,按"Back"返回检查。
最后点击"Execute"使设臵生效。
图表 12 MySQL 服务器编码设臵(12)通过以上步骤,我们就设臵好了 MySQL 的服务器编码。
2.创建工程打开 MyEclipse,需要注意的是这里应该处于 MyEclipse Java Enterprise 视图。
新建一个 Web Project,输入适当的工程名字,这里我们输入 SSH,修改 Context root URL 为 ssh。
这个 URL 是使用 MyEclipse 部署时,浏览器访问站点时的根路径,如果你的工程名中包含空格,那么这个 URL 必须修改为没有空格的地址。
根据需要选择是否添加 JSTL,最后 Finish 即可。
图表 13 新建 Web Project确定之后 MyEclipse 会生成名为 SSH 的项目,其中生成的目录结构如下所示:图表 14 目录结构3.添加 Struts 支持在刚刚创建的 SSH 工程上面右击,在弹出的菜单中选择 MyEclipse -> Add Struts Capabilities ,添加 Struts图表 15 添加Struts 支持文件在弹出的对话框中选择Struts1.2,修改 Base package for new classes 成所需的包名,其余保持原状,Finish 即可。
图表 16 修改包名此时已经完成 Struts 的配臵,相关的文件添加如下:图表 17 目录结构4.添加 Spring 支持:在 SSH 工程上面右击,在弹出的菜单中选择 MyEclipse -> AddSpring Capabilities ,添加 Spring 的支持。
图表 18 添加 Spring 支持文件在弹出的对话框中选择 Spring 2,选择 MyEclipse Libraries,按照图示选择相关的库。
由于 Spring 采取最小化库发布的方式,使得Spring 的库文件彼此都是分离的,因而我们需要自己选择需要的库。
这里,AOP需要在添加 Hibernate 的事务处理时使用,Core 是Spring 的核心库,Persistence core 和 Persistence JDBC 库作为 Spring 持久化的支持,Web 允许 Spring 和 Struts 整合,其余保持原状,点击 Next。
图表 19 配臵 Spring 的支持库在这里添加 Spring 的配臵文件,可以将 Folder 更改为Web-Root/WEB-INF 目录。