zoukankan      html  css  js  c++  java
  • spring整合Struts2/hibernate

    添加架包:

    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>
    

     

    配置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:p="http://www.springframework.org/schema/p"  
        xmlns:aop="http://www.springframework.org/schema/aop"   
        xmlns:context="http://www.springframework.org/schema/context"  
        xmlns:jee="http://www.springframework.org/schema/jee"  
        xmlns:tx="http://www.springframework.org/schema/tx"  
        xsi:schemaLocation="    
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd  
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd  
            http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd  
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">    
      
        <!-- 定义数据源 -->
        <bean id="dataSource"
    		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    		<property name="driverClassName"
    			value="com.mysql.jdbc.Driver">
    		</property>
    		<property name="url"
    			value="jdbc:mysql://localhost:3306/test">
    		</property>
    		<property name="username" value="root"></property>
    		<property name="password" value="123456"></property>
    	</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类文件 -->  
            <property name="packagesToScan">  
                <list>  
                    <value>com.java.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.java.service..*.*(..))" />  
            <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation" />  
        </aop:config>  
      
        <!-- 自动加载构建bean -->  
        <context:component-scan base-package="com.java" />  
      
    </beans>  
    

      

    配置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.java.action.UserAction">
        		<result name="success">/success.jsp</result>
        		<result name="error">/index.jsp</result>
        	</action>
        </package>
          
    </struts>   
    

      

    p配置hibernate.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.MySQL5Dialect</property>  
    
            <!-- 显示sql语句 -->  
            <property name="show_sql">true</property>  
            
    		<!-- 自动更新 -->
            <property name="hbm2ddl.auto">update</property>
      
      
        </session-factory>  
    </hibernate-configuration>
    

      

    实体

    package com.java.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;
    	}
    	
    }
    

      

    dao层

    package com.java.dao;
    
    import java.io.Serializable;
    import java.util.List;
    
    /**
     * 基础数据库操作类
     * 
     * @author www.java.com
     * 
     */
    public interface BaseDao<T> {
    
    	/**
    	 * 保存一个对象
    	 * 
    	 * @param o
    	 * @return
    	 */
    	public Serializable save(T o);
    
    	/**
    	 * 删除一个对象
    	 * 
    	 * @param o
    	 */
    	public void delete(T o);
    
    	/**
    	 * 更新一个对象
    	 * 
    	 * @param o
    	 */
    	public void update(T o);
    
    	/**
    	 * 保存或更新对象
    	 * 
    	 * @param o
    	 */
    	public void saveOrUpdate(T o);
    
    	/**
    	 * 查询
    	 * 
    	 * @param hql
    	 * @return
    	 */
    	public List<T> find(String hql);
    
    	/**
    	 * 查询集合
    	 * 
    	 * @param hql
    	 * @param param
    	 * @return
    	 */
    	public List<T> find(String hql, Object[] param);
    
    	/**
    	 * 查询集合
    	 * 
    	 * @param hql
    	 * @param param
    	 * @return
    	 */
    	public List<T> find(String hql, List<Object> param);
    
    	/**
    	 * 查询集合(带分页)
    	 * 
    	 * @param hql
    	 * @param param
    	 * @param page
    	 *            查询第几页
    	 * @param rows
    	 *            每页显示几条记录
    	 * @return
    	 */
    	public List<T> find(String hql, Object[] param, Integer page, Integer rows);
    
    	/**
    	 * 查询集合(带分页)
    	 * 
    	 * @param hql
    	 * @param param
    	 * @param page
    	 * @param rows
    	 * @return
    	 */
    	public List<T> find(String hql, List<Object> param, Integer page, Integer rows);
    
    	/**
    	 * 获得一个对象
    	 * 
    	 * @param c
    	 *            对象类型
    	 * @param id
    	 * @return Object
    	 */
    	public T get(Class<T> c, Serializable id);
    
    	/**
    	 * 获得一个对象
    	 * 
    	 * @param hql
    	 * @param param
    	 * @return Object
    	 */
    	public T get(String hql, Object[] param);
    
    	/**
    	 * 获得一个对象
    	 * 
    	 * @param hql
    	 * @param param
    	 * @return
    	 */
    	public T get(String hql, List<Object> param);
    
    	/**
    	 * select count(*) from 类
    	 * 
    	 * @param hql
    	 * @return
    	 */
    	public Long count(String hql);
    
    	/**
    	 * select count(*) from 类
    	 * 
    	 * @param hql
    	 * @param param
    	 * @return
    	 */
    	public Long count(String hql, Object[] param);
    
    	/**
    	 * select count(*) from 类
    	 * 
    	 * @param hql
    	 * @param param
    	 * @return
    	 */
    	public Long count(String hql, List<Object> param);
    
    	/**
    	 * 执行HQL语句
    	 * 
    	 * @param hql
    	 * @return 响应数目
    	 */
    	public Integer executeHql(String hql);
    
    	/**
    	 * 执行HQL语句
    	 * 
    	 * @param hql
    	 * @param param
    	 * @return 响应数目
    	 */
    	public Integer executeHql(String hql, Object[] param);
    
    	/**
    	 * 执行HQL语句
    	 * 
    	 * @param hql
    	 * @param param
    	 * @return
    	 */
    	public Integer executeHql(String hql, List<Object> param);
    
    }
    

      实现:

    package com.java.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.java.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();
    	}
    
    }
    

      

    service接口

    package com.java.service;
    
    import java.util.List;
    
    import com.java.entity.User;
    
    public interface UserService {
    
    	public void saveUser(User user);
    	
    	public void updateUser(User user);
    	
    	public User findUserById(int id);
    	
    	public void deleteUser(User user);
    	
    	public List<User> findAllList();
    	
    	public User findUserByNameAndPassword(User user);
    }
    

      

    实现:

    package com.java.service.impl;
    
    import java.util.List;
    
    import javax.annotation.Resource;
    
    import org.springframework.stereotype.Service;
    
    import com.java.dao.BaseDao;
    import com.java.entity.User;
    import com.java.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()});
    	}
    
    }
    

      控制器:

    package com.java.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.java.entity.User;
    import com.java.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;
    	}
    
    }
    

      

    前台index.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <form action="${pageContext.request.contextPath }/user/user_login.action" method="post">
    	userName:<input type="text" name="user.userName" value="${user.userName }"/><br/>
    	password:<input type="password" name="user.password" value="${user.password }"><br/>
    	<input type="submit" value="login"/><font color="red">${error }</font>
    </form>
    </body>
    </html>
    

      

     

  • 相关阅读:
    Set.prototype (Set) – JavaScript 中文开发手册
    wordpress插件 : 利用Max Mega Menu实现二级菜单的伸缩
    HTML textarea placeholder 属性
    Number.parseInt (Number) – JavaScript 中文开发手册
    Java 实例 – 获取 URL响应头的日期信息
    PHP date_default_timezone_set() 函数
    SIMD.fromInt32x4Bits (SIMD) – JavaScript 中文开发手册
    使用 mysql_random_data_load 生成随机数据
    python基本数据类型
    day02代码
  • 原文地址:https://www.cnblogs.com/nidegui/p/11072279.html
Copyright © 2011-2022 走看看