写这篇文章的目的

了解 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. web前端的发展态势 浅识

    以前 作为一个java程序员写的代码主要还是后台的代码,虽然开始的时候前后端都写,但是也是用别人造好的轮子来用,学学html,css,js,jquery,再找一个前端ui框架学学,上手之后我们就可以写 ...

  2. Android--带你一点点封装项目 MVP+BaseActivity+Retrofit+Dagger+RxJava(三)

    1,这一篇博客是和大家一起来封装我们最后的Dagger2,其实之前也写过关于简单的Dagger2,这里是地址,完全没了解的同学可以先去看一下这篇,感谢很多小伙伴一直在耐心的等待这一篇 2,Dagger ...

  3. 我在ubuntu桌面系统下进行WEB开发常用的软件

    公司电脑本来是win系统的,不知道怎么突然中毒了,由于比较讨厌杀毒软件,所以之前都被我卸载掉了,所以我干脆重装了一个ubuntu系统 1.IDE    vscode 各种插件,自带Git,markdo ...

  4. 【解题报告】VijosP1351 棋盘制作

    思路: 1. 矩形:用f[i][j][1]表示右下角为(I,j),最大的,符合条件的矩形的长,用f[i][j][2]表示右下角为(I,j),最大的,符合条件的矩形的高,预设f内所有元素为1 If(a[ ...

  5. 微信开源PHP商城系统一处blind xxe(无需登录,附POC)

    测试版本wemall 3.3 下载地址 http://git.oschina.net/einsqing/wemall/repository/archive?ref=master 需要开源中国的账号 c ...

  6. 1613: [Usaco2007 Jan]Running贝茜的晨练计划

    1613: [Usaco2007 Jan]Running贝茜的晨练计划 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1252  Solved: 609 ...

  7. Lucene实战之初体验

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

  8. JavaScript 动态添加div 绑定点击事件

    1.动态添加div function cDiv(num){ var oDiv=document.createElement("div"); oDiv.className='divs ...

  9. CoreAnimation 视觉效果

    CoreAnimation 视觉效果 CoreAnimation 目录 博客园MakeDown支持不佳,如有需要请进GitHub iPhone手机的视觉效果是十分优秀的,因此作为iOS工程师一定要对其 ...

  10. 学学简单的-------------javaScript基础

    首先知道什么是JavaScript? JavaScript是一种描述性语言,也是一种基于对象和事件驱动的.并具有安全性的脚本语言. 2.JavaScript由三部分组成:①ecmascript ②Bo ...