摘要

IDEA无疑是Java编程的利器,在下面我们将介绍如何使用IDEA来整合SSH(Struts2 + Spring + Hibernate);介绍將分为三个部分来讲,分别是新建工程,Spring引入并测试, Hibernate引入并测试,Struts2引入并测试; 下面使用的IDEA的版本是2017.1

以下的代码和流程大体参考了 SSH只是完善了些细节和修改了部分代码

所有代码均可在 github 下载

另外相关整合还可以参考  maven搭建项目 使用maven可以省去手动解决依赖的问题。

零,预备工作

1) 安装IDEA

2) 安装MySQL

3) 安装tomcat 参考

4) 建MySQL数据库和表

  1. 建数据库: mysqladmin -u root -p create TESTDB
  2. 建表
  3. [sql] view plain copy
    1. CREATE TABLE addresslist (
    2. id INT NOT NULL AUTO_INCREMENT,
    3. name VARCHAR(40) NOT NULL,
    4. phone VARCHAR(40) NOT NULL,
    5. PRIMARY KEY ( id )
    6. );

一,新建工程

新建工程时,要选择我们使用的框架还有服务器

  1. 点击左侧的Spring
  2. Additional Libraries and Framework里面选择Spring,Web Application, Struts2, Application Server(选择tomcat就可以了),Hibernate;
  3. 点击Next,输入项目名称;完成后等待IDEA下载依赖包

二,Spring的引入和测试

新建完成工程后,为了测试我们的Spring是否引入成功,我们要对IOC进行测试

1. 在src目录下新建一个test包(src->New->package)
2. 在test包下面新建一个TestService.java,代码如下

[java] view plain copy
  1. package test;
  2. /**
  3. * Created by kinthon on 17-3-31.
  4. */
  5. public class TestService {
  6. private String name;
  7. public void setName(String name) {
  8. this.name = name;
  9. }
  10. public String getName() {
  11. return name;
  12. }
  13. public void hello()
  14. {
  15. System.out.println("hello "+ getName());
  16. }
  17. }

3,在web/Web-INF目录下新建spring的配置文件applicationContext.xml文件(Web-INF右击->New->XML configuration file->Spring config),然后配置内容如下

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5. <bean class="test.TestService" id="testService">
  6. <property name="name" value="spring"></property>
  7. </bean>
  8. </beans>

4,在前面的步骤我们已经新建了java类,同时建了bean,接下来我们就是要试试能否通过引用到这个新建的bean.在test包下面我们再建一个文件 test.java,代码如下

[java] view plain copy
  1. package test;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.FileSystemXmlApplicationContext;
  4. /**
  5. * Created by kinthon on 17-3-31.
  6. */
  7. public class Test {
  8. public static void main(String[] args)
  9. {
  10. ApplicationContext ac = new FileSystemXmlApplicationContext("web/WEB-INF/applicationContext.xml");
  11. TestService ts = (TestService)ac.getBean("testService");
  12. ts.hello();
  13. }
  14. }

接下来就是直接测试Test的main函数,操作是右击编辑区,点击Run "Test.main()",正常的话,应该会出现如下效果

三,Hibernate引入与测试

1) 使用Hibernate我们还要额外引入一些依赖,要引入的包有mysql-connector-java-5.1.26还有commons-dbcp2-2.1和commons-pool2-2.4.1;引入这些包我们可以直接使用IDEA的maven功能下载依赖包,然后直接引入;操作为 File->project Structure->Libraries->点击右侧的加号->From maven; 然后输入对应的包名就可以了;对于这两个包我们可以直接打勾Download to,它们没有过多的依赖包下载,截图如下

2) 在src下创建bean包,然后建立持久化类.这里主要是使用了IDEA的persistence下的OR映射功能;

a) 建立数据库, 点击 IDEA最左下角的一个按钮,会弹出一些选项,然后选择Database,点击加号,选择Data Source -> MySQL, 进入后进行数据库的信息配置,以你自己的机器为主; 相关截图如下

b) 为了可以使用Persistence的sessionFactory进行生成持久化映射,需要先配置applicationContext.xml,让其接管Hibernate的配置;操作如下,在applicationContext.xml里面加入如下的内容(password的值根据自己的数据库进行配置)如果没有进行这一步的话,在Persistence界面是不会出现sessionFactory的。

[html] view plain copy
  1. <!-- data connection -->
  2. <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
  3. <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
  4. <property name="url" value="jdbc:mysql://localhost:3306/TESTDB"></property>
  5. <property name="username" value="root"/>
  6. <property name="password" value="××××"/>
  7. </bean>
  8. <!-- session factory -->
  9. <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
  10. <property name="dataSource" ref="dataSource"></property>
  11. <property name="hibernateProperties">
  12. <props>
  13. <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
  14. <prop key="hibernate.show_sql">true</prop>
  15. <prop key="hibernate.connection.url">jdbc:mysql://localhost:3306/TESTDB</prop>
  16. <prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>
  17. </props>
  18. </property>
  19. </bean>

