最新版ssh hibernate spring struts2环境搭建

时间:2021-07-25 09:22:42

最新版ssh hibernate spring struts2环境搭建

最新版spring Framework下载地址:spring4.0.0RELEASE环境搭建

http://repo.spring.io/release/org/springframework/spring/4.0.0.RELEASE/

最新版hibernate下载地址:hibernate4.2.21

https://sourceforge.net/projects/hibernate/postdownload?source=dlp

最新版struts2下载地址:struts2 2.5.2

https://struts.apache.org/

上面的版本就是本次搭建环境所用到的版本,如果为了学习使用的可以通过链接下载。因为现在ssh框架跟新,然而网络上最新版的ssh环境搭建的教程还没有,虽然版本变换都差不多,但是还是简单的介绍下,记录自己学习的过程,也作为一种分享。

简单介绍本次教程(适合简单入门):

使用的开发环境是intelliJ Idea

先介绍单个的搭建案例,并且给出小型的Demo

然后再整合框架,例子的话就是简单的测试Demo

在看教程之前,我想您需要了解hibernate Spring struts2都是干什么的,有什么作用,至少要知道定义吧,现在这篇教程只是讲解手动的去搭建环境,没有使用maven等等项目构建工具,之后会写试用项目构架工具构建项目。


1、hibernate

简单说说hibernate,hibernate是一个基于JDBC的封装框架,解决的问题自然就是数据的增删改查所谓的持久化操作,让JDBC操作变得更加面向对象,一切的操作都可以面向对象化。

1)、依赖jar包

		hibernate-release-4.2.21.Final/lib/required/  下面所有的jar
antlr-2.7.7.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-4.0.2.Final.jar
hibernate-core-4.2.21.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
javassist-3.18.1-GA.jar
jboss-logging-3.1.0.GA.jar
jboss-transaction-api_1.1_spec-1.0.1.Final.jar

上面带有jboss的两个jar是需要的,之前测试过,我认为没有使用到jboss所以去掉两个jar之后会报错,除了这些jar我们还需要mysql驱动,上面的jar在hibernate-release-4.2.21.Final/lib/required/路径下,所有的都需要导入。

最新版ssh hibernate spring struts2环境搭建

上面这张图就是我的目录结构,非常简单的目录结构,如果你是使用intelliJ Idea那简直就更好了

这里我就不去过多的简绍,每一个jar有什么作用,但是会在spring的时候回去讲,因为这里的jar都比较简单,没有很多,相信只要知道一点单词就能知道jar是什么意思了吧。

好了,如果你是用的是eclipse那么一定记得要把jar变成小奶瓶哦!!


2)、配置

要搭建hibernate还需要配置文件的支持,在这里就稍微讲解hibernate的配置文件:

hibernate.cfg.xml配置文件,这个配置文件再练习的时候放在src目录下面

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!--
下面两个是使用的数据库连接方式和数据库驱动,固定写法,根据你使用的数据库决定,我使用的是mysql
-->
<property name="connection.url">jdbc:mysql://localhost:3306/hibernateDemo1</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!--这个是在控制台打印sql语句的时候进行格式化的,程序调试期间建议加上-->
<property name="format_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<!--打印显示sql语句-->
<property name="show_sql">true</property>
<!--用户名密码-->
<property name="connection.username">root</property>
<property name="connection.password">123</property> <!--每新建一个映射文件都需要-->
<mapping resource="com/cn/ljh/domain/Person.hbm.xml"/>
</session-factory>
</hibernate-configuration>

上面这些配置在做简单的搭建环境这里是足够使用的,这里面还有很多参数,作为入门暂时先了解那么多,在将来可能还会降到其他的参数。

下面先看一下我的目录结构:

最新版ssh hibernate spring struts2环境搭建

可以看到,这个是非常简单的文件结构,那么只是为了测试搭建是否成功做的测试

创建一个工具类HibernateUtils用于读取hibernate.cfg.xml配置文件,并且获取SessionFactory对象

package com.cn.ljh.utils;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; /**
* Created by ljh on 16/8/15.
*/
public class HibernateUtils {
public static SessionFactory sessionFactory;
static {
Configuration configuration = new Configuration();
configuration.configure();
configuration.buildSessionFactory();
}
}

上面就是HibernateUtils中的代码,主要用于初始化的时候获取配置文件和sessionfactory对象。

注意:上面读取hibernate.cfg.xml文件的路径是在项目根路径,因为我们将配置文件放在src目录下,所以直接这样写就可以。如果你是放在其他的路径那么就不是这样写。
package com.cn.ljh.utils;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; /**
* Created by ljh on 16/8/15.
*/
public class HibernateUtils {
public static SessionFactory sessionFactory;
static {
Configuration configuration = new Configuration();
configuration.configure("(假设文件路径)/com/cn/config");
configuration.buildSessionFactory();
}
}

如果你是讲配置文件放在上图中的路径,那么就是上面的写法。

接下来就是创建javaBean对象Person

package com.cn.ljh.domain;

/**
* Created by ljh on 16/8/15.
*/
public class Person {
private Long pid; //id作为主键
private String username;
private String password;
private String sex; public Long getPid() {
return pid;
} public void setPid(Long pid) {
this.pid = pid;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
}
}

上面就是最简单的javaBean,常见好一个javaBean之后我们还需要创建对应的映射文件Person.hbm.xml一般以类名.hbm.xml作为文件名方便管理。

