一、创建Web项目,引入jar包

①、Struts2的jar包

asm-7.3.1.jar:提供了字节码的读写的功能,包含了核心的功能,而其他的jar,都是基于这个核心的扩展.

asm-commons-7.3.1.jar:提供了基于事件的表现形式。

asm-tree-7.3.1.jar:提供了基于对象的表现形式。

commons-fileupload-1.4.jar:文件上传组件,2.1.6版本后需要加入此文件

commons-io-2.6.jar:传文件依赖的jar包

commons-lang3-3.8.1.jar:对java.lang包的增强

freemarker-2.3.30.jar:Struts 2的UI标签的模板使用FreeMarker编写

javassist-3.20.0-GA.jar:代码生成工具, struts2用它在运行时扩展 Java类

log4j-api-2.12.1.jar:日志

log4j-core-2.12.1.jar:日志

ognl-3.1.28.jar:对象图导航语言(Object Graph Navigation Language),  struts2框架通过其读写对象的属性

struts2-convention-plugin-2.5.25.jar:Struts2的注解开发包

struts2-core-2.5.25.jar:Struts 2框架的核心类库

struts2-json-plugin-2.5.25.jar:Struts2整合Ajax的开发包

struts2-spring-plugin-2.5.25.jar:Struts2整合Spring的开发包

②、Hibernate的jar包

Hibernate必须包(hibernate-release-5.4.23.Final\lib\required)

数据库驱动

使用C3P0连接池(hibernate-release-5.4.23.Final\lib\optional\c3p0)

注意:Struts2和Hibernate都引入了一个相同的jar包(javassist包)。删除一个

③、Spring的jar包

IOC的开发

com.springsource.org.apache.commons.logging-1.1.1.jar

spring-beans-5.2.9.RELEASE.jar

spring-context-5.2.9.RELEASE.jar

spring-core-5.2.9.RELEASE.jar

spring-expression-5.2.9.RELEASE.jar

AOP的开发

com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

spring-aop-5.2.9.RELEASE.jar

spring-aspects-5.2.9.RELEASE.jar

JDBC模板的开发

spring-jdbc-5.2.9.RELEASE.jar

spring-tx-5.2.9.RELEASE.jar (事务管理)

整合web项目的开发

spring-web-5.2.9.RELEASE.jar

整合单元测试的开发

spring-test-5.2.9.RELEASE.jar

整合Hibernate的开发

spring-orm-5.2.9.RELEASE.jar

spring-jdbc-5.2.9.RELEASE.jar

spring-tx-5.2.9.RELEASE.jar (事务管理)

二、引入配置文件

Struts的配置文件

web.xml:Struts2的核心配置

struts2

org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter

struts2

