写这篇文章的目的

了解 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. android学习6——canvas的save,restore作用

    先看如下代码 public class SaveRestoreActivity extends Activity { @Override public void onCreate(Bundle sav ...

  2. UITableView多层展开与收起

    规则要求: tableview 有多层,类似于xcode文件目录的层级关系,每一个最开始展示的层姑且称之为根目录吧,并且,每个根目录下的层数不定. 与文件目录类似,每个目录下可以有不同层级的目录同时展 ...

  3. Linux Tomcat安装,Linux配置Tomcat,Linux Tomcat修改内存,Linux tomcat修改端口

    Linux Tomcat安装,Linux配置Tomcat,Linux Tomcat修改内存,Linux tomcat修改端口 >>>>>>>>>& ...

  4. C# TCP多线程服务器示例

    前言 之前一直很少接触多线程这块.这次项目中刚好用到了网络编程TCP这块,做一个服务端,需要使用到多线程,所以记录下过程.希望可以帮到自己的同时能给别人带来一点点收获- 关于TCP的介绍就不多讲,神马 ...

  5. CSS常用字体Unicode 编码

    在 CSS 中设置字体名称,直接写中文是可以的.但是在文件编码(GB2312.UTF-8 等)不匹配时会产生乱码的错误. 为此,在 CSS 直接使用 Unicode 编码来写字体名称可以避免这些错误. ...

  6. HQL查询——查询返回对象类型分析

    关于HQL查询,我们可以结合hibernate的API文档,重点围绕org.hibernate.Query接口,分析其方法,此接口的实例对象是通过通过session.对象的creatQuery(Str ...

  7. 3-14 JS基础知识01

    JavaScript的组成: JS特点:JS是一门 脚本语言:不需要编译编译:把代码转化成计算机所认知的二进制语言.JS是一门弱类型语言:声明变量都用varJS是一种动态语言:认知当前的着这个变量到底 ...

  8. T——SQL基础语句(定义变量,赋值,取值,分支,循环,存储过程)

    T--SQL基础语句 1.定义变量: declare @变量名 数据类型 ; declare @a int ; declare @b  nvarchar(10) ; 2.赋值: 法1:set @变量名 ...

  9. Python中参数是传值,还是传引用?

    在 C/C++ 中,传值和传引用是函数参数传递的两种方式,在Python中参数是如何传递的?回答这个问题前,不如先来看两段代码. 代码段1: def foo(arg): arg = 2 print(a ...

  10. 使用Git将本地仓库与GitHub远程仓库相关联

    这篇文章详细讲解了如何生成SSH,并链接到GitHub,123..... 1.如果你的GitHub里面没有仓库,就自己生成一个,如图所示 2.如果你有自己仓库,想在电脑本地新建一个,你需要将GitHu ...