用Idea 开发一个简单的Struts2+Maven+Hibernate 项目的流程

本文整理了用Idea Intellij 开发一个综合运用Strut 2, Maven 和Hibernate 项目的流程,并在步骤中对比了此项目技术相对于Servlet、手动添加Jar 和JDBC 的优势,还记录了一些可能出现问题的坑,最后总结项目收到请求后的执行过程。

源码地址 (CSDN 下载需要积分,欢迎支持):http://download.csdn.net/download/rock154/10261449

或者 https://pan.baidu.com/s/1hueXfKg

1)File - New - Project... - Maven - Create from archetype (勾选上) - webapp - Next。如下图:


2)填写GroupId 和 ArtifactId,一路Next(其间可修改项目名称等),直到Finish,需等待Idea Run "Import change"。

3)分别配置Maven 的pom.xml,Tomcat 的web.xml,Struts 2 的struts.xml,Hibernate 的hibernate.cfg.xml。如下图:


a) pom.xml: 添加依赖(dependencies, 可在http://mvnrepository.com 查询) struts, servlet, json, fast json (或 Gson), hibernate, mysql-connector. 有了Maven 此配置之后,就不用手动添加相关Jar 包了。此处有坑:Idea 不自动编译发布java 文件夹内的资源文件,在pom 配置中的build 标签内添加以下代码填上此坑

<resources>
  <resource>
    <directory>src/main/java</directory>
    <includes>
      <include>**/*.xml</include>
    </includes>
  </resource>
</resources>

b) web.xml: 添加struts2 核心过滤器 filter,也可设置主页等 (welcome-file-list)。此处有坑:Idea 自动生成的web.xml 好象有问题,简单粗暴的方法是直接用一个新的可用web.xml 替换。

c) struts.xml: 配置package 内 default-action-ref 和action, 当然这些可以晚点再做。struts.xml(作为独立出来的控制层,降低耦合) 和Action(业务层) 共同代替了Servlet。Struts 2 框架代替Servlet 完成的事:获取参数,设置返回Attribute,调取转发语句 (直接返回字符串就可以定位到相应的界面); 国际化和上传下载操作也可以由框架完成。

d) idea 没有自动将java 文件夹标识为资源文件,在此文件夹上右键 - "mark directory as Source Root" 即可。

e) hibernate.cfg.xml: 一次配好,多次复用。菜单View - Tool Windows - Database (左下角有一个快捷窗口按钮,也可打开Database)导入此文件,测试连接,成功的话有提示"Successful"。如下图:


4)配置Tomcat:菜单Run - Edit configurations - 左侧栏Defaults - Tomcat Server - Local, 设置Application Server 和Open browser,Apply,如下图;然后不用关此对话框,点左上角加号,添加Tomcat Server - Local - 设置Deployment,OK。(更新:貌似Defaults里的tomcat server 不设置也可以?只是Project strutrue 需要设一下SDK)




5)创建HibernateSessionFactory 类;用Hibernate 反向生成Pojo:菜单View  - Tool Windows - Persistence (左下角有一个快捷窗口按钮,也可打开Persistence),空白处右键,Generate Persistence Mapping - By Database Schema,之后如下图。Hibernate 是对JDBC 轻量级的封装,将对象和数据库字段一一对应,减少了创建pojo 和封装数据的工作量。


6)创建DAO 和其实现类。

7)创建Action 类。Action 方法不允许带参数,因为Struts2本质是通过反射实现的。返回值类型为String,因为要匹配结果集。需要从浏览器接收或传递给目标页面的参数,在Action 类中创建private 该参数的变量并生成getter setter 即可,比Servlet 中用request.getParameter() 接收参数或用request.setAttribute() 方便多了。此类中调用DAO 实现类,即对数据库增删改查,取得的数据即可传给目标jsp 页面。

8)创建前端页面等相关资源。用Struts iterator 标签可循环取出Action 传递回来的数据,配合EL 表达式将数据填到相应位置。
struts2 标签<>里面不能使用el表达式${} (但可放在开始和结束标签之间), 只可以使用ongl表达式%{}; 
EL表达式可以直接输出内容,但是ONGL不行,它是与STRUTS的标签相结合使用的。


简单总结项目运行过程:浏览器发出请求 - Tomcat web.xml 过滤 - struts.xml 匹配action - action 接收参数并传数据到struts.xml 结果集(result) 指定的jsp 页面。

小功告成!


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值