Struts2+Hibernate框架探险
写这篇文章的目的
了解 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整合
- 创建struts2和bibernate用户类库
不必多说,基本的程序开发操作 - 导入struts2与hibernate的jar包
这里需要引起注意,使用Eclipse不仅需要引入用户类库,还需要在项目属性的 Deployment Assembly 加入项目所用到的框架以及JDBC驱动 - 配置web.xml
加入struts2的过滤器 - 创建struts.xml
配置action 创建hibernate.cfg.xml
配置JDBC驱动和数据库连接信息, xampp 整合的为 MariaDB ,尽管它是MySQL的一个分支,但它有它专有的驱动,相应的你需要将hibernate.connection.driver_class配置为org.mariadb.jdbc.Driver,hibernate.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 测试框架来及时调试代码
编程中遇到的问题以及解决办法
在使用 JUnit 和 Hibernate 框架自带的 SchemaExport 测试创建表结构时,无法在数据库中生成表结构,利用百度和谷歌,自己多次排查,找出原因为 Hibernate 新版本创建数据库连接 Session 的 API 和 SchemaExport 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框架探险的更多相关文章
- 简单Spring+Struts2+Hibernate框架搭建
使用Maven+Spring+Struts2+Hibernate整合 pom文件 <project xmlns="http://maven.apache.org/POM/4.0.0&q ...
- Spring+Struts2+Hibernate框架整合流程
一:基本步骤 新建Maven项目,导入相关依赖(推荐) 在WEB-INF的web.xml中进行配置 ————–Hibernate配置 —————- 创建entity包,创建数据库相关实体类 根据实体类 ...
- Spring+Struts2+Hibernate框架搭建
SSH框架版本:Struts-2.3.30 + Spring-4.2.2 + Hibernate5.2.2 下图是所需要的Jar包: 下面是项目的结构图: 1.web.xml <?xml ...
- ssh (Spring , Struts2 , Hibernate)框架的配置使用
思维导图(基本配置) 1. 需要引入的包 2 .spring-config.xml 的配置 <!-- 链接数据库 外部配置文件扫入 --> <context:property-ove ...
- spring+struts2+hibernate框架搭建(Maven工程)
搭建Spring 1.porm.xml中添加jar包 <!-- spring3 --> <dependency> <groupId>org.springframew ...
- 【Spring】Spring+struts2+Hibernate框架的搭建
1.搭建过程 首先需要引入Spring.Struts2.Hibernate的开发包,已经数据库的驱动包. UserAction.java文件 package cn.shop.action; impor ...
- spring+struts2+hibernate框架依赖pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- struts2+hibernate整合-实现登录功能
最近一直学习struts2+hibernate框架,于是想把两个框架整合到一起,做一个小的登录项目.其他不多说,直接看例子. 1).Struts2 和hibernate的环境配置 包括jar包.web ...
- SSH(Struts2+Spring+Hibernate)框架搭建流程<注解的方式创建Bean>
此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblo ...
随机推荐
- angular : $eval & $timeout
$digest: function() { var watch, value, last, watchers, length, dirty, ttl = TTL, next, current, tar ...
- FineUIMvc随笔 - 怎样在控件中嵌套 HTML
声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. 用户需求 有网友在<FineUI总群1>问这么一个问题:怎么把 HTML 嵌套在控件中? 这是很多刚学习 FineU ...
- 程序点滴001_Python模拟点阵数字
尝试过很多编程语言,写过不少程序(当然,基本上都是些自娱自乐或给自己用的工具类的小玩意儿),逐渐认识到编写程序是一个不断完善.不断优化的过程——编程首先要有一个想法(目标),围绕这个目标形成最基本的功 ...
- 第十六篇 基于Bootstarp 仿京东多条件筛选插件的开发(展示上)
这几天学习Bootstrap,本来是两年前的用的东西,现在又重新拾起来,又有很多重新的认识,看了Bootstrap的样式偏多,插件现在还没有学习到几个,也有写几个插件自己用的想法.正好工作上也会用到, ...
- FaceNet---深度学习与人脸识别的二次结合
今天我给大家带来一篇来自谷歌的文章,众所周知,谷歌是全世界最有情怀,最讲究技术的公司,比我们天朝的莆田广告商良心多了.还有就是前段时间的最强大脑,莆田广告商的那个小机器,也就忽悠忽悠行外人了,懂的人深 ...
- java 完全二叉树的构建与四种遍历方法
本来就是基础知识,不能丢的太干净,今天竟然花了那么长的时间才写出来,记一下. 有如下的一颗完全二叉树: 先序遍历结果应该为:1 2 4 5 3 6 7 中序遍历结果应该为:4 2 5 ...
- 8个超炫酷的jQuery相册插件欣赏
在网页中,相册应用十分常见,如果你经常逛一些社交网站,那么你应该会注意到很多各式各样的网页相册应用.今天我们要来分享一些最新收集的jQuery相册插件,这些精美的jQuery相册插件可以帮助你快速搭建 ...
- 1653: [Usaco2006 Feb]Backward Digit Sums
1653: [Usaco2006 Feb]Backward Digit Sums Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 285 Solved: ...
- 2017年最新chrome必备插件推荐
1. 上网必备 Speed dial plus新标签页, 直接替换掉chrome自带的毫无新意的新标签页,简洁优美快速,我本人非常喜欢. &lt;img src="https ...
- Metadata Service 一个最简单的应用 - 每天5分钟玩转 OpenStack(164)
实现 instance 定制化,cloud-init(或 cloudbase-init)只是故事的一半,metadata service 则是故事的的另一半.两者的分工是:metadata servi ...