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>

SSH整合简单实例的更多相关文章

  1. SSH整合简单例子

    说明:简单SSH整合,struts版本2.3.32,spring版本3.2.9,hibernate版本3.6.10 一.开发步骤 1 引jar包,创建用户library.使用的包和之前博文相同,可以参 ...

  2. [转]SSH整合 简单的增删改查

      Database 使用 Mysql , 建立User 表 CREATE TABLE `user` ( `id` int(11) NOT NULL, `firstName` varchar(20)  ...

  3. 【转载】Ssh整合开发介绍和简单的登入案例实现

    Ssh整合开发介绍和简单的登入案例实现 Ssh整合开发介绍和简单的登入案例实现 一  介绍: Ssh是strtus2-2.3.1.2+ spring-2.5.6+hibernate-3.6.8整合的开 ...

  4. ssh远程登录命令简单实例

    ssh远程登录命令简单实例 ssh命令用于远程登录上Linux主机. 常用格式:ssh [-l login_name] [-p port] [user@]hostname 更详细的可以用ssh -h查 ...

  5. 【SSH进阶之路】Hibernate搭建开发环境+简单实例(二)

    Hibernate是很典型的持久层框架,持久化的思想是很值得我们学习和研究的.这篇博文,我们主要以实例的形式学习Hibernate,不深究Hibernate的思想和原理,否则,一味追求,苦学思想和原理 ...

  6. SSH整合框架+mysql简单的实现

    SSH整合框架+mysql简单的实现 1. 框架整合原理: struts2整合Spring 两种: 一种struts2自己创建Action,自动装配Service : 一种 将Action交给Spri ...

  7. 【Java EE 学习 67 下】【OA项目练习】【SSH整合JBPM工作流】【JBPM项目实战】

    一.SSH整合JBPM JBPM基础见http://www.cnblogs.com/kuangdaoyizhimei/p/4981551.html 现在将要实现SSH和JBPM的整合. 1.添加jar ...

  8. mysql+ssh整合样例,附源代码下载

    项目引用jar下载:http://download.csdn.net/detail/adam_zs/7262727 项目源代码下载地址:http://download.csdn.net/detail/ ...

  9. 从MVC和三层架构说到SSH整合开发

    相信很多人都认同JavaWeb开发是遵从MVC开发模式的,遵从三层架构进行开发的,是的,大家都这么认同.但是相信大家都会有过这样一个疑问,if(MVC三层模式==三层架构思想)out.println( ...

随机推荐

  1. android常用对话框封装

    在android开发中,经常会用到对话框跟用户进行交互,方便用户可操作性:接下来就对常用对话框进行简单封装,避免在项目中出现冗余代码,加重后期项目的维护量:代码如有问题欢迎大家拍砖指正一起进步. 先贴 ...

  2. td 的colspan属性

    看来要长长记性了,这个问题上次遇到过这次又犯了这个错. <table> <tr> <td colspan="10"> </td> & ...

  3. CSS3 calc()的使用

    前言: 平时在制作页面的时候,总会碰到有的元素是100%的宽度.众所周知,如果元素宽度为100%时,其自身不带其他盒模型属性设置还好,要是有别的,那将导致盒子撑破.比如说,有一个边框,或者说有marg ...

  4. Java Android 注解(Annotation) 及几个常用开源项目注解原理简析

    不少开源库(ButterKnife.Retrofit.ActiveAndroid等等)都用到了注解的方式来简化代码提高开发效率. 本文简单介绍下 Annotation 示例.概念及作用.分类.自定义. ...

  5. AngularJS学习之输入验证

    1.AngularJS可以验证表单和控件可以验证输入的数据: 2.输入验证:客户端不能确保用户输入数据的安全,所以服务器端的数据验证也是必须的: 3.应用实例: <! DOCTYPE html& ...

  6. mvc-10部署

    性能 提高性能最简单的办法就是减少HTTP的请求数量,每个HTTP请求除了有TCP开销外,还包含大量的头信息: 让页面和其资源文件保持较小的体积将减少网络用时,对于互联网上的应用而言,这才是真正的瓶颈 ...

  7. jQuery实现等比例缩放大图片

      在布局页面时,有时会遇到大图片将页面容器“撑破”的情况,尤其是加载外链图片(通常是通过采集的外站的图片).那么本文将为您讲述使用jQuery如何按比例缩放大图片,让大图片自适应页面布局. 通常我们 ...

  8. 为什么模板函数的声明和实现都放在.h文件中

    当你不使用这个模板函数或模板类,编译器并不实例化它,当你使用时,编译器需要实例化它,因为编译器是一次只能处理一个编译单元,也就是一次处理一个cpp文件,所以实例化时需要看到该模板的完整定义.所以都放在 ...

  9. Guacamole 介绍以及架构

    Guacamole的介绍以及架构 guacd Web应用程序 在Guacamole中与用户打交道的就是Web应用程序. 之前说过,Web应用程序自己不实现任何的远程桌面协议.Web应用程序依赖guac ...

  10. Javascript的console.log()用法

    Firebug & Chrome Console 控制台的一些其他功能console.log(object[, object, ...])使用频率最高的一条语句:向控制台输出一条消息.支持 C ...