接下来就是创建Person映射文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.cn.ljh.domain.Person" table="person">
<id name="pid" type="java.lang.Long" length="10">
<generator class="increment"/>
</id>
<property name="password" type="java.lang.String" length="10"/>
<property name="username" type="java.lang.String" length="10"/>
<property name="sex" type="java.lang.String" length="10"/>
</class>
</hibernate-mapping>

上面的映射文件算是最简单的映射文件了,没有一对多,多对多,一对一这些内容,自有简单的一张表,简单的设置了id作为主键,并且让主键自动增长,其次是其他字段作为表中的属性,这里就不多解释,如果不知道,那么就跟着动手做起来,慢慢去尝试总会懂得。

最后就是测试环境是否搭建成功:

编写测试类

package com.cn.ljh.test;

import com.cn.ljh.utils.HibernateUtils;
import org.junit.Test; /**
* Created by ljh on 16/8/15.
*/
public class HibernateTest extends HibernateUtils{
@Test
public void test1(){ }
}

非常简单的测试类,我们继承HibernateUtils,然后执行一个测试方法,只要文件Hibernateutils被加载,那么就会创建你文件的映射,在数据库中创建person表,那么前提是你得安装了数据库,并且创建好一个空的数据库。

到现在这个简单的测试完成了,结果图:

最新版ssh hibernate spring struts2环境搭建

到这里就说明环境搭建是没有问题的,就可以与开心的学习hibernate了。


2、spring

就简单说说spring,提供了ioc依赖注入、aop面向切面编程,是轻量级的框架,能够管理javaBean的生命周期,可以单独进行使用也可以很很多主流框架结合使用,比如hibernate、struts、Mybatis等等,并且和spring MVC的无缝衔接更是堪称完美。

1)、依赖jar包


//用于支持aop面向切面编程
spring-aop-4.0.0.RELEASE.jar
//提供对AspectJ的支持,以便可以方便的将面向方面的功能集成进IDE中
spring-aspects-4.0.0.RELEASE.jar
//这个jar 文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean 以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI 支持,引入spring-core.jar 及spring-beans.jar 文件就可以了。
外部依赖spring-core,(CGLIB)。
spring-beans-4.0.0.RELEASE.jar
//这个看名字也该知道吧,build src
spring-build-src-4.0.0.RELEASE.jar
//下面两个Spring-context的扩展支持,用于MVC方面
spring-context-4.0.0.RELEASE.jar
spring-context-support-4.0.0.RELEASE.jar
//这个就不用说了spring的核心jar
spring-core-4.0.0.RELEASE.jar
//这个看名字也知道,Spring表达式语言
spring-expression-4.0.0.RELEASE.jar
//这个是后来随着spring发展才出现的,解决spring多依赖问题,可以去搜索spring bom
spring-framework-bom-4.0.0.RELEASE.jar
//spring4.0对服务器的代理接口
spring-instrument-4.0.0.RELEASE.jar
//spring4.0对tomcat的集成
spring-instrument-tomcat-4.0.0.RELEASE.jar
//对jdbc简单的封装
spring-jdbc-4.0.0.RELEASE.jar
//为了简化jms API简单的封装
spring-jms-4.0.0.RELEASE.jar
//这个是国际化的支持
spring-messaging-4.0.0.RELEASE.jar
//为了整合第三方框架,如hibernate等
spring-orm-4.0.0.RELEASE.jar
//spring对object/xml的映射支持
spring-oxm-4.0.0.RELEASE.jar
//对Junit等测试框架的简单封装
spring-test-4.0.0.RELEASE.jar
//这个是有关事务管理的
spring-tx-4.0.0.RELEASE.jar
//下面这三个不就是和web mvc有关的吗
spring-web-4.0.0.RELEASE.jar
spring-webmvc-4.0.0.RELEASE.jar
spring-webmvc-portlet-4.0.0.RELEASE.jar
//这个是spring和websocket有关的
spring-websocket-4.0.0.RELEASE.jar

上面这些jar是所有的spring 4.0.0.RELEASE jar,如果只是单独使用的话没有必要将这些jar都加进来,像web这些就不需要,其实我们看名字就能看出很多jar是做什么用的,在spring这里我们还是要详细介绍一下每一个jar具体是什么作用,现在看到jar你还有选择恐惧整嘛,什么是可以缺少的什么是不能缺少的不就一目了然了,如果对上面的解释还还觉得不够详细可以参考:

http://blog.csdn.net/w_wind/article/details/18370715

http://www.cnblogs.com/leehongee/archive/2012/10/01/2709541.html

写的很好的,我也有借鉴他们的很多东西。

下面上一张图,看看我的目录结构是什么样子的吧:

最新版ssh hibernate spring struts2环境搭建

上面我将所有的release的jar都加上了,有些是用不上的,比如websocket这样的,但是看了下真实项目中其实上面这些基本上都能用上,所以还是都加上来吧。


2)、配置

applicationContext.xml


<!--bean.xml或者applicationContext.xml(根据自己的喜好选择Spring的配置文件名字)-->
<!--spring框架非常灵活,所以该配置文件也非常灵活-->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans>
<bean id="..." class="...">
<property name="isolation">
<bean id="java.sql.Connection.TRANSACTION_SERIALIZABLE"
class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" />
</property>
</bean>
</beans>