c) 进行持久化类生成,点击左下角的按钮, 选择Persistence; 在Persistence界面,选择下拉,右击sessionFactory->Generate Persistence Mapping; 相关截图如下;如果没有出现sessionFactory的话,可以下载查看下:http://download.csdn.net/download/sysushui/9872596

c) 在Generate Persistence Mapping界面, "Choose Data Source"选择我们一开始新建的TESTDB数据库, "Package"选择bean; "Database Schema Mapping"点击我们 建立的addresslist表, 相关截图如下

d)建Service层,在src目录下建service包,在service包下新建一个接口类Address.java和实现类AddressImpl,代码如下

Address.java

[java] view plain copy
  1. package Service;
  2. import bean.Addresslist;
  3. /**
  4. * Created by kinthon on 17-3-31.
  5. */
  6. public interface Address {
  7. public void add(Addresslist al);
  8. }

AddressImpl.java

[java] view plain copy
  1. package Service;
  2. import bean.Addresslist;
  3. import org.hibernate.Session;
  4. import org.hibernate.SessionFactory;
  5. import org.hibernate.Transaction;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.beans.factory.annotation.Qualifier;
  8. /**
  9. * Created by kinthon on 17-3-31.
  10. */
  11. public class AddressImpl implements Address {
  12. @Qualifier("sessionFactory")
  13. @Autowired
  14. private SessionFactory sessionFactory;
  15. @Override
  16. public void add(Addresslist al) {
  17. Session s = sessionFactory.openSession();
  18. Transaction tx= s.beginTransaction();
  19. s.save(al);
  20. tx.commit();
  21. }
  22. public void setSessionFactory(SessionFactory sessionFactory) {
  23. this.sessionFactory = sessionFactory;
  24. }
  25. }

e)让Spring接管Hibernate的配置文件,同时建立address服务的bean;目前applicationContext.xml配置如下

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5. <bean class="test.TestService" id="testService">
  6. <property name="name" value="spring"></property>
  7. </bean>
  8. <!-- data connection -->
  9. <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
  10. <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
  11. <property name="url" value="jdbc:mysql://localhost:3306/TESTDB"></property>
  12. <property name="username" value="root"/>
  13. <property name="password" value="qinkai"/>
  14. </bean>
  15. <!-- session factory -->
  16. <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
  17. <property name="dataSource" ref="dataSource"></property>
  18. <property name="hibernateProperties">
  19. <props>
  20. <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
  21. <prop key="hibernate.show_sql">true</prop>
  22. <prop key="hibernate.connection.url">jdbc:mysql://localhost:3306/TESTDB</prop>
  23. <prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>
  24. </props>
  25. </property>
  26. <property name="mappingLocations">
  27. <list>
  28. <value>classpath:bean/Addresslist.hbm.xml</value>
  29. <value>classpath:bean/Addresslist.hbm.xml</value>
  30. </list>
  31. </property>
  32. <property name="annotatedClasses">
  33. <list>
  34. <value>bean.Addresslist</value>
  35. </list>
  36. </property>
  37. </bean>
  38. <!--hibernate测试加入-->
  39. <bean id="address" class="Service.AddressImpl">
  40. <property name="sessionFactory" ref="sessionFactory"></property>
  41. </bean>
  42. </beans>

f)进行测试,修改test包下的Test.java,代码如下

[java] view plain copy
  1. package test;
  2. import Service.Address;
  3. import Service.AddressImpl;
  4. import bean.Addresslist;
  5. import org.springframework.context.ApplicationContext;
  6. import org.springframework.context.support.FileSystemXmlApplicationContext;
  7. /**
  8. * Created by kinthon on 17-3-31.
  9. */
  10. public class Test {
  11. public static void main(String[] args)
  12. {
  13. ApplicationContext ac = new FileSystemXmlApplicationContext("web/WEB-INF/applicationContext.xml");
  14. Address ail = (AddressImpl)ac.getBean("address");
  15. Addresslist al = new Addresslist();
  16. al.setName("kaka");
  17. al.setPhone("123456123");
  18. ail.add(al);
  19. }
  20. }

右击编辑器,点击"Run Test.main()"进行测试,正常的话,会出现

同时查看MySQL数据库,看看对应的TESTDB下的addresslist下有没有多一条name:kaka, phone:123456123的记录.

四,struts2 引入并测试 .

1) 要引入struts2,要先引入两个依赖,一个是struts2-spring-plugin-2.3.24, spring-web-3.0.5和log4j-1.2.14.jar; 对应前两个我们一样使用IDEA的maven功能进行下载,但是不要直接入我们的lib目录下,因为它会下载比较多的依赖;我们选择手工加入;先如下下载好,"Download to "不要打勾