/*

struts.xml:管理Action

/p>

"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"

"http://struts.apache.org/dtds/struts-2.5.dtd">

Hibernate的配置文件

hibernate.cfg.xml

/p>

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

com.microsoft.sqlserver.jdbc.SQLServerDriver

jdbc:sqlserver://localhost:1433;databaseName=HibernateDB;

sa

[email protected]

org.hibernate.dialect.SQLServer2008Dialect

true

true

update

2

thread

org.hibernate.connection.C3P0ConnectionProvider

5

20

120

3000

映射文件(类名.hbm.xml):持久化类必要配置       Hibernate抓取策略

Spring的配置文件

web.xml:Spring的核心监听器

contextConfigLocation

classpath:applicationContext.xml

org.springframework.web.context.ContextLoaderListener

applicationContext.xml:Spring的核心配置(主要用于管理Bean,整合Struts2和Hibernate)

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">

日志配置文件

三、创建包结构

四、创建相关类

五、编写Url

- 新增客户

六、编写新增页面

客户名称:客户级别 :信息来源 :所属行业 :固定电话 :移动电话 :

七、疏通基盘

①、编写Action

public class CustomerAction extends ActionSupport implements ModelDriven{private Customer customer=newCustomer();

@OverridepublicCustomer getModel() {returncustomer;

}public voidsave() {

System.out.println("Action中save方法执行了");

}

}

②、配置struts.xml

八、在Action访问Service

①、传统方式

WebApplicationContext webApplicationContext =WebApplicationContextUtils.getWebApplicationContext(ServletActionContext.getServletContext());

Object bean= webApplicationContext.getBean("CustomerServiceImpl");

②、Spring整合Struts2方式一:Action由Struts2管理

Ⅰ、引入struts-spring-plugin.jar

Ⅱ、在struts.xml中设置常量struts.objectFactory

开启此常量会使得struts.objectFactory.spring.autowire=name常量有效,此常量(struts.objectFactory.spring.autowire)主要将Service按照名称(是指applicationContext.xml中bean标签中id)自动注入到Action中

Ⅲ、配置applicationContext.xml,将CustomerServiceImpl交给Spring管理

Ⅳ、编写Action

public class CustomerAction extends ActionSupport implements ModelDriven{private Customer customer=newCustomer();

@OverridepublicCustomer getModel() {returncustomer;

}//属性注入

privateCustomerService customerService;public voidsetCustomerService(CustomerService customerService) {this.customerService =customerService;

}publicString save() {

System.out.println("Action中save方法执行了");

customerService.save(customer);returnNONE;

}

}

③、Spring整合Struts2方式一:Action由Spring管理

Ⅰ、引入struts-spring-plugin.jar

Ⅱ、将Action交给Spring管理,并注入Service

注意:配置Action为多例(scope="prototype")

Ⅲ、配置struts.xml的Action,action标签中class=“”的值为上面Spring的bean标签中的id的值

九、Service访问Dao

①、将Dao交给Spring管理

②、Dao注入到Service中

public class CustomerServiceImpl implementsCustomerService {//属性注入

privateCustomerDao customerDao;public voidsetCustomerDao(CustomerDao customerDao) {this.customerDao =customerDao;

}

@Overridepublic voidsave(Customer customer) {

System.out.println("CustomerServiceImpl的save方法执行了");

customerDao.save(customer);

}

}

十、Dao方法Hibernate

①、创建持久化类

Ⅰ、创建类

public classCustomer {privateLong cust_id;privateString cust_name;privateString cust_source;privateString cust_industry;privateString cust_level;privateString cust_phone;privateString cust_mobile;

}

Ⅱ、映射文件

Ⅲ、hibernate.cfg.xml添加映射

②、Spring整合Hibernate(需要引入spring-orm-5.2.9.RELEASE.jar)

Ⅰ、在Spring的配置文件中,加载Hibernate的配置文件

Ⅱ、DAO继承HibernateDaoSupport,Spring提供了一个Hibernate的模板类简化Hibernate开发

1、HibernateDaoSupport中由sessionfactory属性,可用于属性注入,并且在设置sessionFactory时,会创建Hibernate的模板类(hibernateTemplate)

public final voidsetSessionFactory(SessionFactory sessionFactory) {if (this.hibernateTemplate == null || sessionFactory != this.hibernateTemplate.getSessionFactory()) {this.hibernateTemplate =createHibernateTemplate(sessionFactory);

}

}

2、编写Dao

public class CustomerDaoImpl extends HibernateDaoSupport implementsCustomerDao {

@Overridepublic voidsave(Customer customer) {

System.out.println("CustomerDaoImpl的save方法执行了");this.getHibernateTemplate().save(customer);

}

}

3、在Dao中注入sessionfactory

测试抛出异常:Turn your Session into FlushMode.COMMIT/AUTO or remove ‘readOnly‘ marker from transaction definition.

3.1、解决方案:配置Spring的事务管理

3.1.1、配置事务管理器

3.1.2、开启事务注解

3.1.3、在Service上使用事务注解

@Transactionalpublic class CustomerServiceImpl implements CustomerService {

原文:https://www.cnblogs.com/WarBlog/p/14140346.html

java基盘JavaScript_JavaWeb学习:SSH整合(无障碍整合)相关推荐

  1. java ee ssh三大框架知识点_详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)...

    详解JAVAEE--SSH三大框架整合(spring+struts2+hibernate) 发布时间:2020-09-17 13:34:05 来源:脚本之家 阅读:64 作者:kent鹏 一.整合原理 ...

  2. Java菜鸟到大牛学习路线培训视频

    百度网盘下载 这是一套java菜鸟到大牛学习路线培训教程,由工作了10年的资深Java架构师整理.主要分5个阶段:Java程序员->Java初级软件工程师->Java中级软件工程师-> ...

  3. python爬虫架构师之路_一位资深 架构师大牛给予Java技术提升的学习路线建议

    一位资深 架构师大牛给予Java技术提升的学习路线建议 对于工作多年的程序员而言,日后的职业发展无非是继续专精技术.转型管理和晋升架构师三种选择. 架构师在一家公司有多重要.优秀架构师需要具备怎样的素 ...

  4. java 与大数据学习较好的网站

    C# C#中 Thread,Task,Async/Await,IAsyncResult 的那些事儿! https://www.cnblogs.com/doforfuture/p/6293926.htm ...

  5. 从阿里社招面试,看“野生”Java程序员的学习道路

    引言 很尴尬的是,这个类型的文章其实之前笔者就写过,原文章里,笔者自称LZ(也就是楼主,有人说是老子的简写,笔者只想说,这位同学你站出来,保证不打死你,-_-),原文章名称叫做<回答阿里社招面试 ...

  6. Java菜鸟到大牛学习路线培训教程

    这是一套Java菜鸟到大牛学习路线培训教程,由工作了10年的资深Java架构师整理.主要分5个阶段:Java程序员->Java初级软件工程师->Java中级软件工程师->Java高级 ...

  7. java培训分享:java培训架构师学习线路图

    本期java教程分享主要是讲解关于java培训架构师方面的内容,主要针对java架构师的学习线路图进行一个知识点的概括,下面来看看学习java架构师都需要了解哪些内容吧. java培训分享:java培 ...

  8. 零基础java培训如何规划学习路线

    学习java的同学越来越多,很多小伙伴都想知道零基础如何学习java?如何安排学习路线,零基础java培训如何规划学习路线?那么针对以上问题,今天小编特意分享这篇Java学习指南,希望对那些想学Jav ...

  9. scala语言的底层是java实现的_Scala学习笔记一(与Java、Jvm的关系以及程序执行流程分析)...

    一.Scala语言与Java.Jvm的关系分析 Scala语言是马丁奥德斯基接触Java语言后,针对Java语言的特点,将函数式编程语言的特点融合到Java中,由此发明的.Scala语言和Java语言 ...

最新文章

  1. 新的UWP和Win32应用程序分发模型
  2. linux gdal安装错误,CentOS8下安装GDAL最新版|rgdal安装失败解决方案
  3. 【MFC】状态栏随对话框的改变而改变
  4. chrome扩展之3:一步步跟我学开发一个表单填写扩展
  5. java中JShell脚本工具、常量优化、集成开发环境IDEA
  6. (王道408考研操作系统)第四章文件管理-第一节1:文件管理初识
  7. python 重复执行任务_使用Python自动执行数字艺术家的重复任务
  8. matlab深度学习之LSTM预测
  9. TCP/UDP压力测试工具
  10. 普通用户添加systemctl 自定义服务的开机启动项
  11. 2021届西农计算机复试工作方案(学院)
  12. 【北亚数据恢复】zfs文件系统的服务器误删除的数据恢复
  13. 不平衡电网电压下虚拟同步发电机VSG控制策略-实现不平衡电压下控制三相电流平衡
  14. Gym101635C Macarons
  15. excel表显示为数字但是却无法进行数值运算
  16. python openpyxl操作Excel表格
  17. 2022年度总结 - 明月醉窗台
  18. iframe 接班人-微前端框架 qiankun 在中后台系统实践
  19. 腾讯云搭建Cpolar内网穿透
  20. Google应用商店如何发布app

热门文章

  1. java html 字符串截取字符串长度_Java截取带html标签的字符串,再把标签补全(保证页面显示效果)...
  2. linux mysql互为主从_mysql互为主从配置(双主模型)
  3. 单片机蓝牙初始化_单片机程序那些事
  4. 二次元老婆生成器,想要什么样的老婆就靠自己勤劳的双手啦
  5. 聊聊前后端分离的接口规范
  6. 皮一皮:夏天来了,蚊子叫了...
  7. 赠书:亿级流量峰值没在怕,“缓存”技术来减压!
  8. JetBrains放出Java代码质量检查工具Qodana,不了解一下?
  9. 赠书:京东当当新书榜TOP1的“算法小抄”!
  10. Redisson 是如何实现分布式锁的?