上面这个只是简单的实例,并不是具体的配置。

接下来,通过我自己简单的例子来

现在来创建dao daoimpl domain,然后通过spring来管理这些对象

dao


public interface StudentDao { public void addStudent(Student student); public void delStudent(Long pid); public void updateStudent(Student student); }

创建daoimpl

package com.cn.ljh.dao.impl;

import com.cn.ljh.dao.StudentDao;
import com.cn.ljh.domain.Student; /**
* Created by ljh on 16/8/17.
*/
public class StudentDaoImpl implements StudentDao {
@Override
public void addStudent(Student student) {
System.out.println("addStudent");
} @Override
public void delStudent(Long pid) {
System.out.println("delStudent");
} @Override
public void updateStudent(Student student) {
System.out.println("udateStudent");
}
}

创建javaBean

package com.cn.ljh.domain;

import com.opensymphony.xwork2.ActionSupport;

import java.io.Serializable;

/**
* Created by ljh on 16/8/17.
*/
public class Student extends ActionSupport implements Serializable {
private Long sid;
private String name;
private String sex;
private int age;
private Course course; public Long getSid() {
return sid;
} public void setSid(Long sid) {
this.sid = sid;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public Course getCourse() {
return course;
} public void setCourse(Course course) {
this.course = course;
} @Override
public String toString() {
return "Student{" +
"sid=" + sid +
", name='" + name + '\'' +
", sex='" + sex + '\'' +
", age=" + age +
", course=" + course +
'}';
}
}

现在想要需要将对象注入到spring容器中,通过spring来进行对象的管理

配置文件applicationContext.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:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
"> <bean name="student" class="com.cn.ljh.domain.Student">
<property name="name" value="小红"/>
<property name="age" value="12"/>
<property name="sex" value="男"/>
</bean> <bean name="studentDao" class="com.cn.ljh.dao.impl.StudentDaoImpl"/>
</beans>

可能会注意到,beans中有很多头部信息,这些都是自己添加进去的,简单介绍一下:

	   xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context" http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd

上面这些头部信息的作用就是你需要使用到spring什么相关的技术就在上面添加相应的头部请求即可:

那么我在下面整理出spring常用的技术和所对应的头部信息:

我们打开下载好的spring并且解压成文件夹后:

最新版ssh hibernate spring struts2环境搭建

上面这幅图中就是所有spring中的技术,每用到一个组件技术,我们都需要在beans上面去添加头部信息,我们看到还有版本号,spring-aop-4.0.xsd,我建议用什么版本的spring就用什么版本的,这样才能用到新版本的特性,当然你用其他版本也是兼容的,但是在有的时候兼容也不是很好。随便打开一个看看:

最新版ssh hibernate spring struts2环境搭建

1).这个就是要导入的

2).这个和下面两个消息对比一下你就知道要怎么写啦

	   http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd

对比对比,你在下去尝试打开其他的文件,对比对比我导入的你就会发现,全都是套路,那还怕什么呢。

但是还是整理一下方便自己吧

The util schema

xmlns:util="http://www.springframework.org/schema/util"

http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd

The jee schema

xmlns:jee="http://www.springframework.org/schema/jee"

http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd

The lang schema

xmlns:lang="http://www.springframework.org/schema/lang"

http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-4.0.xsd

The jms schema

xmlns:jms="http://www.springframework.org/schema/jms"

http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-4.0.xsd

The tx (transaction) schema

xmlns:tx="http://www.springframework.org/schema/tx"

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

The aop schema

xmlns:aop="http://www.springframework.org/schema/aop"

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd

The context schema

xmlns:context="http://www.springframework.org/schema/context

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

OK,总结结束,接着继续,现在该办的事情都办啦,开始测试我们的环境到底搭建得对不对:

测试类

我的applicationContext.xml是放在src目录下面的

package com.cn.ljh.test;

import com.cn.ljh.dao.StudentDao;
import com.cn.ljh.domain.Student;
import org.hibernate.SessionFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.testng.annotations.Test; /**
* Created by ljh on 16/8/17.
*/
public class SpringTest { @Test
public void test1(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Student student = (Student)context.getBean("student");
System.out.println(student.toString());
} @Test
public void test2(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
StudentDao studentDao = (StudentDao)context.getBean("studentDao");
studentDao.addStudent(new Student());
} }

运行结果:

test1

最新版ssh hibernate spring struts2环境搭建

test2

最新版ssh hibernate spring struts2环境搭建

到这里呢,spring的单独搭建基本就完成了。


3、struts2

其实我是故意把struts2放到最后来说的,这货简直是太坑了,你造吗,搭建的时候奶奶个熊的各种报错,其实struts2 2.5.2变动还是有点大的,对于第一次搭建还是走了不少弯路的。

来时老规矩吧,先从jar开始介绍

1)、依赖jar包

```

	asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-beanutils-1.9.2.jar
commons-connections-3.2.2.jar (可以去)集合和数据结构的增强包
commons-digester-2.1.jar
commons-fileupload-1.3.2.jar
commons-io-2.4.jar
commons-lang3-3.4.jar
commons-logging-1.1.3.jar
freemarker-2.3.23.jar
javassist-3.20.0-GA.jar (这里hibernate也有,不用管)
//这个不用json也可以去
json-lib-2.3-jdk15.jar (可以去)
log4j-api-2.5.jar
//注意啦:这个jar很重要哦,但是struts2中没有,需要外部导入,并且版本不能比上面的api版本高
log4j-core-2.3.jar
ognl-3.1.10.jar
slf4j-api-1.7.12.jar
//这个是有关注解的
struts2-convention-plugin-2.5.2.jar(使用注解配置action)
struts2-core-2.5.2.jar
//如果不适用json可以直接去掉就可以
struts2-json-plugin-2.5.2.jar (可以去) ```

