spring4+hibernate4+struts2整合实例

项目的整体结构如下:

210025_TiOs_2430057.png

项目用到的所有jar包如下:

210135_wC2p_2430057.png

210135_piuk_2430057.png


项目所有的类和文件如下:

1.src/beans.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:context ="http://www.springframework.org/schema/context"
    xmlns:aop= "http://www.springframework.org/schema/aop"
    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/context
        http://www.springframework.org/schema/context/spring-context.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 " >
       
    <context:annotation-config ></context:annotation-config >
    <tx:annotation-driven transaction-manager ="transactionManager" />
   
     
      <bean id = "userService" class= "service.UserServiceImpl">
      </bean >
     
      <bean id = "userDao" class= "dao.UserDaoImpl">
      </bean >
     
      <bean id = "userAction" class= "action.UserAction">
      </bean >
     
      <bean id = "dataSource" class= "org.apache.commons.dbcp.BasicDataSource" >
          <property name = "driverClassName" value= "com.mysql.jdbc.Driver" />
          <property name = "url" value= "jdbc:mysql://localhost:3306/spring" />
          <property name = "username" value= "root"/>
          <property name = "password" value= "*******"/>
      </bean >
      <bean id = "transactionManager" 
         class = "org.springframework.orm.hibernate4.HibernateTransactionManager" > 
      <property name = "sessionFactory" ref= "sessionFactory" />
      </bean >
     
      <bean id = "sessionFactory" class= "org.springframework.orm.hibernate4.LocalSessionFactoryBean" > 
        <property name = "dataSource" ref= "dataSource" /> 
        <property name = "hibernateProperties">  
            <props > 
                <prop key= "hibernate.dialect" >org.hibernate.dialect.MySQLDialect </prop > 
                <prop key = "hibernate.show_sql"> true</ prop>
                <prop key = "hibernate.hbm2ddl.auto"> update</ prop>  
                <prop key = "hibernate.format_sql"> true</ prop>  
            </props > 
        </property >
       
        <property name = "packagesToScan">  
            <list > 
                <value >entity </value > 
            </list > 
        </property >   
    </bean > 
         <!-- 配置HibernateTemplate Bean -->
    <bean id = "hibernateTemplate" class= "org.springframework.orm.hibernate4.HibernateTemplate" >
      <property name = "sessionFactory" ref= "sessionFactory" ></property >
    </bean >
     
</ beans>

2.src/log4j.properites:

### direct log messages to stdout ###
log4j.appender.stdout= org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target= System.out
log4j.appender.stdout.layout= org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern= %d{ABSOLUTE} %5p %c {1}:%L - %m%n

### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger= warn, stdout

#log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug

### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug

### log just the SQL
#log4j.logger.org.hibernate.SQL=debug

### log JDBC bind parameters ###
#log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug

### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl= debug

### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug

### log cache activity ###
#log4j.logger.org.hibernate.cache=debug

### log transaction activity
#log4j.logger.org.hibernate.transaction=debug

### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug

### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

3.src/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 >
     <package name = "reg" extends = "struts-default">
           <action name = "user" class = "action.UserAction">
               <result name = "success" >/ reg/regSuccess.jsp </ result>
               <result name = "input" >/ reg/regFail.jsp </ result>
           </action >
         </package >
 </ struts >

4.WebContent/reg/reg.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 = "user.action" method= "post">< br>
            uname: <input type = "text" name= "uname"/>< br>
            pwd:< input type= "password" name = "pwd"/>< br>
            repwd< input type= "password" name = "repwd"/>< br>
           提交: <input type = "submit" value= "提交 "/>
      </form >
</ body>
</ html>

5.WebContent/reg/regSuccess.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>
      <h1 >注册成功 </h1 >
</ body>
</ html>

6.WebContent/reg/regFail.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>
      <h1 >注册失败:用户名重复 </h1 >
</ body>
</ html>

