SSH整合简单实例

1、配置struts.xml文件:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 
    "http://struts.apache.org/dtds/struts-2.3.dtd"> 
     
<struts> 
    <constant name="struts.action.extension" value="action" /> 
     
    <package name="s2sh" namespace="/user" extends="struts-default">
     <action name="user_*" method="{1}" class="com.java1234.action.UserAction">
      <result name="success">/success.jsp</result>
      <result name="error">/index.jsp</result>
     </action>
    </package>
     
</struts>  

2、配置hibernate.cfg.xml文件:

<?xml version='1.0' encoding='UTF-8'?> 

<!DOCTYPE hibernate-configuration PUBLIC          

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"     

"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">   

<hibernate-configuration>     

<session-factory>      

 <!--方言-->        

<property name="dialect">org.hibernate.dialect.OracleDialect</property> 

        <!-- 显示sql语句 -->         

<property name="show_sql">true</property>            

<!-- 自动更新 -->        

<property name="hbm2ddl.auto">update</property>        

</session-factory> 

</hibernate-configuration>

3、配置applicationContext.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
        <!-- 定义数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@132.224.24.118:1521:jsfx"/>
        <property name="username" value="sett_analyse"/>
        <property name="password" value="g4el_yj_ha"/>
    </bean>
   
    <!-- session工厂 --> 
    <bean id="sessionFactory" 
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
        <property name="dataSource"> 
            <ref bean="dataSource" /> 
        </property> 
        <property name="configLocation" value="classpath:hibernate.cfg.xml"/> 
        <!-- 自动扫描注解方式配置的hibernate类文件 这样的话就不需要写hbm映射文件--> 
        <property name="packagesToScan"> 
            <list> 
                <value>com.java1234.entity</value> 
            </list> 
        </property> 
    </bean> 
 
    <!-- 配置事务管理器 --> 
    <bean id="transactionManager" 
        class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
        <property name="sessionFactory" ref="sessionFactory" /> 
    </bean> 
 
    <!-- 配置事务通知属性 --> 
    <tx:advice id="txAdvice" transaction-manager="transactionManager"> 
        <!-- 定义事务传播属性 --> 
        <tx:attributes> 
            <tx:method name="insert*" propagation="REQUIRED" /> 
            <tx:method name="update*" propagation="REQUIRED" /> 
            <tx:method name="edit*" propagation="REQUIRED" /> 
            <tx:method name="save*" propagation="REQUIRED" /> 
            <tx:method name="add*" propagation="REQUIRED" /> 
            <tx:method name="new*" propagation="REQUIRED" /> 
            <tx:method name="set*" propagation="REQUIRED" /> 
            <tx:method name="remove*" propagation="REQUIRED" /> 
            <tx:method name="delete*" propagation="REQUIRED" /> 
            <tx:method name="change*" propagation="REQUIRED" /> 
            <tx:method name="get*" propagation="REQUIRED" read-only="true" /> 
            <tx:method name="find*" propagation="REQUIRED" read-only="true" /> 
            <tx:method name="load*" propagation="REQUIRED" read-only="true" /> 
            <tx:method name="*" propagation="REQUIRED" read-only="true" /> 
        </tx:attributes> 
    </tx:advice> 
     
  
    <!-- 配置事务切面 --> 
    <aop:config> 
        <aop:pointcut id="serviceOperation" 
            expression="execution(* com.java1234.service..*.*(..))" /> 
        <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation" /> 
    </aop:config> 
 
    <!-- 自动加载构建bean --> 
    <context:component-scan base-package="com.java1234" /> 
 
</beans> 

4、User.java

package com.java1234.entity;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

@Entity

@Table(name="t_user")

public class User {

 private Integer id;  

private String userName;  

private String password;