看到什么不同没有,和之前的版本有什么不一样,其实也是大同小异的,但是xwork那个jar没了,这个还是有点印象的。

下面就开始被坑的道路吧,哦,struts2中的这些jar不讲解啦,其实和之前版本的都差不多,但是这个版本废弃了一些api。


2)、配置

首先是web.xml


<?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">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

注意:重点来啦,版本改变之后,我说的*过滤器类变啦,变成org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter,原来的类直接被废弃咯。

其次,struts.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd"> <struts>
<!--设置开发者模式-->
<constant name="struts.devMode" value="true"/>
<!--设置主题-->
<constant name="struts.ui.theme" value="simple"/>
<!--设置请求方式为.dao-->
<constant name="struts.action.extension" value="dao"/> <package name="default" namespace="/" extends="struts-default"> </package> </struts>

简单的配置下

接下来,上面的配置基本就完成啦,你可以启动你的tomcat去测试你的环境是否正确,tomcat的配置我就不列出来啦,不会的可以去参考其他文章。创建一个index.jsp作为测试页面,然后启动,没有报错就说明你成功啦。其实很简单,只是因为是新版本,改动还是有的。如果看到测试页面就说明你成功啦

最新版ssh hibernate spring struts2环境搭建

我的经过无数次的折腾成功啦,我相信你也许也会遇到一些或多或少的问题,但是也要面对去解决。

那么接下来就是框架整合啦,首先你必须能够让上面的这些都能单独的跑起来,自己一定要一步一步的测试过来,为了让后面你能安安静静的做一个美男子


4、spring和hibernate整合

框架整合篇呢,重头戏才刚刚开始,上面的问题呢,还是需要你亲自动手的,至少要知道每个框架是可以独立运行的,这样也方便以后面对其他框架上的整合。

三大框架的整合,其实就是两两配对,spring+hibernate、spring+struts2,先整合那个完全取决于你的心情。

好啦,不瞎扯淡啦,开始吧。

1)、依赖jar包

以来的jar呢其实基本就是上面的spring+hibernate的jar,但是为了更加明确,我还是列出来吧:

		hibernate-release-4.2.21.Final/lib/required/  下面所有的jar
antlr-2.7.7.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-4.0.2.Final.jar
hibernate-core-4.2.21.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
javassist-3.18.1-GA.jar
jboss-logging-3.1.0.GA.jar
jboss-transaction-api_1.1_spec-1.0.1.Final.jar //用于支持aop面向切面编程
spring-aop-4.0.0.RELEASE.jar
//提供对AspectJ的支持,以便可以方便的将面向方面的功能集成进IDE中
spring-aspects-4.0.0.RELEASE.jar
//这个jar 文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean 以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI 支持,引入spring-core.jar 及spring-beans.jar 文件就可以了。
外部依赖spring-core,(CGLIB)。
spring-beans-4.0.0.RELEASE.jar
//这个看名字也该知道吧,build src
spring-build-src-4.0.0.RELEASE.jar
//下面两个Spring-context的扩展支持,用于MVC方面
spring-context-4.0.0.RELEASE.jar
spring-context-support-4.0.0.RELEASE.jar
//这个就不用说了spring的核心jar
spring-core-4.0.0.RELEASE.jar
//这个看名字也知道,Spring表达式语言
spring-expression-4.0.0.RELEASE.jar
//这个是后来随着spring发展才出现的,解决spring多依赖问题,可以去搜索spring bom
spring-framework-bom-4.0.0.RELEASE.jar
//spring4.0对服务器的代理接口
spring-instrument-4.0.0.RELEASE.jar
//spring4.0对tomcat的集成
spring-instrument-tomcat-4.0.0.RELEASE.jar
//对jdbc简单的封装
spring-jdbc-4.0.0.RELEASE.jar
//为了简化jms API简单的封装
spring-jms-4.0.0.RELEASE.jar
//这个是国际化的支持
spring-messaging-4.0.0.RELEASE.jar
//为了整合第三方框架,如hibernate等
spring-orm-4.0.0.RELEASE.jar
//spring对object/xml的映射支持
spring-oxm-4.0.0.RELEASE.jar
//对Junit等测试框架的简单封装
spring-test-4.0.0.RELEASE.jar
//这个是有关事务管理的
spring-tx-4.0.0.RELEASE.jar
//下面这三个不就是和web mvc有关的吗
spring-web-4.0.0.RELEASE.jar
spring-webmvc-4.0.0.RELEASE.jar
spring-webmvc-portlet-4.0.0.RELEASE.jar
//这个是spring和websocket有关的
spring-websocket-4.0.0.RELEASE.jar //注意这个jar,我后面会详细讲
aopalliance-.jar //千万不要忘了把数据库驱动加进来
mysql-connector-java-5.1.18-bin.jar

上面就是spring+hibernate需要的jar

2)、配置

2.1 hibernate配置

hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.username">root</property>
<property name="connection.password">123</property>
<property name="connection.url">jdbc:mysql://localhost:3306/sshDemo1</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!--方言-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property> <!--这里的测试类我就先加进来啦-->
<mapping resource="com/cn/ljh/domain/Student_bean.xml"/>
<mapping resource="com/cn/ljh/domain/Course_bean.xml"/>
<mapping resource="com/cn/ljh/domain/User_hbm.xml"/>
</session-factory>
</hibernate-configuration>

上面的mapping你会发现有Student_bean.xml Course_bean.xml User_hbm.xml 其实名字是不影响的,bean和hbm都是不影响的,但是一般还是用hbm规范些,那么我这里就用User来测试hibernate是否搭建成功。

首先,创建一个数据库,创建数据库之前一定要把所有的编码都设置为UTF-8,一面忘记发生乱码问题:

create database sshdemo;

编码的问题就自己解决吧,这里不再赘述。

接下来创建User类,并且创建映射文件User_hbm.xml

User

package com.cn.ljh.domain;

/**
* Created by ljh on 16/8/22.
*/
public class User {
private Long id; public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
}
}

User_hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.cn.ljh.domain.User" table="oa_test_user">
<id name="id" type="java.lang.Long" length="10">
<generator class="native"/>
</id>
</class> </hibernate-mapping>

创建一个util类用于测试

package com.cn.ljh.utils;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; /**
* Created by ljh on 16/8/17.
*/
public class HibernateUtils { public static SessionFactory sessionFactory; static {
Configuration configuration = new Configuration();
configuration.configure();
sessionFactory = configuration.buildSessionFactory();
}
}

ok,就用上面这个简单的实例来测试hibernate是否搭建成功,还是老规矩创建JunitTest测试类:

package com.cn.ljh.test;

import com.cn.ljh.utils.HibernateUtils;
import org.hibernate.cfg.Configuration;
import org.testng.annotations.Test; /**
* Created by ljh on 16/8/17.
*/
public class hibernateUtilsTest extends HibernateUtils{ @Test
public void test1(){
Configuration configuration = new Configuration();
configuration.configure("hibernate.cfg.xml");
configuration.buildSessionFactory();
} }

点击运行吧,看创建表成功没有,我的结果成功啦:

最新版ssh hibernate spring struts2环境搭建

那么就没有问题咯,接下来就是spring

2.2 spring配置加整合

`applicationContext.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:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
"> <!--自动扫描与装配bean-->
<context:component-scan base-package="com.cn.ljh"/> <!--加载jdbc配置文件-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!--配置数据源-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="jdbcUrl" value="${jdbcUrl}"/>
<property name="driverClass" value="${driverClass}"/>
<property name="user" value="${username}"/>
<property name="password" value="${password}"/> <!--初始化时创建三个链接-->
<property name="initialPoolSize" value="3"/>
<!--最大链接数量10,默认15-->
<property name="maxPoolSize" value="10"/>
<!--最小链接数量3,默认3-->
<property name="minPoolSize" value="3"/>
<!--当池中链接数量用完后,一次创建10个链接,默认为3-->
<property name="acquireIncrement" value="10"/>
<!--当maxStatements和maxStatementsPerConnection都为0是,则缓存被关闭,默认为0-->
<property name="maxStatements" value="8"/>
<property name="maxStatementsPerConnection" value="8"/>
<!--1000秒没有使用链接则被丢失-->
<property name="maxIdleTime" value="1000"/>
</bean> <!--配置spring管理事务-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
</bean> <!--配置申明事务管理(使用注解的方式)-->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean> <!--事务aop配置,这里先注释啦,如果你不知道是什么可以去搜怎么配置,这里我们暂时不用配-->
<!--<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">-->
<!--<property name="dataSource" ref="dataSource" />-->
<!--</bean>-->
<!--<tx:advice id="txAdvice" transaction-manager="txManager">-->
<!--<tx:attributes>-->
<!--<tx:method name="save*" propagation="REQUIRED"/>-->
<!--<tx:method name="add*" propagation="REQUIRED"/>-->
<!--<tx:method name="create*" propagation="REQUIRED"/>-->
<!--<tx:method name="insert*" propagation="REQUIRED"/>-->
<!--<tx:method name="*" read-only="true" />-->
<!--</tx:attributes>-->
<!--</tx:advice>--> <!--<aop:config proxy-target-class="true">-->
<!--<aop:advisor advice-ref="txAdvice" pointcut="execution(* com.cn.ljh.dao ..*.*(..))" />-->
<!--</aop:config>--> <!--采用注解管理事务-->
<tx:annotation-driven transaction-manager="transactionManager"/> <!--<bean name="student" class="com.cn.ljh.domain.Student">-->
<!--<property name="name" value="小红"/>-->
<!--<property name="age" value="12"/>-->
<!--<property name="sex" value="男"/>-->
<!--</bean>--> <!--<bean name="studentDao" class="com.cn.ljh.dao.impl.StudentDaoImpl"/>-->
</beans> ```

jdbc.propertise

jdbcUrl     = jdbc:mysql://localhost:3306/sshDemo1
driverClass = com.mysql.jdbc.Driver
username = root
password = 123

这个配置是为了使applicationContext.xml中能够找到相应的配置


现在来讲讲我遇到的配置问题:

<context:component-scan base-package="com.cn.ljh"/>

