Chinaunix首页 | 论坛 | 博客
  • 博客访问: 141103
  • 博文数量: 25
  • 博客积分: 100
  • 博客等级: 中士
  • 技术积分: 310
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-03 18:56
文章分类

全部博文(25)

文章存档

2012年(4)

2011年(21)

分类: 系统运维

2011-05-03 19:31:41

1.struts

现在用的比较多的ssh架构,即spring+struts+hibernate,我用了后两种,struts用的是1代,主要就是处理表单的信息获取、验证、以及信息输出,很多常见的逻辑都不需要自己去设计代码结构,遵循他设定好的思路就行了。最简单的一个例子:
一个表单中有一个文本输入框、一个提交按钮,输入文字,点击按钮,自动跳到另一页,把输入的文字显示出来,有输入则显示输入文字,没输入则显示error。这样一个功能,用struts实现的话有以下几个文件:

hello.jsp
  1. <html:form action="/hello">
  2. <p><html:submit>login</html:submit></p>
  3. </html:form>
success.jsp
  1. <bean:wirte name="result"/>
error.jsp
  1. Error!
struts-config.xml

  1. <struts-config>
  2.   <form-beans>
  3.          <form-bean name="HelloForm" type="HelloForm"/>
  4.   </form-beans>
  5.   
  6. <action-mappings>
  7.         <action path="/hello" type="HelloAction" name="HelloForm">
  8.             <forward name="success" path="/success.jsp"/>
  9.               <forward name="error" path="/error.jsp"/>
  10.         </action>
  11. </action-mappings>
   上面的根据配置文件里面的定义,有个叫HelloForm的类对应路径为/hello的这个动作提交上来的表单,而hello.jsp里面的表单,正式对应了这个动作,同时配置文件还指出,用HelloAction这个类来接收表单并且处理逻辑,最后根据表单的内容决定跳转到哪个页。如果有输入内容,则跳转到/success.jsp,如果没有则跳转到/error.jsp.(顺便说下,感觉j2ee里面有好多东西,传递参数都是通过一个字符串作为参数名的,挺有意思的。和编译器一样,应用服务器也经常要做些字符串解析的事情吧。)
    说到这里,再把上面提到的两个类,HelloForm和HelloAction贴出来:
HelloForm.java
  1. import org.apache.struts.action.ActionForm;

  2. public class LoginForm extends ActionForm {
  3.     private static final long serialVersionUID = 1L;
  4.     private String hello = "";
  5.     public String getHello(){
  6.         return this.hello;
  7. }
  8.     public void setHello(String s) {
  9.         this.hello = s;
  10.     }
  11. }
HelloAction.java
  1. import org.apache.struts.action.*;
  2. import javax.servlet.http.*;

  3. public class HelloAction extends Action {
  4.     public ActionForward execute(ActionMapping actionMapping,
  5.             ActionForm actionForm, HttpServletRequest request,
  6.             HttpServletResponse response) throws Exception {
  7.      
  8.         HelloForm form = (HelloForm) actionForm;
  9.         if("".equal(form.getHello())
  10.       return actionMapping.findForward("error");
  11.         else
  12.             return actionMapping.findForward("success");
  13.       }
  14. }
这样所有必须的文件就都有了,struts是一个独立于tomcat的工具,要让他工作起来,一方面要配置tomact的web.xml,截获http请求,另外一方面就是要把相应的库放在正确的位置,这些可以参考网上的教程。

2.Hibernate
Hibernate是一个专门用于处理数据库操作的工具,配置文件有一个全局的xml配置为文件,数据库里面每个表对应一个POJO也就是一个类,同时也对应一个解释自己以及与其他表之间数据关系的配置文件。
所有的配置文件以及POJO类,都可以用自动化的工具生成,这类工具具有反向工程的能力,开发时先用数据库工具设计好表、关系,再用这些工具连接数据库后根据数据库中的关系,生成配置文件和POJO类,当数据库发生变化时,只需要重新自动生成一次就行了,十分方便,例如eclipse的插件HibernateTool就十分好用。
以上步骤完成后,为了封装逻辑操作,一般都要编写一些DAO(Date Access Object),把常用的操作以方法的形式实现,这样在struts的Action里面只需要调用DAO就可以了,而一般不需要关注更底层的数据结构。
其实DAO和Hibernate没有什么联系,以前不用Hibernate时,DAO中的代码比较复杂,有很多SQL语句,并且要设定和保持和数据库的连接。有了Hibernate只有,DAO中的代码就简化了许多,只要获取Hibernate和数据库建立的session,在这个session中针对POJO对象操作即可,不需要控制数据库连接,也不需要使用SQL语句。当然,在遇到某些特殊问题、或者考虑到效率时,不得不用SQL语句;针对这个问题,Hibernate设计了一种HQL语句,与SQL类似,其优越之处在于可以在语句中使用面向对象的概念,从而在复杂数据关系中,大大简化了查询语句。此外,Hibernate也支持SQL原语查询。
在我的项目里,一般针对单条记录用面向对象操作比较方便,涉及到复杂条件查询多条记录以及排序时,往往用HQL语句比较方便。
阅读(1413) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~