转载:http://www.blogjava.net/action/archive/2007/08/28/140566.html
首选创建web.xml 主要是配置Struts的ActionServlet和Spring的字符过滤器
<?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>
jar包太多太大了这里就不发了.具体什么意思都有注视,完全实例,理论知识以后在说,欢迎拍砖嘎嘎...
分享到:
相关推荐
总结起来,"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。现在和大家分享。