这个配置的意思就是,你需要那个基包的内容被spring容器自动扫描管理,多个基包,用逗号隔开。

什么是被spring容器自动扫描管理?

通俗的讲,就是在这个基包下面所能又被创建对象实例的类都会被spring容器管理,不需要在applicationContext.xml中配置bean,这里使用的是注解的形式将类注入到spring中。

注解也是一个重点(简单说几个):

@Service 有关service层的类注入

@Controller 有关servlet控制器层的类注入

@Repository 有关持久化层的注入

@Component 其他的一些组件类注入

注解是一个重要内容,这里就不展开,初次介绍简单的一些注解,想要深入可以去参考其他博客

注意:上面这四个注解,其实你用哪一个都是可以的,只是为了给程序员区分,有一个分层的概念,之后查找代码,看到注解也能知道这个类属于那一层的。

通过上面这四个注解注释并且在applicationContext.xml中配置了component-scan,那么你就可以取出对象啦,例如:

建立一个测试dao 和daoimpl

package com.cn.ljh.dao.impl;

import com.cn.ljh.dao.StudentDao;
import com.cn.ljh.domain.Student;
import org.springframework.stereotype.Service; /**
* Created by ljh on 16/8/17.
*/
//注意这里使用的注解(和持久化相关,方便阅读和管理)
@Repository
public class StudentDaoImpl implements StudentDao {
@Override
public void addStudent(Student student) {
System.out.println("addStudent");
} @Override
public void delStudent(Long pid) {
System.out.println("delStudent");
} @Override
public void updateStudent(Student student) {
System.out.println("udateStudent");
}
}
package com.cn.ljh.dao;

import com.cn.ljh.domain.Student;

/**
* Created by ljh on 16/8/17.
*/
public interface StudentDao { public void addStudent(Student student); public void delStudent(Long pid); public void updateStudent(Student student); }

创建测试类


package com.cn.ljh.test; import com.cn.ljh.dao.StudentDao;
import com.cn.ljh.dao.impl.StudentDaoImpl;
import com.cn.ljh.domain.Student;
import org.hibernate.SessionFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.testng.annotations.Test; /**
* Created by ljh on 16/8/17.
*/
public class SpringTest { // private ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); @Test
public void test2(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//这里获取实体对象,bean的id是类名(类名第一个单词小写)
StudentDao studentDao = (StudentDao)context.getBean("studentDaoImpl");
studentDao.addStudent(new Student());
} }

测试之后能够得到StudentDaoImpl对象就说明配置正确,你也可以toString();

这里在测试的时候需要将<tx:annotation-driven transaction-manager="transactionManager"/>注释掉,单独测试看效果。

我的测试结果:

最新版ssh hibernate spring struts2环境搭建


<tx:annotation-driven transaction-manager="transactionManager"/>

上面这个配置是通过注解来管理事务的,很关键的哦,先不去介绍怎么用,先给大家看一个错误:(这也是我在配置的时候遇到的错误)

org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [applicationContext.xml]; nested exception is java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor

这个错误我估计会有很多人会遇到,在第一次配置的时候,看上面我讲的有一个很重要的jar,这里就是因为jar没有导入齐全造成的 aopalliance-.jar,这个是第三方的,所以还要去下载,很多人也会忽略这一步。

关于这个错误的一些说法:

http://*.com/questions/22282107/noclassdeffounderror-org-aopalliance-intercept-methodinterceptor

现在,开始测试hibernate和spring是否成功(假设现在是service层的代码):

创建一个TestService

package com.cn.ljh.test;

import com.cn.ljh.domain.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; /**
* Created by ljh on 16/8/22.
*/
@Service //service层管理
public class TestService { //通过注解获取SessionFactory
@Resource
private SessionFactory sessionFactory;
//通过注解给方法使用事务
@Transactional
public void saveUser(){ Session session = sessionFactory.getCurrentSession(); session.save(new User()); // int i = 1/0; //这里抛出异常 session.save(new User());
System.out.println(session);
}
}

这里就稍微讲解这两个注解的作用:

@Resource :这个注解可以放在字段上,这个时候相当于给这个字段添加了setting,那么通过这个字段的名字去spring容器中获取bean的id为字段名字的bean通过依赖注入对象中,同样也可以在setting方法上面使用,作用刚好相反。

@Transactional:这个就是给方法添加事务管理的,可以在类上面使用。

如果想更加深入的去理解,欢迎去搜索新的知识点的博客和文档

创建测试类:



package com.cn.ljh.test;

import com.cn.ljh.dao.StudentDao;
import com.cn.ljh.dao.impl.StudentDaoImpl;
import com.cn.ljh.domain.Student;
import org.hibernate.SessionFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.testng.annotations.Test; /**
* Created by ljh on 16/8/17.
*/
public class SpringTest { /**
* 测试SessionFactory
*/
@Test
public void test3(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
SessionFactory sessionFactory = (SessionFactory)context.getBean("sessionFactory");
System.out.println(sessionFactory.openSession());
} /**
* 测试事务
*/
@Test
public void test4(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
TestService testService = (TestService)context.getBean("testService");
testService.saveUser();
} }

首先测试是否能获取SessionFactory,测试完成后测试事务,将TestService中的异常代码注释测试一次,添加成功,将注释代码解开再进行测试,发现数据库表中没有数据,说明我们的事务是配置正确的,如图是我的测试:

