- 浏览: 312572 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
popotang:
关注raphael,从中学习一下
基于jquery, raphael的WEB流程设计器 -
Getwaysun:
拜读了,写得非常好
iframe跨域session丢失问题 -
chen4w:
good!
Geoserver & Openlayers 学习笔记 -
holysky:
Caused by: org.springframework. ...
Spring对属性文件加密解密应用 -
holysky:
希望能解决一下!
Spring对属性文件加密解密应用
首选创建web.xml 主要是配置Struts的ActionServlet和Spring的字符过滤器
然后创建struts.xml(String配置文件) 要注意这里集成了Spring插件,把全部Spring配置文件注入到ContextLoaderPlugIn中
配置Spring配置文件
配置Action将Service注入到Action
配置Service将Dao注入到Service
配置Dao 注入Session工厂
数据源属性文件(注意不是Hibernate的配置文件,是为了让Spring读入的)
log4j配置文件(简单)
下面是类文件
Hibernate映射文件
jsp页面文件
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts/struts.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>3</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>3</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- session超时定义,单位为分钟 --> <session-config> <session-timeout>10</session-timeout> </session-config> <!-- 默认首页定义 --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
然后创建struts.xml(String配置文件) 要注意这里集成了Spring插件,把全部Spring配置文件注入到ContextLoaderPlugIn中
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <form-beans> <form-bean name="loginVO" type="com.vo.LoginVO" /> </form-beans> <global-forwards> <forward name="error" path="/error.jsp"/> </global-forwards> <action-mappings> <action path="/login" name="loginVO" type="org.springframework.web.struts.DelegatingActionProxy" parameter="action" scope="request"> <forward name="login" path="/login.jsp"/> <forward name="index" path="/index.jsp"/> </action> </action-mappings> <!-- 集成Spring插件 --> <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property="contextConfigLocation" value="/WEB-INF/spring/*.xml" /> </plug-in> </struts-config>
配置Spring配置文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- 读入属性文件 --> <bean id="propertyConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:hibernate.properties</value> </list> </property> </bean> <!-- 配置数据源,可以其他方式 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${hibernate.driverClassName}" /> <property name="url" value="${hibernate.url}" /> <property name="username" value="${hibernate.username}" /> <property name="password" value="${hibernate.password}" /> <property name="maxActive" value="${hibernate.maxActive}" /> <property name="maxIdle" value="${hibernate.maxIdle}" /> <property name="maxWait" value="${hibernate.maxWait}" /> </bean> <!-- 配置Hibernate的Session工厂,注入数据源、映射文件 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref local="dataSource"/> </property> <property name="mappingResources"> <list> <value>com/po/login.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">${hibernate.dialect}</prop> <prop key="hibernate.show_sql">${hibernate.showSQL}</prop> </props> </property> </bean> <!-- 声明Hibernate事务管理,注入Session工厂 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="sessionFactory"/> </property> </bean> <!-- 配置事务代理,注入事务管理transactionManager,由Spring来代理事务,设置事务属性 --> <bean id="transactionProxy" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"> <ref bean="transactionManager"/> </property> <property name="transactionAttributes"> <props> <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="remove*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="create*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="query*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> </beans>
配置Action将Service注入到Action
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- 配置Action,singleton属性设置为false表示不使用单例,每次都重新创建实例,避免并发问题,注入事务管理的Service --> <bean name="/login" class="com.action.LoginAction" singleton="false"> <property name="loginService"> <ref bean="loginService"/> </property> </bean> </beans>
配置Service将Dao注入到Service
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- 配置事务代理Service,先将Dao注入到Service,再将Service注入给事务代理 --> <bean id="loginService" parent="transactionProxy"> <property name="target"> <ref bean="loginTempService"/> </property> </bean> <bean id="loginTempService" class="com.service.LoginService"> <property name="loginDao"> <ref bean="loginDao"/> </property> </bean> </beans>
配置Dao 注入Session工厂
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- 配置Dao,注入Session工厂 --> <bean id="loginDao" class="com.dao.LoginDao"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> </beans>
数据源属性文件(注意不是Hibernate的配置文件,是为了让Spring读入的)
hibernate.dialect=org.hibernate.dialect.SQLServerDialect hibernate.driverClassName=com.mysql.jdbc.Driver hibernate.url=jdbc:mysql://127.0.0.1:3306/ssh hibernate.username=root hibernate.password=5719 hibernate.showSQL=true hibernate.maxActive=50 hibernate.maxIdle=30 hibernate.maxWait=1000
log4j配置文件(简单)
log4j.rootLogger=ERROR,console,file log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%-5p %d [%F,%L] - %m%n log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=F:\\SSH.log #log4j.appender.file.MaxFileSize=100000KB #log4j.appender.file.MaxBackupIndex=1 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%-5p %d [%F,%L] - %m%n
下面是类文件
package com.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction; import com.service.LoginService; import com.vo.LoginVO; public class LoginAction extends DispatchAction { private Log logger = LogFactory.getLog(LoginAction.class); private LoginService loginService; public void setLoginService(LoginService loginService) { this.loginService = loginService; } public ActionForward login(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) { try { LoginVO loginVO = (LoginVO) form; String username = loginVO.getUsername(); String password = loginVO.getPassword(); System.out.println(username+password); if(loginService.validate(username, password)) { return mapping.findForward("index"); } return mapping.findForward("error"); } catch (Exception e) { logger.error(e); return mapping.findForward("error"); } } public ActionForward save(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) { try { LoginVO loginVO = (LoginVO) form; loginService.saveUser(loginVO); return mapping.findForward("index"); } catch (Exception e) { logger.error(e); return mapping.findForward("error"); } } }
package com.dao; import java.util.List; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.po.LoginPO; public class LoginDao extends HibernateDaoSupport { @SuppressWarnings("unchecked") public String getPassword(String username) { String hql = "from LoginPO l where l.username=?"; List list = getSession().createQuery(hql).setString(0,username).list(); if(list!=null && list.size()>0) { LoginPO loginPO = (LoginPO) list.get(0); return loginPO.getPassword(); } return null; } public void save(LoginPO loginPO) { getSession().save(loginPO); } }
package com.po; import java.io.Serializable; public class LoginPO implements Serializable { private static final long serialVersionUID = 1L; private Integer id = null; private String username = null; private String password = null; public Integer getId() { return id; } public String getPassword() { return password; } public String getUsername() { return username; } public void setId(Integer id) { this.id = id; } public void setPassword(String password) { this.password = password; } public void setUsername(String username) { this.username = username; } }
package com.service; import com.dao.LoginDao; import com.po.LoginPO; import com.vo.LoginVO; public class LoginService { private LoginDao loginDao; public void setLoginDao(LoginDao loginDao) { this.loginDao = loginDao; } public boolean validate(String username,String password) { String pass = loginDao.getPassword(username); if(pass!=null) { if(pass.equals(password)) { return true; } } return false; } public void saveUser(LoginVO loginVO) { LoginPO loginPO = new LoginPO(); loginPO.setUsername(loginVO.getUsername()); loginPO.setPassword(loginVO.getPassword()); System.out.println(loginVO.getUsername()+"-"+loginVO.getPassword()+":save succeed..."); loginDao.save(loginPO); //故意制造异常,测试事务。 //loginDao.save(null); } }
package com.vo; import org.apache.struts.action.ActionForm; public class LoginVO extends ActionForm { private static final long serialVersionUID = 1L; private String username = null; private String password = null; public String getPassword() { return password; } public String getUsername() { return username; } public void setPassword(String password) { this.password = password; } public void setUsername(String username) { this.username = username; } }
Hibernate映射文件
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.po.LoginPO" table="login"> <comment></comment> <id name="id" type="int"> <column name="id" /> <generator class="native" /> </id> <property name="username" type="string"> <column name="username" not-null="true"> <comment></comment> </column> </property> <property name="password" type="string"> <column name="password" not-null="true"> <comment></comment> </column> </property> </class> </hibernate-mapping>
jsp页面文件
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <body> <form name="form" action="login.do?action=login" method="post"> <h1>Login</h1> <h4>username:</h4><input name="username" type="text"> <span id="message"></span> <h4>password:</h4><input name="password" type="password"> <br> <br> <input value="提交" type="button" onclick="form.submit();"> </form> <br> <br> <br> <form name="form" action="login.do?action=save" method="post"> <h1>Save</h1> <h4>username:</h4><input name="username" type="text"> <span id="message"></span> <h4>password:</h4><input name="password" type="password"> <br> <br> <input value="提交" type="button" onclick="form.submit();"> </form> </body> </html>
发表评论
-
10个强大的Ajax jQuery文件上传程序
2010-11-10 11:18 2330上传文件和图片是许多网站的一个常用功能,无论是让注册用户上传一 ... -
Parsing error processing resource path
2010-11-09 09:29 991ERROR - Parsing error processin ... -
Struts+Spring+Hibernate--SSH整合实例
2010-04-23 18:49 2025Struts+Spring+Hibernate--SSH整合实 ... -
Spring Ioc概述
2010-04-14 16:29 8681、Ioc概述 Ioc(控制反转)是Spring容器的内核, ... -
Spring中的数据库操作事务
2010-04-14 15:41 1278一、 Spring 中的事务 S ... -
Spring中的AOP面向切面编程和Spring对JDBC的支持
2010-04-14 15:35 1860一、Spring-AOP AOP面向切面编程(Asp ... -
Spring的基础操作、IOC(控制反转)以及DI(依赖注入)的原理
2010-04-14 15:08 2250大名鼎鼎的Spring 大家都听过, spring 是一 ... -
Spring 的优秀工具类盘点
2010-04-13 11:11 1182文件资源操作 文 件资源的操作是应用程序中常见的功 ... -
Spring对属性文件加密解密应用
2010-04-04 23:15 3199前言 在Spring的开发中 ... -
Hibernate HQL大全
2010-01-19 22:36 948Hibernate配备了一种非常强大的查询语言,这种语言看上去 ... -
hibernate悲观锁与乐观锁(一)
2009-03-11 14:38 9481.悲观锁 它指的是对数据被外界修改持保守态度。假定任何时刻 ... -
hibernate悲观锁与乐观锁(一)
2009-03-11 14:29 1073Hibernate支持两种锁机制: 即通常所说的“悲观锁(Pe ... -
Spring,hibernate,struts的面试笔试题
2009-03-10 21:28 13151、Action是不是线程安全 ... -
Hibernate缓存机制
2009-03-10 12:26 783缓存是位于应用程序与物理数据源之间,用于临时存放复制数 ... -
hibernate二级缓存详解
2009-03-10 12:15 1206hibernate的session提供了一 ... -
Hibernate查询语言——HQL
2009-03-10 10:13 1089HQL: Hibernate查询语言 Hibernate ... -
Hibernate构架应用中常用保存方式区别
2009-03-09 22:23 841hibernate对于对象的保存 ... -
Spring 结合 Hibernate 配置 C3P0
2009-03-09 22:15 747applicationContext.xml 文件 ... -
Hibernate高级查询实战
2009-03-09 22:13 921大家知道,在Hibernate Framework中,提供了三 ... -
Hibernate 中配置C3P0连接池
2009-03-09 22:10 1087Hibernate自带的连接池算法相当不成熟。 它只是 ...
相关推荐
总结起来,"struts2 spring hibernate ssh整合实例"是一个综合性的项目,涵盖了Java Web开发中的多个关键点,包括MVC框架的使用、服务层的管理、数据持久化、前端与后端的异步通信以及文件处理等。这个实例为开发者...
SSH整合,全称为Struts、Spring和Hibernate的集成,是一种常见的Java Web开发框架组合,用于构建高效、可维护的企业级应用程序。在这个例子中,我们看到的是一个基于SSH的用户注册功能的实现,使用的开发工具是...
1,spring声明事务和其它aop结合使用 2,hibernate多表(一对多/多对一,一对一,多对多)关联查询和添加 3,建数据库表的sql生成文件, 4,我也是初学者,这是我都调试成功的,用的是jdk1.4,sql server 2005,有什么不对的...
SSH整合,全称为Struts2、Spring和Hibernate的整合,是Java Web开发中常见的三大框架集成,用于构建高效、可维护的Web应用。这个项目"SSH整合留言板功能"旨在演示如何将这三个框架协同工作,实现一个用户登录和留言...
这个"Spring_Struts_Hibernate4整合实例"将帮助开发者理解如何将这三个框架有效地结合在一起,构建出高效、可维护的Web应用程序。 首先,Spring框架是整个项目的中枢,它通过依赖注入管理各个组件,包括Struts的...
SSH(Struts、Spring、Hibernate)是Java Web开发中经典的三大框架组合,它们协同工作,构建出高效、灵活的企业级应用程序。以下是对这三个框架的详细解释: 1. **Struts**: Struts是一个开源的MVC(Model-View-...
Struts、Spring、Hibernate(SSH)是Java Web开发中三个非常重要的开源框架,它们分别用于MVC模式的实现、依赖注入和持久化管理。SSH整合是将这三个框架结合在一起,以构建更高效、可维护性更强的企业级应用。本文...
### Struts Spring Hibernate (SSH) 整合实例详解 #### 一、概述 在Java Web开发领域中,Struts、Spring以及Hibernate这三个框架被广泛应用于构建企业级应用系统。Struts作为MVC模式的一种实现,负责处理用户请求...
还需要确保各框架之间的依赖注入正确无误,例如,Spring需要知道如何实例化并注入Struts2的Action和Hibernate的SessionFactory。 测试是验证整合是否成功的关键步骤,这通常涉及单元测试、集成测试和端到端测试。...
整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...
在SSH整合中,Spring通常用来管理Struts2和Hibernate的bean实例,实现依赖注入,降低组件之间的耦合度。此外,Spring的事务管理功能能够统一管理数据库操作,确保数据的一致性。 Hibernate是持久层框架,它简化了...
SSH,即Struts2、Spring和Hibernate,是Java Web开发中的三大框架。它们各自在应用程序的不同层次上发挥着重要作用,Struts2处理MVC模式中的视图和控制,Spring提供了依赖注入和面向切面编程,Hibernate则负责数据库...
整合的核心目标是让 Struts 负责视图和控制层,Spring 负责业务逻辑和依赖注入,Hibernate 负责数据持久化。通常,Spring 作为容器,管理 Struts2 的 Action 和 Hibernate 的 SessionFactory。 **整合步骤** 1. **...
这个"Struts+Spring+Hibernate 整合实例"是一个学习三大框架集成的资源,旨在帮助开发者理解如何将这三个框架有效地结合起来,以实现高效、松耦合的Web应用程序。 **Struts框架**: Struts是Apache组织的一个开源...
在"Struts Spring Hibernate 整合"中,我们首先需要理解每个框架的核心概念: 1. **Struts**:作为MVC框架,Struts处理HTTP请求并将其映射到特定的Action,然后由Action执行业务逻辑并更新模型。Struts通过配置文件...
### SSH整合 struts+hibernate+spring #### 一、SSH整合概述 在软件开发领域,特别是Java Web开发中,Struts、Spring 和 Hibernate 被广泛地应用于构建复杂的应用程序。这三大框架各有所长,分别在不同的层面发挥...
通过以上步骤,一个基本的Struts、Spring和Hibernate整合的应用就搭建完成了。这个整合的关键在于Struts处理HTTP请求,Spring管理业务对象和依赖,而Hibernate则处理数据库操作。这样的架构可以实现松耦合,便于代码...
### Struts+Spring+Hibernate (SSH) 整合实例详解 #### 一、概述与背景 Struts+Spring+Hibernate,通常简称SSH框架,是一种在Java Web开发中广泛使用的组合框架,旨在提供一种高效、灵活且可扩展的开发模式。其中...
最近我学习ssh,经过努力和百度、谷歌的帮助,成功整合了struts spring Hibernate。现在和大家分享。