spring4+hibernate4+struts2整合實例
項目的整體結構如下:
項目用到的所有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
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!