spring4+hibernate4+struts2整合实例
jopen
9年前
项目的整体结构如下:
项目用到的所有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; } }
来自:http://my.oschina.net/u/2430057/blog/539742