将异常信息注释的测试

最新版ssh hibernate spring struts2环境搭建

将异常代码注释解开的测试

最新版ssh hibernate spring struts2环境搭建

上面数据库中是从9开始的,因为之前我已经走了很多次,所以我删除了数据,但是数据库native还是从9开始。这样就说明配置成功啦。

这里spring和hibernate配置就基本完成。


5、struts2与spring整合

1)、依赖 jar包

这里的依赖jar包基本就是struts中的jar,但是要添加struts2的spring插件的jar

	asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-beanutils-1.9.2.jar
commons-connections-3.2.2.jar (可以去)集合和数据结构的增强包
commons-digester-2.1.jar
commons-fileupload-1.3.2.jar
commons-io-2.4.jar
commons-lang3-3.4.jar
commons-logging-1.1.3.jar
freemarker-2.3.23.jar
javassist-3.20.0-GA.jar (这里hibernate也有,不用管)
//这个不用json也可以去
json-lib-2.3-jdk15.jar (可以去)
log4j-api-2.5.jar
//注意啦:这个jar很重要哦,但是struts2中没有,需要外部导入,并且版本不能比上面的api版本高
log4j-core-2.3.jar
ognl-3.1.10.jar
slf4j-api-1.7.12.jar
//这个是有关注解的
struts2-convention-plugin-2.5.2.jar(使用注解配置action)
struts2-core-2.5.2.jar
//如果不适用json可以直接去掉就可以
struts2-json-plugin-2.5.2.jar (可以去) //添加struts2的spring插件jar
struts2-spring-plugin-2.5.2.jar

3)、整合

整合之前你要先测试你的struts2框架单独在访问的时候有没有问题,能不能通过action访问到页面,如果能成功再接着进行框架的整合,千万要记得一步一步来,测试时必不可少的,不然真的全部弄好了之后,你会发现有你好受的。

如果你struts测试通过了,就开始接着整合啦,测试上面讲的单独单独配置struts2的时候就已经讲过啦:

web.xml

<?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监听对象applicationContext-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext*.xml</param-value>
</context-param> <!--配置struts2-->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

继续使用之前创建的service

package com.cn.ljh.test;

import com.cn.ljh.domain.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; /**
* Created by ljh on 16/8/22.
*/ @Service
public class TestService { @Resource
private SessionFactory sessionFactory; @Transactional
public void saveUser(){ Session session = sessionFactory.getCurrentSession(); session.save(new User()); int i = 1/0; //这里抛出异常 session.save(new User());
System.out.println(session);
}
}

接着就是创建一个action对象


package com.cn.ljh.action; import com.cn.ljh.test.TestService;
import com.opensymphony.xwork2.ActionSupport;
import org.springframework.stereotype.Controller; import javax.annotation.Resource;
import java.io.Serializable; /**
* Created by ljh on 16/8/23.
*/
@Controller
public class UserAction extends ActionSupport implements Serializable{ @Resource
private TestService testService; @Override
public String execute() throws Exception {
System.out.println("测试-------action");
testService.saveUser();
return "success";
}
}

接着就是struts.xml的配置啦,要注意和没有整合的区别

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd"> <struts>
<!--设置开发者模式-->
<constant name="struts.devMode" value="true"/>
<!--设置主题-->
<constant name="struts.ui.theme" value="simple"/> <constant name="struts.enable.DynamicMethodInvocation" value="true"/> <package name="aaa" namespace="" extends="struts-default">
<!--当spring和struts整合后class就是name的名字(区别主要在这里,class不再是类的全路径,
你也可以测试到底是类名的首字母小写还是和
name属性相同,我没有进行测试,但是这里的前提是你一
定要将插件jar添加进来才能被识别到)-->
<action name="userAction" class="userAction" method="execute">
<result name="success">/test.jsp</result>
</action>
</package> </struts>

那么如果到这里基本就算是完成啦,开启tomcat进行测试环境搭建是否成功,上面的TestService使用到的注解上面已经讲过不再解释,测试需要将TestService类中的异常代码注释关闭和打开分别测试,主要是测试事务。

看我的两次测试结果:

最新版ssh hibernate spring struts2环境搭建

这是我数据库中最新的记录,接下来我们进行两侧测试(我把之前测试的结果都删除啦)

将TestService异常代码注释测试

TestService中的 int i= 1/0;注释

最新版ssh hibernate spring struts2环境搭建

访问UserAction

最新版ssh hibernate spring struts2环境搭建

测试结果

打开TestService异常代码注释测试

TestService中的 int i= 1/0;注释解开

最新版ssh hibernate spring struts2环境搭建

访问UserAction,发现报错

最新版ssh hibernate spring struts2环境搭建

刷新数据库,发现数据库中结果没变,到这里说明我们的事务是没有什么问题的。

最后上一张我的目录结构

最新版ssh hibernate spring struts2环境搭建

到这里呢基本上是完啦,三大框架的整合而且还是最新版的哦,接下来可以好好的更加深入的研究学习框架吧。。。。

希望对你有所帮助,后边可能还会去写关于使用maven搭建的方式,企业使用自动构建的比较多,但是对于学习还是手动搭建学的知识要多写,并且这里使用的是注解的方式,不代表xml配置的方式不能使用,作为一个合格的框架使用者务必两种方式都要掌握,注解、xml都有好又不好。

