【JAVA基础】struts-spring-hibernate环境简单搭建
2016-09-06 15:42
267 查看
一、创建动态WEB项目
开发工具:eclipse项目结构:struts2+spring+hibernate
数据库: mysql
1、准备Struts2的相关jar包
struts官网下载“struts-2-xxx-all”,解压后进入它的apps文件中能看到几个war文件,随便找一个war文件解压之后找到它的WEB-INF下的lib文件。
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload-1.3.2.jar
commons-io-2.2.jar
commons-lang3-3.2.jar
freemarker-2.3.22.jar
javassist-3.11.0.GA.jar
log4j-api-2.3.jar
log4j-core-2.3.jar
ognl-3.0.19.jar
struts2-core-2.3.30.jar
xwork-core-2.3.30.jar
2、导入struts2-spring-plugin-2.3.30.jar
struts2-spring-plugin-2.3.30.jar
作用:当引入这个插件后,原先struts创建的action类,交给了spring创建。
在struts2-spring-plugin.jar中有一个struts-plugin.xml,里面声明了action类由spring工厂创建。这个插件重写了struts的对象工厂,当创建一个action类时,它会根据struts的配置文件的class属性的值与spring配置文件中的id属性的值相匹配。如果没有与之匹配,将会像没有使用这个插件前一样创建,然后由spring自动装配。
3、导入spring的相关jar包
相关连接:从spring官网下载spring相关jar包
spring-aop-3.2.17.RELEASE.jar
spring-aspects-3.2.17.RELEASE.jar
spring-beans-3.2.17.RELEASE.jar
spring-context-3.2.17.RELEASE.jar
spring-context-support-3.2.17.RELEASE.jar
spring-core-3.2.17.RELEASE.jar
spring-expression-3.2.17.RELEASE.jar
spring-instrument-3.2.17.RELEASE.jar
spring-instrument-tomcat-3.2.17.RELEASE.jar
spring-jdbc-3.2.17.RELEASE.jar
spring-jms-3.2.17.RELEASE.jar
spring-orm-3.2.17.RELEASE.jar
spring-oxm-3.2.17.RELEASE.jar
spring-struts-3.2.17.RELEASE.jar
spring-test-3.2.17.RELEASE.jar
spring-tx-3.2.17.RELEASE.jar
spring-web-3.2.17.RELEASE.jar
spring-webmvc-3.2.17.RELEASE.jar
spring-webmvc-portlet-3.2.17.RELEASE.jar
4、导入“Hibernate”的相关jar包。
导入“hibernate3.jar”
进入lib文件下导入“required”下的所有jar。
antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
javassist-3.12.0.GA.jar
jta-1.1.jar
slf4j-api-1.6.1.jar
导入jap相关的jar。
hibernate-jpa-2.0-api-1.0.1.Final.jar
5、导入其他必须包:
导入log4j.jar
导入commons-logging、commons-dbcp、commons-pool、commons-fileupload、commons-io
导入数据库驱动包
导入junit包
6、最后大概需要的jar包如下:
antlr-2.7.6.jar
aopalliance-1.0.jar
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
aspectjrt-1.7.0.jar
aspectjweaver-1.7.0.jar
commons-collections-3.1.jar
commons-dbcp-1.2.1.jar
commons-fileupload-1.3.2.jar
commons-io-2.2.jar
commons-lang3-3.2.jar
commons-logging-1.2.jar
commons-pool-1.3.jar
dom4j-1.6.1.jar
freemarker-2.3.22.jar
hibernate3.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
javassist-3.12.0.GA.jar
jta-1.1.jar
junit-4.10.jar
log4j-1.2.17.jar
log4j-api-2.3.jar
log4j-core-2.3.jar
mysql-connector-java-5.1.21-bin.jar
ognl-3.0.19.jar
slf4j-api-1.6.1.jar
spring-aop-3.2.17.RELEASE.jar
spring-aspects-3.2.17.RELEASE.jar
spring-beans-3.2.17.RELEASE.jar
spring-context-3.2.17.RELEASE.jar
spring-context-support-3.2.17.RELEASE.jar
spring-core-3.2.17.RELEASE.jar
spring-expression-3.2.17.RELEASE.jar
spring-instrument-3.2.17.RELEASE.jar
spring-instrument-tomcat-3.2.17.RELEASE.jar
spring-jdbc-3.2.17.RELEASE.jar
spring-jms-3.2.17.RELEASE.jar
spring-orm-3.2.17.RELEASE.jar
spring-oxm-3.2.17.RELEASE.jar
spring-struts-3.2.17.RELEASE.jar
spring-test-3.2.17.RELEASE.jar
spring-tx-3.2.17.RELEASE.jar
spring-web-3.2.17.RELEASE.jar
spring-webmvc-3.2.17.RELEASE.jar
spring-webmvc-portlet-3.2.17.RELEASE.jar
struts2-core-2.3.30.jar
struts2-spring-plugin-2.3.30.jar
xwork-core-2.3.30.jar
7、导入log4j对应的log4j.properties文件。
log4j.rootLogger=ERROR log4j.addivity.org.apache=true log4j.appender.Root.Encoding=UTF-8 log4j.logger.org.apache.ibatis=DEBUG log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG log4j.logger.com.opensymphony.xwork2=WARN log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Threshold=DEBUG log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.Encoding=UTF-8 log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss.SSS} %p %l]%m%n log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender log4j.appender.FILE.File=${LOG_DTR}/user.log log4j.appender.FILE.Encoding=UTF-8 #这个这个appender的阈值级别 log4j.appender.FILE.Threshold=DEBUG log4j.appender.FILE.DatePattern='_'yyyyMMddHH'.log' #默认值是true,即将消息增加到指定文件中,false指 log4j.appender.FILE.Append=true log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss.SSS} %p %l]%m%n
8、创建jdbc.properties属性文件
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/test jdbc.username=root jdbc.password=root
9、创建beans.xml,即spring的配置文件
<?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"> <!--启用spring的annotation--> <context:annotation-config /> <!--指定扫描annotation的package的范围--> <context:component-scan base-package="com.kinsey.ssh01" /> <!--引入jdbc.properties配置问津--> <context:property-placeholder location="classpath*:jdbc.properties" /> <!--配置数据源信息--> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> <!--配置Hibernate的sessionFactory--> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!--配置实体类包的范围--> <property name="packagesToScan" value="com.kinsey.ssh01.model" /> <!--注入hibernate属性配置--> <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">false</prop> </props> </property> </bean> <!--配置spring事务--> <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <!--配置aop,spring是通过aop来进行事务管理的--> <aop:config> <!--设置那些方法要加入事务管理--> <aop:pointcut id="allMethods" expression="execution(* com.kinsey.ssh01.dao.*.*(..))" /> <!--配置具体要加入事务控制的方法--> <aop:advisor advice-ref="txAdvice" pointcut-ref="allMethods" /> </aop:config> <!--配置那些方法要加入事务控制--> <tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes> <tx:method name="*" propagation="REQUIRED"/> </tx:attributes> </tx:advice> </beans>
9、创建struts.xml,struts的配置文件。
<?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> <!--基于常量的配置 Begin--> <!--配置struts的action的请求后缀,这里的配置表示可以是action也可以是do--> <constant name="struts.action.extension" value="action,do,yao" /> <!--配置当修改struts配置文件的时候就会重新加载--> <constant name="struts.configuration.xml.reload" value="true" /> <constant name="struts.devMode" value="true" /> <!--让spring管理action--> <constant name="struts.objectFactory" value="spring" /> <!--基于常量的配置 End--> <package name="default" namespace="/" extends="struts-default"> <!--基于通配符的配置--> <action name="*_*" class="{1}Action" method="{2}"> <result>/WEB-INF/jsp/{1}/{2}.jsp</result> <!-- <result name="input">/WEB-INF/jsp/{1}/{2}Input.jsp</result> <result type="redirect" name="redirect_list">/${url}</result>--> </action> </package> </struts>
10、在web.xml中配置spring的监听器,struts的过滤器
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <!-- 创建spring的监听器--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!--创建struts的过滤器--> <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> <!--spring 的监听器可以通过这个上下文参数来获取beans.xml的位置--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:beans.xml</param-value> </context-param> </web-app>
11、创建对应action
package com.kinsey.ssh01.action; import com.kinsey.ssh01.model.Team; import com.kinsey.ssh01.service.ITeamService; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import org.springframework.stereotype.Repository; import javax.annotation.Resource; import javax.persistence.Entity; /** * Created with IntelliJ IDEA * Created By Kinsey * Date: 2016/8/26 * Time: 18:42 */ @Controller(value = "teamAction") @Scope("prototype") public class TeamAction extends ActionSupport implements ModelDriven<Team> { private ITeamService teamService ; private Team team ; public ITeamService getTeamService() { return teamService; } @Resource public void setTeamService(ITeamService teamService) { this.teamService = teamService; } public Team getTeam() { return team; } public void setTeam(Team team) { this.team = team; } @Override public Team getModel() { if(team==null) team=new Team() ; return team; } public String list(){ ActionContext.getContext().put("gl",teamService.getAllTeam()); return SUCCESS ; } }
12、创建公共的dao及实现类
package com.kinsey.ssh01.dao; import java.util.List; /** * Created with IntelliJ IDEA * Created By Kinsey * Date: 2016/8/23 * Time: 14:24 */ public interface IMyBaseDao<T> { void add(T t) ; void update(T t) ; void delete(int id) ; T load(int id) ; List<T> list(String sql, Object[] args) ; List<T> list(String sql) ; List<T> list(String sql, Object arg) ; }
对应实现类:
package com.kinsey.ssh01.dao; import org.hibernate.Query; import org.hibernate.SessionFactory; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import javax.annotation.Resource; import java.lang.reflect.ParameterizedType; import java.util.List; /** * Created with IntelliJ IDEA * Created By Kinsey * Date: 2016/8/23 * Time: 14:26 */ public class MyBaseDaoImpl<T> extends HibernateDaoSupport implements IMyBaseDao<T> { /** * 此处不能使用setSessionFactory()注入,因为setSessionFactory()在HibernateDaoSupport中已经定义了,且是final类型的。 * @param sessionFactory */ @Resource(name = "sessionFactory") public void setSupperSessionFactory(SessionFactory sessionFactory){ super.setSessionFactory(sessionFactory); } @Override public void add(T t) { this.getHibernateTemplate().save(t) ; } @Override public void update(T t) { this.getHibernateTemplate().update(t); } @Override public void delete(int id) { this.getHibernateTemplate().delete(this.load(id)); } @Override public T load(int id) { return (T) this.getHibernateTemplate().load(getGenericType(),id); } @Override public List<T> list(String sql, Object[] args) { Query query = this.getSession().createQuery(sql) ; if(args!=null){ for(int i=0;i<args.length;i++){ query.setParameter(i,args[i]); } } return query.list() ; } @Override public List<T> list(String sql) { return this.list(sql,null); } @Override public List<T> list(String sql, Object arg) { return this.list(sql,new Object[]{arg}); } /** * 创建一个Class的对象来获取泛型的class */ private Class genericType ; public Class getGenericType() { if(genericType==null){ genericType =(Class<T>)(((ParameterizedType)(this.getClass().getGenericSuperclass())).getActualTypeArguments()[0]); } return genericType; } }
13、创建对应的dao和实现类
package com.kinsey.ssh01.dao; import com.kinsey.ssh01.model.Team; /** * Created with IntelliJ IDEA * Created By Kinsey * Date: 2016/8/26 * Time: 18:43 */ public interface ITeamDao extends IMyBaseDao<Team> { }
实现类:
package com.kinsey.ssh01.dao; import com.kinsey.ssh01.model.Team; import org.springframework.stereotype.Repository; /** * Created with IntelliJ IDEA * Created By Kinsey * Date: 2016/8/26 * Time: 18:43 */ @Repository("teamDaoImpl") public class TeamDaoImpl extends MyBaseDaoImpl<Team> implements ITeamDao { }
14、创建对应的service以及实体类
实体类:
package com.kinsey.ssh01.model; import javax.annotation.Resource; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; /** * Created with IntelliJ IDEA * Created By Kinsey * Date: 2016/8/26 * Time: 18:43 */ @Entity @Table(name = "t_team") public class Team { private int id ; private String name ; public Team() { } @GeneratedValue @Id public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
service接口:
package com.kinsey.ssh01.service; import com.kinsey.ssh01.model.Team; import java.util.List; /** * Created with IntelliJ IDEA * Created By Kinsey * Date: 2016/8/26 * Time: 18:46 */ public interface ITeamService { List<Team> getAllTeam(); }
Sevice实现:
package com.kinsey.ssh01.service; import com.kinsey.ssh01.dao.ITeamDao; import com.kinsey.ssh01.model.Team; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; /** * Created with IntelliJ IDEA * Created By Kinsey * Date: 2016/8/26 * Time: 18:47 */ @Service("teamService") public class TeamService implements ITeamService { private ITeamDao teamDaoImpl ; public ITeamDao getTeamDaoImpl() { return teamDaoImpl; } @Resource public void setTeamDaoImpl(ITeamDao teamDaoImpl) { this.teamDaoImpl = teamDaoImpl; } @Override public List<Team> getAllTeam() { return teamDaoImpl.list("from Team"); } }
15、创建对应的要显示的jsp文件
<%-- Created by IntelliJ IDEA. User: Administrator Date: 2016/8/26 Time: 16:39 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>group</title> </head> <body> <s:iterator value="#gl"> ${id}------${name}---<br/> </s:iterator> </body> </html>
16、请求路径:
http://localhost:8080/ssh/team_list.action
17、请求效果:
相关文章推荐
- JAVA-WEB的SSH(Spring Hibernate Struts)环境搭建一(Spring+Hibernate)
- JAVA-WEB的SSH(Spring Hibernate Struts)环境搭建一(Spring)
- Struts+Spring+Hibernate (一) 集成原理和搭建环境
- struts+spring+hibernate项目开发环境的搭建——eclipse3.3+MyEclipse6.0+MySql4.1
- Eclipse下搭建struts、spring、hibernate开发环境
- java传统框架ssh---struts、spring、hibernate框架的搭建
- Struts + Spring + Hibernate基础框架搭建
- Struts + Spring + Hibernate基础框架搭建2
- Struts + Spring + Hibernate基础框架搭建
- 【JAVA Web】spring mvc4.1.6 + spring4.1.6 + hibernate4.3.11 + mysql5.5.25 开发环境搭建及相关说明
- 1、环境搭建(整合spring3.0.5+hibernate3.6.10+struts2.3.8)
- spring+hibernate+struts环境搭建
- 手工搭建SSH(Struts+Spring+Hibernate)+MyEclipse环境
- maven+springMVC+hibernate项目搭建(一基础环境配置)
- NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境
- spring4.06 hibernate4.31 struts2.3.16 全注解MAVEN环境搭建
- Spring3-hibernate3.3-struts2.1.8----环境搭建(1)
- ssh(Struts+Spring+Hibernate)环境搭建,实现登录
- Java Spring开发环境搭建及简单入门示例教程