7.WEB-INF/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_3_0.xsd" id= "WebApp_ID" version = "3.0">
  < display-name >SSHJunior </display-name >
  < welcome-file-list >
    <welcome-file >index.html </welcome-file >
    <welcome-file >index.htm </welcome-file >
    <welcome-file >index.jsp </welcome-file >
    <welcome-file >default.html </welcome-file >
    <welcome-file >default.htm </welcome-file >
    <welcome-file >default.jsp </welcome-file >
  </ welcome-file-list >
  < 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 >
 
  < listener>
        < listener-class> org.springframework.web.context.ContextLoaderListener </listener-class >
    </listener >
    <context-param >
      <param-name >contextConfigLocation </param-name >
            <!-- 默认找/WEB-INF/applicationContext.xml -->
      <param-value >classpath:beans.xml </param-value >
    </context-param >
</ web-app>

8.entity.User.jsp:

package entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class User {
     private int id;
     private String uname;
     private String pwd;
     @Id
     @GeneratedValue
     public int getId() {
          return id;
     }
     public void setId(int id) {
          this.id = id;
     }
     public String getUname() {
          return uname;
     }
     public void setUname(String uname) {
          this.uname = uname;
     }
     public String getPwd() {
          return pwd;
     }
     public void setPwd(String pwd) {
          this.pwd = pwd;
     }
    
}

9.service.UserService.java:

package service;

import entity.User;

public interface UserService {

      boolean exists(User user);

      void add(User user);

}

10.service.UserServiceImpl.java:

package service;

import javax.annotation.Resource;
import org.springframework.transaction.annotation.Transactional ;

import dao.UserDao;
import entity.User;

public class UserServiceImpl implements UserService {
     
      private UserDao userDao;
     
     

      public UserDao getUserDao() {
            return userDao;
     }
     
      @Resource
      public void setUserDao(UserDao userDao) {
            this. userDao = userDao;
     }

      /* (non-Javadoc)
      * @see service.UserService#exists(entiey.User)
      */
      @Override
      public boolean exists(User user) {
            return userDao.checkUserExistsByUname( user.getUname());
        
     }

      /* (non-Javadoc)
      * @see service.UserService#add(entiey.User)
      */
      @Override
      @Transactional
      public void add(User user) {
            userDao.save( user); 
     }
}

11.dao.UserDao.java:

package dao;

import entity.User;

public interface UserDao {

      boolean checkUserExistsByUname(String uname);

      void save(User user);

}

12.dao.UserDaoImpl.java:

package dao;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.orm.hibernate4.HibernateTemplate;
import entity.User;
public class UserDaoImpl implements UserDao {
     private HibernateTemplate hibernateTemplate;
    
    
     public HibernateTemplate getHibernateTemplate() {
          return hibernateTemplate;
     }
    
     @Resource
     public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
          this.hibernateTemplate = hibernateTemplate;
     }
    
    
     /* (non-Javadoc)
     * @see dao.UserDao#checkUserExistsByUname(java.lang.String)
     */
     @Override
     public boolean checkUserExistsByUname(String uname){
          //String sql = "select count(*) from User where uname = '"+uname+"'";
          String sql = "from User where uname = '"+uname+"'";
          List list = (List) hibernateTemplate.find(sql);
          if(list!=null&&list.size()>0){
               return true;
          }
         
         return false;
     }
    
     /* (non-Javadoc)
     * @see dao.UserDao#save(entiey.User)
     */
     @Override
     public void save(User user){
          hibernateTemplate.save(user);
     }
}

13.action.UserAction.java:

package action;


import javax.annotation.Resource;

import org.springframework.context.annotation.Scope;

import com.opensymphony.xwork2.ActionSupport;

import entity.User;
import service.UserService;
@Scope( "prototype")
public class UserAction extends ActionSupport {
     
      private String uname;
      private String pwd;
      private String repwd;
      private UserService userService;
     

      public String getUname() {
            return uname;
     }

      public void setUname(String uname) {
            this. uname = uname;
     }

      public String getPwd() {
            return pwd;
     }

      public void setPwd(String pwd) {
            this. pwd = pwd;
     }


      public String getRepwd() {
            return repwd;
     }

      public void setRepwd(String repwd) {
            this. repwd = repwd;
     }

      public UserService getUserService() {
            return userService;
     }
     
      @Resource
      public void setUserService(UserService userService) {
            this. userService = userService;
     }

      @Override
      public String execute() throws Exception {
           User user = new User();
            user.setUname( uname);
            user.setPwd( pwd);
            if( userService.exists( user)){
                 return INPUT;
           }
            userService.add( user);
            return SUCCESS;
     }
}


转载于:https://my.oschina.net/u/2430057/blog/539742

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值