   @Id  

@GenericGenerator(name = "generator", strategy = "native")  

@GeneratedValue(generator = "generator")  

@Column(name = "id", length=11)  

public Integer getId() {   return id;  }  

public void setId(Integer id) {   this.id = id;  }  

@Column(name = "userName", length = 20)  

public String getUserName() {   return userName;  }  

public void setUserName(String userName) {   

this.userName = userName;  }  

@Column(name = "password", length = 20)  

public String getPassword() {   

return password;  }  

public void setPassword(String password) {   

this.password = password;

 }   }

5、UserAction.java

package com.java1234.action;

import javax.annotation.Resource;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpSession;

import org.apache.struts2.interceptor.ServletRequestAware;

import org.springframework.stereotype.Controller;

import com.java1234.entity.User;

import com.java1234.service.UserService;

import com.opensymphony.xwork2.ActionSupport;

@Controller public class UserAction extends ActionSupport implements ServletRequestAware{

 /**   *   */  private static final long serialVersionUID = 1L;    

private HttpServletRequest request;

 @Resource  private UserService userService;    

private User user;  private String error;        

public User getUser() {

  return user;

 }

 public void setUser(User user) {   

this.user = user;  }

 public String getError() {  

 return error;  }

 public void setError(String error) {  

 this.error = error;  }

 public String login()throws Exception{  

 HttpSession session=request.getSession();   

User currentUser=userService.findUserByNameAndPassword(user);  

 if(currentUser!=null){   

 session.setAttribute("currentUser", currentUser);    

return SUCCESS;   

}else{    

error="用后名或者密码错误!";    return ERROR;   

}  }

 @Override  public void setServletRequest(HttpServletRequest request) {   

// TODO Auto-generated method stub   this.request=request;  }

}

6、UserServiceImpl.java

package com.java1234.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.java1234.dao.BaseDao;

import com.java1234.entity.User;

import com.java1234.service.UserService;

@Service("userService") public class UserServiceImpl implements UserService{

 @Resource  private BaseDao<User> baseDao;    

@Override  public void saveUser(User user) {   

// TODO Auto-generated method stub   baseDao.save(user);  }

 @Override  public void updateUser(User user) {   

// TODO Auto-generated method stub   

baseDao.update(user);  }

 @Override  public User findUserById(int id) {   

return baseDao.get(User.class, id);  }

 @Override  public void deleteUser(User user) {  

 baseDao.delete(user);  }

 @Override  public List<User> findAllList() {   

return baseDao.find("from User");  }

 @Override  public User findUserByNameAndPassword(User user) {  

 return baseDao.get("from User u where u.userName=? and u.password=?",

new Object[]{user.getUserName(),user.getPassword()});  }

}

7、BaseDaOImpl.java

package com.java1234.dao.impl;

import java.io.Serializable; import java.util.List;

import org.hibernate.Query; import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Repository;

import com.java1234.dao.BaseDao;

@Repository("baseDao") @SuppressWarnings("all") public class BaseDaOImpl<T> implements BaseDao<T> {

 private SessionFactory sessionFactory;

 public SessionFactory getSessionFactory() {   

return sessionFactory;  }

 @Autowired  public void setSessionFactory(SessionFactory sessionFactory) {  

 this.sessionFactory = sessionFactory;  }

 private Session getCurrentSession() {   

return sessionFactory.getCurrentSession();  }

 public Serializable save(T o) {  

 return this.getCurrentSession().save(o);  }

 public void delete(T o) {   

this.getCurrentSession().delete(o);  }

 public void update(T o) {  

 this.getCurrentSession().update(o);  }

 public void saveOrUpdate(T o) {  

 this.getCurrentSession().saveOrUpdate(o);  }

 public List<T> find(String hql) {   

return this.getCurrentSession().createQuery(hql).list();  }

 public List<T> find(String hql, Object[] param) {   

Query q = this.getCurrentSession().createQuery(hql);

  if (param != null && param.length > 0) {   

 for (int i = 0; i < param.length; i++) {    

 q.setParameter(i, param[i]);   

 }   }  

 return q.list();  }

