文档章节

spring4+hibernate4+struts2整合实例

liuhuics10
 liuhuics10
发布于 2015/12/05 20:56
字数 1090
阅读 1.5K
收藏 14

「深度学习福利」大神带你进阶工程师,立即查看>>>

项目的整体结构如下:

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


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

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;
     }
}


liuhuics10
粉丝 4
博文 97
码字总数 39010
作品 0
烟台
私信 提问
加载中
请先登录后再评论。
Java™ 编译器--Janino

Janino是一个超级小但又超级快的Java™ 编译器. 它不仅能像javac工具那样讲一组源文件编译成字节码文件,还可以对一些Java表达式,代码块,类中的文本(class body)或者内存中源文件进行编译,...

匿名
2013/04/02
4.1K
0
疯狂Spring Cloud连载(29)微服务跟踪概述

本文节选自《疯狂Spring Cloud微服务架构实战》 京东购买地址:https://item.jd.com/12256011.html 当当网购买地址:http://product.dangdang.com/25201393.html Spring Cloud教学视频:htt...

杨大仙的程序空间
2018/01/09
551
0
Akka实战:分散、聚合模式

分散与聚合:简单说就是一个任务需要拆分成多个小任务,每个小任务执行完后再把结果聚合在一起返回。 代码 http://git.oschina.net/yangbajing/akka-action 实例背景 本实例来自一个真实的线...

羊八井
2015/11/26
3.7K
13
获取spring 的bean 方法总结

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,如何在程序中获取Spring配置的bean呢? Bean工厂(com.springframework.beans.factory.BeanFactory)是Spring框架最核心的...

hello菜bird
2016/01/08
9.6K
16
backbone详细解析

Backbone 简介 中文API:http://www.csser.com/tools/backbone/backbone.js.html 英文API:http://backbonejs.org/ Backbone是构建javascript应用程序的一个优秀的类库。他简洁、轻量级、功能...

程序媛_Mickey
2016/03/08
2.2K
9

没有更多内容

加载失败,请刷新页面

加载更多

使用旁路输出(side output)来拆分和复制流

  我们在处理数据的时候,有时候想对不同情况的数据进行不同的处理,那么就需要把流进行拆分或者复制。 如果是使用filter来进行拆分,也能满足我们的需求,但每次筛选都要保留整个流,然后...

osc_ct0tt1cu
24分钟前
0
0
Azure AD 与 AWS IAM 集成实现SSO—上(Azure部分)

整体的架构和流程是下面这个样子: Azure部分: 登录Azure的portal通过Azure Active Directory创建一个测试用户: 返回Azure Active Directory 创建新的应用程序 Amazon Web Service 搜索 Am...

osc_bgs3qxk5
25分钟前
0
0
Azure AD 与 AWS IAM 集成实现SSO—下(AWS部分)

再回顾一下架构,我们都要做什么,别乱: 看来在AWS上做的工作要多一些。 登录AWS控制台: 进入到IAM这个服务: 在配置提供程序中,选择SAML,提供商名称自定义,比如WAAD,将刚才下载的元数...

osc_ibuoui1c
27分钟前
0
0
AWS DevOps 通过Config自动审计Security Group配置——上篇

这个实验的一个场景是,运维同事设计安全组Security Group的时候,打开了除了HTTP和HTTPS的入口访问权限。其他协议或端口如果打开,除了审计不通过的同时,会自动触发一个函数将它修改成我们...

osc_l330x9u1
27分钟前
3
0
AWS DevOps 通过Config自动审计Security Group配置——下篇

再讲一下背景, 这个实验的一个场景是,运维同事设计安全组Security Group的时候,打开了除了HTTP和HTTPS的入口访问权限。其他协议或端口如果打开,除了审计不通过的同时,会自动触发一个函数...

osc_cudh2wh2
29分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部