下载struts2-spring-plugin-2.3.24会附带下载好spring-web-3.0.5; 下载完后查看下下载的目录, 只是查看下下载目录就可以了如下

可以看到struts2-spring-plugin的下载目录在home目录下的.m2(隐藏文件夹,可以按ctrl+h来显示)下, spring-web也是一样,接下来就是直接复制这两个包,放到项目的lib文件下,之后右击一下lib下的刚引入的这两个jar包,"Add as Library"; 对于log4j-1.2.14就相对简单,直接打勾Download to 就可以了.相关截图如下

2) 修改web/WEB-INF/web.xml文件,引入struts2,配置如下

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  5. version="3.1">
  6. <filter>
  7. <filter-name>struts2</filter-name>
  8. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  9. </filter>
  10. <filter-mapping>
  11. <filter-name>struts2</filter-name>
  12. <url-pattern>/*</url-pattern>
  13. </filter-mapping>
  14. <!--struts2测试加入-->
  15. <listener>
  16. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  17. </listener>
  18. <context-param>
  19. <param-name>contextConfigLocation</param-name>
  20. <param-value>WEB-INF/applicationContext.xml</param-value>
  21. </context-param>
  22. </web-app>

3) 建一个action, 在src下加一个action包,然后新建一个AddressAction.java文件,代码如下

[java] view plain copy
  1. package action;
  2. import Service.AddressImpl;
  3. import bean.Addresslist;
  4. import com.opensymphony.xwork2.ActionSupport;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. /**
  7. * Created by kinthon on 17-3-31.
  8. */
  9. public class AddressAction extends ActionSupport {
  10. private String name;
  11. private String phone;
  12. @Autowired
  13. private AddressImpl address;
  14. public void setName(String name) {
  15. this.name = name;
  16. }
  17. public void setPhone(String phone) {
  18. this.phone = phone;
  19. }
  20. public String getName() {
  21. return name;
  22. }
  23. public String getPhone() {
  24. return phone;
  25. }
  26. public String add()
  27. {
  28. Addresslist al = new Addresslist();
  29. al.setName(getName());
  30. al.setPhone(getPhone());
  31. address.add(al);
  32. return SUCCESS;
  33. }
  34. public void setAddress(AddressImpl address) {
  35. this.address = address;
  36. }
  37. }

4) 在web/WEB-INF下的applicationContext.xml下加入一个新的bean,内容如下

[html] view plain copy
  1. <bean id="addressAction" class="action.AddressAction">
  2. <property name="address" ref="address"></property>
  3. </bean>

5) 在src下的struts.xml下进行如下修改,

[html] view plain copy
  1. <span style="font-size: 18px;"><?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
  4. "http://struts.apache.org/dtds/struts-2.3.dtd">
  5. <struts>
  6. <!-- struts的action配置文件 -->
  7. <!-- 将action托管给spring -->
  8. <constant name="struts.objectFactory" value="spring" />
  9. <!-- 所有的action都应该放在对应的package下 -->
  10. <!--action的class属性不再是具体的类,而是spring配置文件配置的bean id-->
  11. <package name="addresslist" namespace="/addresslist" extends="struts-default">
  12. <action name="add" class="addressAction" method="add">
  13. <result name="success">/success.jsp</result>
  14. </action>
  15. </package>
  16. </struts></span>

6) 测试

a) 在web目录下加入index.jsp和success.jsp文件,

index.jsp

[html] view plain copy
  1. <%--
  2. Created by IntelliJ IDEA.
  3. User: kinthon
  4. Date: 17-3-31
  5. Time: 下午1:22
  6. To change this template use File | Settings | File Templates.
  7. --%>
  8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  9. <html>
  10. <head>
  11. <title>$Title$</title>
  12. </head>
  13. <body>
  14. welcome
  15. </body>
  16. </html>

success.jsp

[html] view plain copy
  1. <span style="font-size:18px;"><%--
  2. Created by IntelliJ IDEA.
  3. User: Administrator
  4. Date: 2016/5/17
  5. Time: 17:41
  6. To change this template use File | Settings | File Templates.
  7. --%>
  8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  9. <html>
  10. <head>
  11. <title>$Title$</title>
  12. </head>
  13. <body>
  14. success
  15. </body>
  16. </html></span>

b) 特别注意:引入新的包的话,直接运行的话,可能会有包没有引入成功的问题,可以到File->Project Structure->Artifacts 查看,在右边的最下边如果出现一个fix 按钮的话,就点击,然后点击 add All

c) 如果正常的话,点击运行,相关截图如下,图的最右边的运行按钮,记得將对象从Test切换为Tomcat

成功的话,可以直接在浏览器,输入 http://localhost:8080/addresslist/add?name=ssh&phone=18819453629  要是成功的话,浏览器会显示success,如下