 public List<T> find(String hql, List<Object> param) {   

Query q = this.getCurrentSession().createQuery(hql);

  if (param != null && param.size() > 0) {   

 for (int i = 0; i < param.size(); i++) {     

q.setParameter(i, param.get(i));

   }   }   

return q.list();  }

 public List<T> find(String hql, Object[] param, Integer page, Integer rows) {  

 if (page == null || page < 1) {    page = 1;   }  

 if (rows == null || rows < 1) {   

 rows = 10;   }   

Query q = this.getCurrentSession().createQuery(hql);  

 if (param != null && param.length > 0) {   

 for (int i = 0; i < param.length; i++) {     

q.setParameter(i, param[i]);    }   }   

return q.setFirstResult((page - 1) * rows).setMaxResults(rows).list();  }

 public List<T> find(String hql, List<Object> param, Integer page, Integer rows) {  

 if (page == null || page < 1) {    page = 1;   }   

if (rows == null || rows < 1) {    rows = 10;   }   

Query q = this.getCurrentSession().createQuery(hql);   

if (param != null && param.size() > 0) {    

for (int i = 0; i < param.size(); i++) {    

 q.setParameter(i, param.get(i));   

 }   }  

 return q.setFirstResult((page - 1) * rows).setMaxResults(rows).list();

 }

 public T get(Class<T> c, Serializable id) {   

return (T) this.getCurrentSession().get(c, id);  }

 public T get(String hql, Object[] param) {   

List<T> l = this.find(hql, param);  

 if (l != null && l.size() > 0) {  

  return l.get(0);  

 } else {    return null;  

 }  }

 public T get(String hql, List<Object> param) {   

List<T> l = this.find(hql, param);   

if (l != null && l.size() > 0) {    

return l.get(0);   }

else {    

return null;   }  }

 public Long count(String hql) {   

return (Long) this.getCurrentSession().createQuery(hql).uniqueResult();  }

 public Long count(String hql, Object[] param) {  

 Query q = this.getCurrentSession().createQuery(hql);

  if (param != null && param.length > 0) {    

for (int i = 0; i < param.length; i++) {    

 q.setParameter(i, param[i]);    }   }   return (Long) q.uniqueResult();  }

 public Long count(String hql, List<Object> param) {   

Query q = this.getCurrentSession().createQuery(hql);   

if (param != null && param.size() > 0) {   

 for (int i = 0; i < param.size(); i++) {    

 q.setParameter(i, param.get(i));   

 }   }   

return (Long) q.uniqueResult();  }

 public Integer executeHql(String hql) {   

return this.getCurrentSession().createQuery(hql).executeUpdate();  }

 public Integer executeHql(String hql, Object[] param) {  

 Query q = this.getCurrentSession().createQuery(hql);   

if (param != null && param.length > 0) {    

for (int i = 0; i < param.length; i++) {    

 q.setParameter(i, param[i]);    

}   }   

return q.executeUpdate();  }

 public Integer executeHql(String hql, List<Object> param) {   

Query q = this.getCurrentSession().createQuery(hql);  

 if (param != null && param.size() > 0) {   

 for (int i = 0; i < param.size(); i++) {    

 q.setParameter(i, param.get(i));  

  }   }   

return q.executeUpdate();  }

}

8、web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>S2SH</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
 
  <!-- 添加对spring的支持 --> 
  <context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath:applicationContext.xml</param-value> 
  </context-param> 
   
    <!-- 定义Spring监听器,加载Spring  -->
    <listener> 
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
     
  <!-- 添加对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> 
 
  <!-- Session延迟加载到页面  -->
   <filter> 
    <filter-name>openSessionInViewFilter</filter-name> 
    <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class> 
    <init-param> 
      <param-name>singleSession</param-name> 
      <param-value>true</param-value> 
    </init-param> 
  </filter> 
   
   <filter-mapping> 
    <filter-name>openSessionInViewFilter</filter-name> 
    <url-pattern>*.action</url-pattern> 
   
  </filter-mapping> 
</web-app>

原文地址:https://www.cnblogs.com/muliu/p/5614597.html