`

shh 整合例子

阅读更多
首选创建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">&nbsp;&nbsp;&nbsp;<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">&nbsp;&nbsp;&nbsp;<span id="message"></span>
   <h4>password:</h4><input name="password" type="password">
   <br>
   <br>
   <input value="提交" type="button" onclick="form.submit();">
  </form>
</body>
</html>

 

 

分享到:
评论
1 楼 riverchenfeng 2009-02-20  
强烈顶  谢谢

相关推荐

    shh整合shh整合例子例子

    一个小例子关于 shh整合事例 自己做的希望对大家有帮助

    关于SHH整合简单案例_MyEclipse案例

    这个"关于SHH整合简单案例_MyEclipse案例"应该是为了帮助初学者理解如何在MyEclipse环境下搭建和使用SSH框架进行项目开发。下面我们将深入探讨SSH整合的核心概念、配置步骤以及MyEclipse中的应用。 1. **Spring框架...

    shh整合框架实现分页

    ### SHH整合框架实现分页 #### 背景与目的 在开发Web应用程序时,为了提高用户体验并减轻服务器压力,通常需要对查询结果进行分页处理。分页不仅可以有效地展示大量数据,还能够减少每次请求的数据量,提高系统的...

    SHH整合+web,struts2,spring配置

    "SHH整合+web,struts2,spring配置" 指的是将Struts2、Hibernate和Spring这三大Java企业级开发框架进行整合,并涉及到与Web应用程序相关的配置,尤其是Struts2和Spring的配置文件。 **描述解析:** 描述中提到的...

    shh 整合jar包

    标题中提到的"shh 整合jar包"可能包含了这些框架及其依赖的jar文件,确保项目能够正常运行。开发者只需按照上述步骤配置和编写代码,就可以利用SSH框架高效地开发企业级应用。 总结来说,SSH整合是Java Web开发中的...

    J2EE_SHH框架整合

    "J2EE_SHH框架整合"指的是将三个非常流行的开源框架——Struts2、Spring和Hibernate集成到一个项目中,以实现更高效、更灵活的开发流程。这三个框架分别负责不同的职责:Struts2处理MVC(Model-View-Controller)...

    SHH整合(mysql,struts2 2.2+spring2.5+hibernate3.0,log,jquery,标签等)DEMO

    1、SHH整合 详细清晰的标准配置,主流的应用配置,struts2.2+spring2.5+hibernate3.0 2、结合MYSQL轻量级数据库,有写好的库表sql 3、整合日志管理配置,及Spring代理日志管理的配置及应用 4、应用WEB前段主流技术,...

    SHH整合简单的登录注册修改

    开发环境: (1) OS:Windows XP SP3 (2) DB:SQLServer 2005 (3) JDK:1.6.0_18 (4) Server:Apache Tomcat v5.5 (5) IDE:Eclipse Indigo Service Release 1 SSH框架: (1) Struts2.1.8 ...注:个人开发环境不同,...

    SHH2架构整合

    SSH2架构整合主要指的是Spring、Hibernate和Struts2这三大框架在Java开发中的集成应用。SSH2是一个流行的企业级Web应用程序开发框架,它允许开发者利用各自的优势,构建出高效、可维护的Java Web项目。 首先,...

    shh的例子

    标题“shh的例子”可能指的是在IT领域中使用SSH(Secure SHell)协议的一个实例,SSH是一种用于安全地远程登录到服务器、传输数据以及执行命令的网络协议。在这个例子中,我们可能会探讨如何配置和使用SSH,特别是...

    SHH整合所需特殊jar包.zip

    SSH所需要的特殊jar包,包括commons-dbcp2-2.1.1.jar,commons-pool2-2.4.1.jar, log4j-1.2.15.jar , log4j-api-2.9.1.jar, log4j-core-2.9.1.jar, spring-web.jar , struts2-spring-plugin-2.1.8.1.jar

    SSH实例,练习一下SHH的整合

    本实例将深入探讨SSH的整合应用。 首先,我们需要了解SSH的基本概念。SSH主要包括两部分:客户端和服务端。客户端安装在用户计算机上,用于发起连接请求;服务端则运行在远程服务器上,接收并处理连接请求。当用户...

    SHH整合源码

    【SSH整合源码详解】 SSH(Struts2、Spring、Hibernate)是Java开发中的经典企业级应用框架组合,常用于构建高效、可扩展的Web应用。这个整合源码旨在为初学者提供一个清晰易懂的学习资源,帮助他们理解这三个框架...

    shh2+oracle11G整合案例

    【SSH2与Oracle11g整合详解】 在IT行业中,SSH2(Struts2、Spring、Hibernate2)是一个常见的Java企业级应用开发框架组合,它为开发者提供了强大的模型-视图-控制器(MVC)架构支持,使得业务逻辑处理、数据持久化...

    SHH框架集合webservice

    SHH框架集合Webservice是一个专为Java开发人员设计的整合性解决方案,旨在简化Web服务的开发、部署和消费。这个框架结合了Spring、Hibernate和Struts(SHH)这三个流行的开源技术,为构建高效、可扩展的企业级应用...

    junit4与shh2+velocity框架整合

    junit4与shh2+velocity框架整合 培训

    SHH学习笔记

    SHH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他安全网络服务。它主要用于在服务器之间传输数据,确保数据在传输过程中不被窃取或篡改。SHH通过加密技术提供了强大的身份验证和...

    图书管理系统hibernate+struts2整合

    "SHH整合",即Struts2、Hibernate和Spring的整合,是Java Web开发中的常见模式。虽然本项目没有明确提及Spring,但理解SHH整合的概念对于深入学习和实践仍具有重要意义。Spring框架提供依赖注入(DI)和面向切面编程...

    shh下载

    shh下载

Global site tag (gtag.js) - Google Analytics