同时MySQL的TESTDB的addresslist会多一条记录name:ssh;phone:18819453629

结语
如上就是使用IDEA2017.1整合SSH的整体教程了,个人新手,正积极学习ing。如果上述有任何问题,可以联系我。

转载于:https://www.cnblogs.com/guodao/p/9702443.html

SSH之IDEA2017整合Struts2+Spring+Hibernate相关推荐

  1. eclipse 环境下整合 struts2+spring+hibernate 开发web应用常见问题及解答

    索引 1. org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned b ...

  2. Spring、Struts2+Spring+Hibernate整合步骤

    所使用的Jar包: Hibernate: Spring(使用MyEclipse自动导入框架功能) Struts2: 注解包和MySql驱动包: 1.配置Hibernate和Spring: <be ...

  3. 【struts2+spring+hibernate】ssh框架整合开发

    SSH框架整合 1 Struts2+Spring+Hibernate导包 Struts2导入jar包: * struts2/apps/struts2-blank.war/WEB-INF/lib/*.j ...

  4. Struts2+Spring+Hibernate的整合

    整体程序结构 1.maven依赖 <!--实现Struts2+Spring+Hibernate的整合 --><dependencies><!--Spring --> ...

  5. Java Web项目源代码|CRM客户关系管理系统项目实战(Struts2+Spring+Hibernate)解析+源代码+教程

    客户关系管理 (CRM) CRM一般指客户关系管理 客户关系管理是指企业为提高核心竞争力,利用相应的信息技术以及互联网技术协调企业与顾客间在销售.营销和服务上的交互,从而提升其管理方式,向客户提供创新 ...

  6. Struts2+Spring+Hibernate 三大框架的合并集成

    这次来看看Struts2+Spring+Hibernate三大框架的整合应用,主要是Spring和Hibernate框架的整合,因为前边已经将Strtus2+Spring整合过了基本一样. 首先看一下 ...

  7. java高级框架应用开发案例教程_Java高级框架应用开发案例教程:struts2+spring+hibernate PDF...

    资源名称:Java高级框架应用开发案例教程:struts2+spring+hibernate PDF 第1章 struts+spring+hibernate概述 1.1 框架概述 1.2 struts ...

  8. Struts2+Spring+Hibernate搭建全解!

    Struts2+Spring+Hibernate是J2EE的最新流行框架.本篇是我搭建这个框架的经验总结,有很多人搭建这个框架总会遇到 大大小小的问题,网上也没有什么行之有效的方案或成体系的介绍,所以 ...

  9. Struts2 + Spring + Hibernate 通用 Service 和 DAO

    我在 Struts2 + Spring + Hibernate  项目开发中总结出了一个Service 和 DAO ,可以用于处理任何的pojo(bean).使用这两个Service 和 DAO 可以 ...

最新文章

  1. 程序设计类课程教学中创造技法的探索
  2. 如何利用报表工具FineReport实现报表列的动态展示
  3. 计算机二本生不学编程还能干什么6,不建议二本考生报考的6个专业,除非真的感兴趣!...
  4. 如何使用selenium webdriver来判断一个网页加载完毕
  5. 数据库:MySQL大批量SQL插入性能优化
  6. 在一个Java版本上运行Eclipse IDE,但在另一个Java版本上运行
  7. 高手如何实践HBase?不容错过的滴滴内部技巧
  8. 02-第二章 基本类型
  9. Windows 服务程序编写
  10. 对应生成树的基本回路_2011秋季学期离散数学语音答疑提纲下(全书考试内容)
  11. 在windows上传一个新的项目到GitHub上
  12. 严把质量关、做好可靠性与环境试验,不做被车压塌的桥!
  13. 图片 title 和 alt区别:
  14. 星际争霸 2 快捷键
  15. 如何用查看wifi密码
  16. Lq93:复原 IP 地址
  17. 更改分辨率时banner图片变形解决方案
  18. 三步实现西门子PLC远程监控
  19. MySQL的备份、恢复
  20. 你对浏览器的兼容性有了解吗?

热门文章

  1. 自学python的书籍逐级推荐-近300本Python书籍到底哪家强,用Python告诉你
  2. 自学python要多久才能学会-怎么自学python,大概要多久?
  3. python语言入门书籍-Python入门书籍有哪些?
  4. python测试开发自学教程-Web开发哪家强?看我用 Python 写一个颜值测试小工具
  5. python有哪些作用-python描述符有什么作用
  6. python专科就业难吗-python好就业吗
  7. python语言入门教程-菜鸟学Python入门教程大盘点|7个多月的心血总结
  8. 不是python中用于开发用户界面的第三方库-Python计算生态习题(50题)
  9. python零基础有用吗-python零基础入门后的尴尬怎么解决?
  10. python开发软件行么-python适合开发桌面软件吗?