写这篇文章的目的

了解 JavaWeb 开发的人都知道SSH和SSM框架,前段时间开始接触 JavaWeb 开发,看了几个教学视频后就想上手构建一个小型 Web项目,可在跟着视频敲代码当中,使用 Struts2+Hibernate框架 却不是那么顺利,百度和谷歌都用上,折腾了几天才搞定。究其原因,是因为Struts和Hibernate框架随着版本的升级,部分 API 有了很大的变化,然而网上的教程几乎全都是旧版本的,为了让更多的框架使用新手不被新旧版本的更替和网上的过时教程所坑,同时也当作个人的笔记,所以写下了此文。

使用Struts2和Hibernate框架

使用的开发工具为 Eclipse Java EE IDE for Web Developers Neon.3,struts2版本为 struts-2.5.10.1 ,hibernate版本为 hibernate-release-5.2.9.Final ,Tomcat和Mysql为工具 xampp 最新的整合版本。

Struts2与Hibernate整合

  1. 创建struts2和bibernate用户类库

    不必多说,基本的程序开发操作
  2. 导入struts2与hibernate的jar包

    这里需要引起注意,使用Eclipse不仅需要引入用户类库,还需要在项目属性的 Deployment Assembly 加入项目所用到的框架以及JDBC驱动
  3. 配置web.xml

    加入struts2的过滤器
  4. 创建struts.xml

    配置action
  5. 创建hibernate.cfg.xml

    配置JDBC驱动和数据库连接信息, xampp 整合的为 MariaDB ,尽管它是MySQL的一个分支,但它有它专有的驱动,相应的你需要将 hibernate.connection.driver_class 配置为 org.mariadb.jdbc.Driverhibernate.connection.url 配置为 jdbc:mariadb ,而 hibernate.dialect 仍使用MySQL 的配置就好了。在这个文件里你同时也需要配置 mapping resource 的值为 hbm.xml 即对象关系映射文件的位置

    取巧而不是蛮干

  • 使用 Maven 管理项目的依赖问题
  • 复制修改使用下载的 struts2 解压包内示例的 struts.xml 文件
  • Eclipse可以使用 hibernate tools for eclipse 插件来生成 hbm.xml 文件,它决定了实体类在数据库中生成的表结构
  • Eclipse可以使用 StrutsClipse 插件来获得 struts.xml 的错误提醒
  • 使用 JUnit 测试框架来及时调试代码

    编程中遇到的问题以及解决办法

  • 在使用 JUnitHibernate 框架自带的 SchemaExport 测试创建表结构时,无法在数据库中生成表结构,利用百度和谷歌,自己多次排查,找出原因为 Hibernate 新版本创建数据库连接 SessionAPISchemaExport API 均有所改变。

    旧版本代码

//创建配置对象
Configuration config = new Configuration().configure();
//创建服务注册对象
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
//创建sessionFactory
SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry);
//创建session对象
Session session = sessionFactory.getCurrentSession();
//创建SchemaExport对象来生成表结构
SchemaExport export = new SchemaExport(config);
export.create(true,true);

新版本代码

