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 ...
随机推荐
- 关于rem的使用和less编译工具考拉
前提: 1.使用rem的前提是首先要设置好页面的根节点的大小: <script> (function(){ var html = document.documentElement; var ...
- Ognl值栈对象及struts标签
用户每次访问struts的action,都会创建一个Action对象.值栈对象.ActionContext对象:然后把Action对象放入值栈中: 最后再把值栈对象放入request中,传入jsp页面 ...
- 【转】jqGrid学习之参数
jqGrid参数 名称 类型 描述 默认值 可修改 url string 获取数据的地址 datatype string 从服务器端返回的数据类型,默认xml.可选类型:xml,local,json, ...
- linux系统端口查看和占用的解决方案
使用netstat命令查看端口占用情况 netstat -tln 查看什么程序占用端口 netstat -tlnp 过滤端口 netstat -tlnp |grep 8080 杀掉进程 kill - ...
- web前端升级之路
web前端菜鸟如何升级到大神(转载) 标签:web前端 随着互联网的发展速度迅猛,web前端工程师越来越火热,想学习 Web前端开发 吗 ? 若想成为web前端工程师需要掌握哪些知识?今天小编总结了成 ...
- Hibernate双向关联的增删改操作的属性
双向关联关系下的增删改操作的属性 1.cascade属性: eg:<set name = "emps" cascade="s ...
- ABP入门系列(13)——Redis缓存用起来
ABP入门系列目录--学习Abp框架之实操演练 源码路径:Github-LearningMpaAbp 1. 引言 创建任务时我们需要指定分配给谁,Demo中我们使用一个下拉列表用来显示当前系统的所有用 ...
- TuSDK 简易使用方法 持有图片对象方式
TuSDK 为涂图照相应用的SDK,打包后文件大小约为5M,缺点为包比较大,且图片清晰度较差一些,优点为直接可以引用滤镜贴纸,方便易用. 使用方法如下: 1.AppDelegate.m 中加 ...
- image图片拉伸
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #1d9421 } p.p2 ...
- 说说MySQL中的Redo log Undo log都在干啥
在数据库系统中,既有存放数据的文件,也有存放日志的文件.日志在内存中也是有缓存Log buffer,也有磁盘文件log file,本文主要描述存放日志的文件. MySQL中的日志文件, ...