SSH Struts2+hiberante+Spring整合
使用SSH框架编写学生信息:
一.新建Java工程:
(1)建立好Java各层级之间的结构:业务处理层dao,数据模型层domain,页面请求处理层(Struts2 MVC层)action,service层.
(2)建立好各层的实现类及接口;
(3)建立一个source folder文件夹,用来存放一些配置问价.
(4)改变字节码生成的位置,改为WEB-INF下面的classes文件夹下.
Java工程层级结构如下图:
二.hibernate整合到Spring容器中
步骤:
1.编写domain,数据模型,此例子为Student类.
package com.xk.ssh.proj.domian; public class Student {
private Integer id;
private String name;
private Integer age;
private double fees;
private long contact;
public Student() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public double getFees() {
return fees;
}
public void setFees(double fees) {
this.fees = fees;
}
public long getContact() {
return contact;
}
public void setContact(long contact) {
this.contact = contact;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + ", fees=" + fees + ", contact=" + contact
+ "]";
}
public Student(Integer id, String name, Integer age, double fees, long contact) {
this.id = id;
this.name = name;
this.age = age;
this.fees = fees;
this.contact = contact;
}
public Student( String name, Integer age, double fees, long contact) {
this.name = name;
this.age = age;
this.fees = fees;
this.contact = contact;
}
public Student(Integer id) {
this.id = id;
}
}
2.遍写映射文件,在domain文件夹下编写Student.xml文件.hibernate主要用来管理数据库.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.xk.ssh.proj.domian">
<class name="Student" table="Student">
<id name="id" column="s_id">
<generator class="native" />
</id>
<property name="name" column="s_name" />
<property name="age" column="s_age" />
<property name="fees" column="s_fees" />
<property name="contact" column="s_phone" />
</class>
</hibernate-mapping>
3.编写Dao接口及Dao的实现类
package com.xk.ssh.proj.dao;
import java.util.List;
import com.xk.ssh.proj.domian.Student;
public interface IStudentDao {
public void save(Student stu);
public void delete(Student stu);
public void update(Student stu);
public Student get(Student stu);
public List<Student> list();
}
package com.xk.ssh.proj.dao.impl; import java.util.List; import org.hibernate.Session;
import org.hibernate.SessionFactory; import com.xk.ssh.proj.dao.IStudentDao;
import com.xk.ssh.proj.domian.Student; public class StudentDaoImpl implements IStudentDao {
// 在Dao中注入SessionFaction
private SessionFactory sessionfactory;
public void setSessionfactory(SessionFactory sessionfactory) {
this.sessionfactory = sessionfactory;
}
@Override
public void save(Student stu) {
Session session = sessionfactory.getCurrentSession();
session.save(stu);
}
@Override
public void delete(Student stu) {
Session session = sessionfactory.getCurrentSession();
session.delete(stu);
}
@Override
public void update(Student stu) {
Session session = sessionfactory.getCurrentSession();
session.update(stu);
}
@Override
public Student get(Student stu) {
Session session = sessionfactory.getCurrentSession();
// Student.class:Student的字节码文件
return (Student) session.get(Student.class, stu.getId());
}
@SuppressWarnings("unchecked")
@Override
public List<Student> list() {
// 查询session.createQuery("sql语句").list
Session session = sessionfactory.getCurrentSession();
return session.createQuery("SELECT stu FROM Student stu").list();
}
}
4.拷贝架包:数据驱动的hibernate包,Spring的core,test,bean,context等
antlr-2.7.7.jar
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
com.springsource.org.aopalliance-1.0.0.jar
com.springsource.org.apache.commons.logging-1.1.1.jar
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
commons-fileupload-1.3.1.jar
commons-io-2.2.jar
commons-lang3-3.2.jar
dom4j-1.6.1.jar
druid-1.0.15.jar
ehcache-core-2.4.3.jar
freemarker-2.3.22.jar
hibernate-commons-annotations-4.0.1.Final.jar
hibernate-core-4.2.0.Final.jar
hibernate-ehcache-4.2.0.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
javassist-3.15.0-GA.jar
jboss-logging-3.1.0.GA.jar
jboss-transaction-api_1.1_spec-1.0.0.Final.jar
log4j-api-2.2.jar
log4j-core-2.2.jar
mysql-connector-java-5.1.40-bin.jar
ognl-3.0.6.jar
servlet-api.jar
slf4j-api-1.6.1.jar
spring-aop-4.0.0.RELEASE.jar
spring-beans-4.0.0.RELEASE.jar
spring-context-4.0.0.RELEASE.jar
spring-core-4.0.0.RELEASE.jar
spring-expression-4.0.0.RELEASE.jar
spring-jdbc-4.0.0.RELEASE.jar
spring-orm-4.0.0.RELEASE.jar
spring-test-4.0.0.RELEASE.jar
spring-tx-4.0.0.RELEASE.jar
spring-web-4.0.0.RELEASE.jar
struts2-core-2.3.24.jar
struts2-spring-plugin-2.3.24.jar
xwork-core-2.3.24.jar
5.Spring的配置文件:
①添加并配置.properties文件
<context:property-placeholder location="classpath:db.properties" />
②配置DataSource,连接数据库
<!-- 配置DataSource -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
destroy-method="close">
<!-- 连接数据库 -->
<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>
④配置SessionFactory:(jdbc/tx/orm架包)
使用LocalSessionFactoryBean 创建SessionFactory
配置dataSource和引用
配置hibernate中的常规配置(方言)
配置domain的映射文件
<!-- 配置sessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <!-- 配置连接数据库的信息 此处的name是org.springframework.orm.hibernate4.LocalSessionFactoryBean类中的dataSource
此处的ref是引用配置DateSource中的id -->
<property name="dataSource" ref="dataSource" /> <!-- 配置hibernate常规配置 -->
<property name="hibernateProperties">
<!-- dialect方言 -->
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.hbm2ddl.auto=none
hibernate.show_sql=true
</value>
</property> <!-- 配置映射文件,告诉Spring框架*.hbm.xml在哪 此处的name是org.springframework.orm.hibernate4.LocalSessionFactoryBean类中的mappingDirectoryLocations
value是自己的对象xml的包的权限定名称 -->
<property name="mappingDirectoryLocations" value="classpath:com/xk/ssh/proj/domian" />
</bean>
6.编写Dao
①直接在Dao中注入一个SessionFactory;
private SessionFactory sessionfactory;
public void setSessionfactory(SessionFactory sessionfactory) {
this.sessionfactory = sessionfactory;
}
②在Dao中直接使用SessionFactory.getCurrentSession()来得到我们需要的session
Session session = sessionfactory.getCurrentSession();
7.在Spring中配置Dao
①抽象一个baseDao;
<bean id = "baseDao" abstract = "true" />
②Dao继承BaseDao;
<bean id="stuDao" parent="baseDao"/>
Dao类extends jdbcDaoSupport implements 接口
8.编写Service
①编写Service接口和实现
package com.xk.ssh.proj.service;
import java.util.List;
import com.xk.ssh.proj.domian.Student;
public interface IStudentService {
public void save(Student stu);
public void delete(Student stu);
public void update(Student stu);
public Student get(Student stu);
public List<Student> list();
}
package com.xk.ssh.proj.service.impl;
import java.util.List;
import com.xk.ssh.proj.dao.IStudentDao;
import com.xk.ssh.proj.domian.Student;
import com.xk.ssh.proj.service.IStudentService;
public class StudentServiceImpl implements IStudentService {
private IStudentDao student;
public void setStudent(IStudentDao student) {
this.student = student;
}
@Override
public void save(Student stu) {
student.save(stu);
}
@Override
public void delete(Student stu) {
student.delete(stu);
}
@Override
public void update(Student stu) {
student.update(stu);
}
@Override
public Student get(Student stu) {
return student.get(stu);
}
@Override
public List<Student> list() {
return student.list();
}
}
②在Spring中配置事物servicebean
<!-- 配置service id为唯一标识,class为service的实现类 name为service实现类中注入的dao层对象 ref为引用Dao -->
<bean id="stuService" class="com.xk.ssh.proj.service.impl.StudentServiceImpl">
<property name="student" ref="stuDao" />
</bean>
9.配置事物
<!-- 配置事务管理器 -->
<bean id="txMgr"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean> <!-- 配置事物 事物是配置给service实现的 -->
<aop:config>
<!-- pointcut:切点 ; Advice:通知 advisor:切点和通知的配置器 下面是配置切点:advice-ref:引用通知的ID -->
<aop:pointcut expression="execution(* com.xk.ssh.proj.service.*.*(..))"
id="stuTC" />
<aop:advisor advice-ref="StuAdvice" pointcut-ref="stuTC" />
</aop:config> <tx:advice id="StuAdvice" transaction-manager="txMgr">
<tx:attributes>
<!-- 过滤方法,将所有以get和list开头的方法标记为只读 -->
<tx:method name="get*" read-only="true" />
<tx:method name="list*" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
三.将Struts2 集成在Spring容器
1.导架包:(spring-web/Struts-spring-plugin...jar)
2.编写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>
<constant name="struts.action.extension" value="action,nice,,"></constant> <!-- 加后缀 -->
<constant name="struts.devMode" value="true" /> <!-- 小的改动不需要再启动服务器 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/> <!-- 动态调用 --> <package name="hello" extends="struts-default">
<action name="list_*" class="StuAction" method="{1}">
<result name="list">/WEB-INF/views/SSH.jsp</result>
</action>
</package>
</struts>
3.编写web.xml文件(位置在WEB-INF文件夹下面)
<?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>
<constant name="struts.action.extension" value="action,nice,,"></constant> <!-- 加后缀 -->
<constant name="struts.devMode" value="true" /> <!-- 小的改动不需要再启动服务器 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/> <!-- 动态调用 --> <package name="hello" extends="struts-default">
<action name="list_*" class="StuAction" method="{1}">
<result name="list">/WEB-INF/views/SSH.jsp</result>
</action>
</package>
</struts>
4.编写Action (页面请求)
package com.xk.ssh.proj.mvc;
import java.util.List;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.xk.ssh.proj.domian.Student;
import com.xk.ssh.proj.service.IStudentService;
public class StudentAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private IStudentService studentService;
public void setStudentService(IStudentService studentService) {
this.studentService = studentService;
}
public String list() {
List<Student> list = studentService.list();
ActionContext context = ActionContext.getContext();
context.put("key", list);
System.out.println(list);
return "list";
}
}
5.在applicationcontext.xml中配置action
<!-- 配置Action -->
<bean id="StuAction" class="com.xk.ssh.proj.mvc.StudentAction">
<property name="studentService" ref="stuService"/>
</bean>
6.编写Struts的配置文件:在action的class属性中填写的是此action在applicationcontext.xml中对应的bean的id
7.在web.xml中添加listener监听器
8.在web.xml中添加Spring框架启动的加载文件配置路径
<context-param >
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationcontext.xml</param-value>
</context-param>
四.附上完整代码:
//domain
package com.xk.ssh.proj.domian; public class Student {
private Integer id;
private String name;
private Integer age;
private double fees;
private long contact;
public Student() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public double getFees() {
return fees;
}
public void setFees(double fees) {
this.fees = fees;
}
public long getContact() {
return contact;
}
public void setContact(long contact) {
this.contact = contact;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + ", fees=" + fees + ", contact=" + contact
+ "]";
}
public Student(Integer id, String name, Integer age, double fees, long contact) {
this.id = id;
this.name = name;
this.age = age;
this.fees = fees;
this.contact = contact;
}
public Student( String name, Integer age, double fees, long contact) {
this.name = name;
this.age = age;
this.fees = fees;
this.contact = contact;
}
public Student(Integer id) {
this.id = id;
}
} //domain的xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.xk.ssh.proj.domian">
<class name="Student" table="Student">
<id name="id" column="s_id">
<generator class="native" />
</id>
<property name="name" column="s_name" />
<property name="age" column="s_age" />
<property name="fees" column="s_fees" />
<property name="contact" column="s_phone" />
</class>
</hibernate-mapping>
//dao接口
package com.xk.ssh.proj.dao;
import java.util.List;
import com.xk.ssh.proj.domian.Student;
public interface IStudentDao {
public void save(Student stu);
public void delete(Student stu);
public void update(Student stu);
public Student get(Student stu);
public List<Student> list();
} //dao
package com.xk.ssh.proj.dao.impl; import java.util.List; import org.hibernate.Session;
import org.hibernate.SessionFactory; import com.xk.ssh.proj.dao.IStudentDao;
import com.xk.ssh.proj.domian.Student; public class StudentDaoImpl implements IStudentDao {
// 在Dao中注入SessionFaction
private SessionFactory sessionfactory;
public void setSessionfactory(SessionFactory sessionfactory) {
this.sessionfactory = sessionfactory;
}
@Override
public void save(Student stu) {
Session session = sessionfactory.getCurrentSession();
session.save(stu);
}
@Override
public void delete(Student stu) {
Session session = sessionfactory.getCurrentSession();
session.delete(stu);
}
@Override
public void update(Student stu) {
Session session = sessionfactory.getCurrentSession();
session.update(stu);
}
@Override
public Student get(Student stu) {
Session session = sessionfactory.getCurrentSession();
// Student.class:Student的字节码文件
return (Student) session.get(Student.class, stu.getId());
}
@SuppressWarnings("unchecked")
@Override
public List<Student> list() {
// 查询session.createQuery("sql语句").list
Session session = sessionfactory.getCurrentSession();
return session.createQuery("SELECT stu FROM Student stu").list();
}
}
//service接口
package com.xk.ssh.proj.service;
import java.util.List;
import com.xk.ssh.proj.domian.Student;
public interface IStudentService {
public void save(Student stu);
public void delete(Student stu);
public void update(Student stu);
public Student get(Student stu);
public List<Student> list();
} //service类
package com.xk.ssh.proj.service.impl;
import java.util.List;
import com.xk.ssh.proj.dao.IStudentDao;
import com.xk.ssh.proj.domian.Student;
import com.xk.ssh.proj.service.IStudentService;
public class StudentServiceImpl implements IStudentService {
private IStudentDao student;
public void setStudent(IStudentDao student) {
this.student = student;
}
@Override
public void save(Student stu) {
student.save(stu);
}
@Override
public void delete(Student stu) {
student.delete(stu);
}
@Override
public void update(Student stu) {
student.update(stu);
}
@Override
public Student get(Student stu) {
return student.get(stu);
}
@Override
public List<Student> list() {
return student.list();
}
} //MVC:action类
package com.xk.ssh.proj.mvc;
import java.util.List;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.xk.ssh.proj.domian.Student;
import com.xk.ssh.proj.service.IStudentService;
public class StudentAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private IStudentService studentService;
public void setStudentService(IStudentService studentService) {
this.studentService = studentService;
}
public String list() {
List<Student> list = studentService.list();
ActionContext context = ActionContext.getContext();
context.put("key", list);
System.out.println(list);
return "list";
}
}
//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>
<constant name="struts.action.extension" value="action,nice,,"></constant> <!-- 加后缀 -->
<constant name="struts.devMode" value="true" /> <!-- 小的改动不需要再启动服务器 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/> <!-- 动态调用 --> <package name="hello" extends="struts-default">
<action name="list_*" class="StuAction" method="{1}">
<result name="list">/WEB-INF/views/SSH.jsp</result>
</action>
</package>
</struts> //applicationcontext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
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:property-placeholder location="classpath:db.properties" /> <!-- 配置DataSource -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
destroy-method="close">
<!-- 连接数据库 -->
<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> <!-- 配置sessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <!-- 配置连接数据库的信息 此处的name是org.springframework.orm.hibernate4.LocalSessionFactoryBean类中的dataSource
此处的ref是引用配置DateSource中的id -->
<property name="dataSource" ref="dataSource" /> <!-- 配置hibernate常规配置 -->
<property name="hibernateProperties">
<!-- dialect方言 -->
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.hbm2ddl.auto=none
hibernate.show_sql=true
</value>
</property> <!-- 配置映射文件,告诉Spring框架*.hbm.xml在哪 此处的name是org.springframework.orm.hibernate4.LocalSessionFactoryBean类中的mappingDirectoryLocations
value是自己的对象xml的包的权限定名称 -->
<property name="mappingDirectoryLocations" value="classpath:com/xk/ssh/proj/domian" />
</bean> <!-- 配置Dao: 此处ID为唯一标识;class为实现类的权限定 -->
<bean id="stuDao" class="com.xk.ssh.proj.dao.impl.StudentDaoImpl">
<!-- 此处name为StudentDaoimpl类中的注入的sessionFactory ; ref为session工厂的标识 -->
<property name="sessionfactory" ref="sessionFactory" />
</bean> <!-- 配置service id为唯一标识,class为service的实现类 name为service实现类中注入的dao层对象 ref为引用Dao -->
<bean id="stuService" class="com.xk.ssh.proj.service.impl.StudentServiceImpl">
<property name="student" ref="stuDao" />
</bean> <!-- 配置事务管理器 -->
<bean id="txMgr"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean> <!-- 配置事物 事物是配置给service实现的 -->
<aop:config>
<!-- pointcut:切点 ; Advice:通知 advisor:切点和通知的配置器 下面是配置切点:advice-ref:引用通知的ID -->
<aop:pointcut expression="execution(* com.xk.ssh.proj.service.*.*(..))"
id="stuTC" />
<aop:advisor advice-ref="StuAdvice" pointcut-ref="stuTC" />
</aop:config> <tx:advice id="StuAdvice" transaction-manager="txMgr">
<tx:attributes>
<!-- 过滤方法,将所有以get和list开头的方法标记为只读 -->
<tx:method name="get*" read-only="true" />
<tx:method name="list*" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<!-- 配置Action -->
<bean id="StuAction" class="com.xk.ssh.proj.mvc.StudentAction">
<property name="studentService" ref="stuService"/>
</bean> </beans>
//test测试类
package com.xk.ssh.proj.test; import java.util.List; import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.xk.ssh.proj.domian.Student;
import com.xk.ssh.proj.service.IStudentService; @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationcontext.xml")
public class StudentTest {
@Autowired
private IStudentService stuService;
@Test
public void TestStudentSave() throws Exception {
stuService.save(new Student("张1", 11, 1991, 2222));
stuService.save(new Student("张2", 12, 1992, 2222));
stuService.save(new Student("张3", 13, 1993, 2222));
stuService.save(new Student("张4", 14, 1994, 2222));
}
@Test
public void TestStudentDelete() throws Exception {
stuService.delete(new Student(1));
}
@Test
public void TestStudentUptade() throws Exception {
stuService.update(new Student(2, "张阿三", 2, 1123, 12232));
}
@Test
public void TestStudentGet() throws Exception {
Student student = stuService.get(new Student(2));
System.out.println(student);
}
@Test
public void TestStudentList() throws Exception {
List<Student> list = stuService.list();
System.out.println(list);
}
}
//properties文件
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///spring
jdbc.username=root
jdbc.password=root
SSH Struts2+hiberante+Spring整合的更多相关文章
- Maven环境下搭建SSH框架之Spring整合Struts2
© 版权声明:本文为博主原创文章,转载请注明出处 1.搭建环境 Struts2:2.5.10 Spring:4.3.8.RELEASE 注意:其他版本在某些特性的使用上可能稍微存在差别 2.准备工作 ...
- 工作笔记3.手把手教你搭建SSH(struts2+hibernate+spring)环境
上文中我们介绍<工作笔记2.软件开发经常使用工具> 从今天開始本文将教大家怎样进行开发?本文以搭建SSH(struts2+hibernate+spring)框架为例,共分为3步: 1)3个 ...
- Maven环境下搭建SSH框架之Spring整合Hibernate
© 版权声明:本文为博主原创文章,转载请注明出处 1.搭建环境 Spring:4.3.8.RELEASE Hibernate:5.1.7.Final MySQL:5.7.17 注意:其他版本在某些特性 ...
- 二十六:Struts2 和 spring整合
二十六:Struts2 和 spring整合 将项目名称为day29_02_struts2Spring下的scr目录下的Struts.xml文件拷贝到新项目的scr目录下 在新项目的WebRoot-- ...
- 第一次做的struts2与spring整合
参考:http://www.cnblogs.com/S-E-P/archive/2012/01/18/2325253.html 这篇文章说的关键就是“除了导入Struts2和Spring的核心库之外, ...
- Struts2学习笔记——Struts2与Spring整合
Struts2与Spring整合后,可以使用Spring的配置文件applicationContext.xml来描述依赖关系,在Struts2的配置文件struts.xml来使用Spring创建的 ...
- Struts2+Hibernate+Spring 整合示例
转自:https://blog.csdn.net/tkd03072010/article/details/7468769 Struts2+Hibernate+Spring 整合示例 Spring整合S ...
- Struts2+Hibernate+Spring 整合示例[转]
原文 http://blog.csdn.net/tkd03072010/article/details/7468769 Spring整合Struts2.Hibernate原理概述: 从用户角度来看,用 ...
- Spring第四篇【Intellij idea环境下、Struts2和Spring整合】
前言 Spring的第二和第三篇已经讲解了Spring的基本要点了[也就是Core模块]-本博文主要讲解Spring怎么与Struts2框架整合- Struts2和Spring的整合关键点: acti ...
随机推荐
- qrcode插件生成二维码
<!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...
- C#串口通信遇到的坑
C#串口通信中有一个DataReceived事件可以委托一个接收函数.此接收函数是运行在辅线程(secondary thread)上的.如果要在这个函数中修改主线程中的一些元素,比如UI界面上的变量的 ...
- mysql的一些指令
说起来mysql,mysql其实是特别简单操作的数据库.它有一下几方面的特点,亦或者是说优点,1,支持多语言:2.移植性比较好:3,我觉得最重要的一点就是它是开源的,因为开源,所以使用广泛,4.效率比 ...
- hashlib、hmac
#hashlib import hashlib#md5m = hashlib.md5()m.update(b"Hello")print(m.hexdigest()) #hexdig ...
- Linux hostname设置,静态ip设置,hostname与静态ip相互映射
1,hostname设置 永久设置: centos 7 下,切换到root 用户 vi /etc/hostname 输入要修改的hostname centos 6或者其他linux 系统,可能在/et ...
- MongoDB集群单mongos的问题总结
问题发现 在使用过程中,通过spark访问集群的效率不是很令人满意,80核心同时运行的速度比单核心也就快了20倍左右,预测瓶颈在mongodb读写上.当然,此时没遇到其他问题暂时没进行问题梳理. 在数 ...
- oracle数据库调整字段顺序
oracle数据库调整字段顺序 https://blog.csdn.net/xiaobaixie/article/details/77892034
- 51Nod 1058 N的阶乘的长度
输入N求N的阶乘的10进制表示的长度.例如6! = 720,长度为3. Input 输入N(1 <= N <= 10^6) Output 输出N的阶乘的长度 Input示例 6 Out ...
- Linux脚本shell字符串处理
Linux脚本shell字符串处理,基本都有了,看着搜吧 TLDP教堂 shell中if条件字符串.数字比对,[[ ]]和[ ]区别 Linux 之 shell 比较运算符 Linux Shell编程 ...
- AJAX跨域问题以及解决思路(更新中)
跨域的三大原因(同时满足) 浏览器限制 跨域 XHR请求 解决思路: 让浏览器不做限制,指定参数,让浏览器不做校验,但该方法不太合理,它需要每个人都去做改动. 不要发出XHR请求,这样就算是跨域,浏览 ...