加油吧骚年!!!!

记录学习的每一步,记录每一次的成长!!!!

最新版ssh hibernate spring struts2环境搭建的更多相关文章

  1. 【SSH】 之 Struts2环境搭建及简单应用开发

    在上一篇文章中,我们一起了解了一下struts2的工作机制原理,接下来让我们进行一下简单应用的开发 (一)配置环境 1.建立web项目 2.导入jar包 其中struts2中有很多jar包,我们不需要 ...

  2. Spring MVC 环境搭建(二)

    在Spring MVC 环境搭建(一)中我们知道 spring 的配置是通过 urlmapping 映射到控制器,然后通过实现Controller接口的handlerequest方法转向页面. 但这存 ...

  3. Spring MVC 环境搭建(一)

    一.建立 JavaWeb 项目 1.建立一个 Java 项目. 2.在项目下新建一个文件夹 webapp (命名可自取,这个目录即是网站根目录),再在该文件夹下新建一个 WEB-INF 文件夹(命名固 ...

  4. 第3章 Struts2框架--1、Struts2环境搭建

    第3章 Struts2框架--1.Struts2环境搭建 搭建步骤: 1.从下载http://struts.apache.org 没找到Struts2.3.16版,就下载了2.3.29 2.拷贝后解压 ...

  5. Spring MVC 环境搭建(maven&plus;SpringMVC&plus;mybatis&plus;Freemarker)

    Spring MVC 环境搭建(maven+SpringMVC+mybatis+Freemarker) 一.准备工作 1.Eclipse Java EE IDE(4.4.1) 2.JDK 3.Tomc ...

  6. Spring开发环境搭建教程

    Spring开发环境搭建 JDK7以上版本 eclispe for j2ee 4.0以上版本 Spring frameWorks 3.0以上版本 至于前两个我们就不介绍,直接百度就可以了,对于Spri ...

  7. 第一节 Spring的环境搭建

     正在构建,扫一扫,敬请期待 和玩得来的人在一起玩才叫玩! 和玩不来的人在一起玩,那种感觉就像加班啊! 关注胖个人微信公众账号,希望对各位学生有所帮助! --胖先生 Spring框架,什么是Sprin ...

  8. Spring开发环境搭建(Eclipse)

    开发环境搭建,主要包含2部分: Java安装 Eclipse安装 为易于学习,我们只安装这2个部分,对于一般开发学习也足够了.如果你有其他要安装的,酌情添加. Java安装 我们使用Java8: 下载 ...

  9. SSH(Spring Struts2 Hibernate)框架整合&lpar;注解版&rpar;

    案例描述:使用SSH整合框架实现部门的添加功能 工程: Maven 数据库:Oracle 框架:Spring Struts2  Hibernate 案例架构: 1.依赖jar包 pom.xml &lt ...

随机推荐

  1. xv6课本翻译之——附录A Pc的硬件

    Appendix A 附录A PC hardware Pc的硬件 This appendix describes personal computer (PC) hardware, the platfo ...

  2. c&num;装B指南

    要想让自己的代码,看起来更优雅,更有逼格,更高大上,就一定要写出晦涩难懂,而又简洁的代码来. 对于类自身的全局变量,一定要加this,对于基类的,一定要加base.反射不要多,但一定要有,而且偶尔就来 ...

  3. 第二百二十七天 how can I 坚持

    今天去了蟒山,天池,刚去的时候身体有点难受,整天都是那样,回来就好多了,不知道怎么回事. 天池竟然是个人造池,挺大,没有去十三陵,回来都很晚了. 去天池竟然是走的小路,已经关了,不让进,里边玲玲清清的 ...

  4. 使用静态资源设置UI信息

    首先建立一个文件存放样式设置(资源字典),所有风格设置都可以这里进行 加入以下代码: <ResourceDictionary xmlns="http://schemas.microso ...

  5. Yoga安装Ubuntu后,wifi和亮度调节问题

    http://askubuntu.com/questions/318608/lenovo-yoga-13-realtek-wireless-driver/358479#358479 http://it ...

  6. 软件测试-nextDate问题

    NextDate 函数包含三个变量:month . day 和 year ,函数的输出为输入日期后一天的日期. 例如,输入为 2006年3月 7日,则函数的输出为 2006年3月8日 .要求输入变量  ...

  7. ubuntu Error mounting &sol;dev&sol;sda6 at &sol;media&sol;xxx&period;&period;&period;

    问题原因:可能是windows没有完全关机,详细请看我的另一博文: http://www.cnblogs.com/ediszhao/p/3794459.html 为了学习linux我装了双系统,因为我 ...

  8. android项目红色感叹号

    Project --> Clean 清理一下,一般要注意的,如果是你的项目文件有错误,特别是xml文件,清理后那个R资源文件会不见的,那就需要你把错误修正后自动生成的.

  9. JSON&lpar;四)——异步请求中前后端使用Json格式的数据进行交互

    json格式的数据广泛应用于异步请求中前后端的数据交互,本文主要介绍几种使用场景和使用方法. 一,json格式字符串 <input type="button" id=&quo ...

  10. 随机森林RF、XGBoost、GBDT和LightGBM的原理和区别

    目录 1.基本知识点介绍 2.各个算法原理 2.1 随机森林 -- RandomForest 2.2 XGBoost算法 2.3 GBDT算法(Gradient Boosting Decision T ...