Configuration config = new Configuration().configure();
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build();
SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry);
Session session = sessionFactory.getCurrentSession();
Metadata metadata = new MetadataSources(serviceRegistry).buildMetadata();
SchemaExport export = new SchemaExport();
export.create(EnumSet.of(TargetType.DATABASE), metadata);
  • 在使用 Struts.xml 文件进行页面调用时,Tomcat 报错

    又是一番排查,原因依旧是新旧版本的更替问题,因为我在 struts.xml action 中采用了*_*通配符调用动态方法,所以需要加入<constant name="struts.enable.DynamicMethodInvocation" value="false" /> 以及 <allowed-methods>允许调用的方法名,多个方法用逗号隔开</allowed-methods> 才能允许动态方法的调用,其实返回的错误信息已经说明了这个问题。

    思索和建议

    初次动手使用框架来进行 JavaWeb 开发,尽管是一个小型的工程,却也花费了我很多时间,中间还有很多没有言说的磕磕绊绊。造成这种情况的原因大概有两点

  • 初次使用框架,相对来说各个组件的配置和功能并不是那么了解的透彻
  • 网上的相关教程大多数是 Copy 一份的,这点使用 百度 搜索体现的尤为明显,谷歌 相对来说较好,但也存在教程过时,不适配更新后的框架,极易误导新手,学习环境并没有像大多数人说的那么友好。真正的大神都在闷声发大财,不会在意这些鸡毛蒜皮的事(逃

    俗话说: 授人以鱼不如授人以渔。当你现在还找不到教你钓鱼的人的时候,你就应该学会 自学钓术。对于编程来说,你需要逐渐试着去看 官方API文档 ,因为 技术革新的速度实在太快 。当你能从搜索引擎得到你想要的答案的时候,其实你已经落在先头部队的后面了,这也是为什么很多人建议去阅读 源码 的原因。


编程这条路还有很长,尽管走的慢,但请不要后退 ————你我共勉

2017/4/7 19:05

Struts2+Hibernate框架探险的更多相关文章

  1. 简单Spring+Struts2+Hibernate框架搭建

    使用Maven+Spring+Struts2+Hibernate整合 pom文件 <project xmlns="http://maven.apache.org/POM/4.0.0&q ...

  2. Spring+Struts2+Hibernate框架整合流程

    一:基本步骤 新建Maven项目,导入相关依赖(推荐) 在WEB-INF的web.xml中进行配置 ————–Hibernate配置 —————- 创建entity包,创建数据库相关实体类 根据实体类 ...

  3. Spring+Struts2+Hibernate框架搭建

    SSH框架版本:Struts-2.3.30  +  Spring-4.2.2  +  Hibernate5.2.2 下图是所需要的Jar包: 下面是项目的结构图: 1.web.xml <?xml ...

  4. ssh (Spring , Struts2 , Hibernate)框架的配置使用

    思维导图(基本配置) 1. 需要引入的包 2 .spring-config.xml 的配置 <!-- 链接数据库 外部配置文件扫入 --> <context:property-ove ...

  5. spring+struts2+hibernate框架搭建(Maven工程)

    搭建Spring 1.porm.xml中添加jar包 <!-- spring3 --> <dependency> <groupId>org.springframew ...

  6. 【Spring】Spring+struts2+Hibernate框架的搭建

    1.搭建过程 首先需要引入Spring.Struts2.Hibernate的开发包,已经数据库的驱动包. UserAction.java文件 package cn.shop.action; impor ...

  7. spring+struts2+hibernate框架依赖pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  8. struts2+hibernate整合-实现登录功能

    最近一直学习struts2+hibernate框架,于是想把两个框架整合到一起,做一个小的登录项目.其他不多说,直接看例子. 1).Struts2 和hibernate的环境配置 包括jar包.web ...

  9. SSH(Struts2+Spring+Hibernate)框架搭建流程<注解的方式创建Bean>

    此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblo ...

随机推荐

  1. MySql Sql 优化技巧分享

    有天发现一个带inner join的sql 执行速度虽然不是很慢(0.1-0.2),但是没有达到理想速度.两个表关联,且关联的字段都是主键,查询的字段是唯一索引. sql如下: SELECT p_it ...

  2. C++_运算符重载

    什么是运算符的重载? 运算符与类结合,产生新的含义. 为什么要引入运算符重载? 作用:为了实现类的多态性(多态是指一个函数名有多种含义) 怎么实现运算符的重载? 方式:类的成员函数 或 友元函数(类外 ...

  3. Appuim源码剖析(Bootstrap)

    Appuim源码剖析(Bootstrap) SkySeraph Jan. 26th 2017 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点:www. ...

  4. NSKeyedArchiver/NSKeyedUnarchiver归档应用(缓存实现)

    NSKeyedUnarchiver : 从二进制流读取对象; NSKeyedArchiver :把对象写到二进制流中去. 要实现对数据模型的归档,需要我们实现NScoding协议,(NScoping) ...

  5. 三种预处理器px2rem

    CSS单位rem 在W3C规范中是这样描述rem的: font size of the root element. 移动端越来越多人使用rem,推荐淘宝开源框架lib-flexible 今天来介绍一下 ...

  6. 【开源.NET】轻量级内容管理框架Grissom.CMS(第三篇解析配置文件和数据以转换成 sql)

    该篇是 Grissom.CMS 框架系列文章的第三篇, 主要介绍框架用到的核心库 EasyJsonToSql, 把标准的配置文件和数据结构解析成可执行的 sql. 该框架能实现自动化增删改查得益于 E ...

  7. java之重定向与转发

    昨天搞了一个问题,关于手机返回按钮的(Android机,ios没有返回键) 在每一步操作都要进过鉴权,如果鉴权不通过就需要跳转到指定jsp页面,再进行link:到app进行登录操作: 然后问题出现了, ...

  8. 基于 socket.io, 简单实现多平台类似你猜我画 socket 数据传输

    一.前言 socket.io 实现了实时双向的基于事件的通讯机制,是基于 webSocket 的封装,但它不仅仅包括 webSocket,还对轮询(Polling)机制以及其它的实时通信方式封装成了通 ...

  9. apicloud下拉刷新

    //下拉 apiready = function () { var param = {}; toDoRequest(); param.loadingImgae = 'widget://image/re ...

  10. Lucene实战之初体验

    前言 最早做非结构化数据搜索时用的还是lucene.net,一直说在学习java的同时把lucene这块搞一搞,这拖了2年多了,终于开始搞这块了. 开发环境 idea2016.lucene6.0.jd ...