JR 精品文章 - 用jdeveloper开发struts系统入门
AD: jr (at) javaresearch.org


首页 | 动态 | 文章 | FAQ  | 新闻 | 下载 | 代码 | 工作 | 调查 | 术语 | 站点 | 图书 | 论坛 | 帮助 | 全部  

TOP | 交流 | 软件 | 专栏 | 开源 | 译/著 | 源码 | API  | 推荐 | FTP  | 积分 | 统计 | 搜索 | Blog | 我们  
首页 » 研究文集 » 开发框架 搜索标题相关文章 搜索标题相关文章    评论此文章 发表评论     开始监控此文章 开始监控   加入收藏夹  加入收藏夹
用jdeveloper开发struts系统入门
nepalon 原创   更新:2003-12-30 11:02:37  版本: 1.0   

JBuilder也许是现在最为流行的Java开发工具,但它不是免费的,在最新版的JBuilder9中会自动向Borland公司发信息,很容易被查出是否在使用盗版。而struts是现在最流行的web系统架构,JBuilder9自带的竟然还是struts1.0。当然,我个人还是很喜欢Borland公司的产品,但由于种种原因,公司改用了Oracle的JDeveloper。JDeveloper1.0是Oracle公司从Borland买了JBuilder代码改造而成的,听闻着很少。但从JDeveloper3.0开始,JDeveloper开始集成了Oracle的BC4J开发组件(这是一个很强大、易用的开发组件),JDevelpoer开始受到关注。下面,我将介绍一下如何在JDeveloper903上开发struts系统。

一 准备工作
1.1 下载JDeveloper
首先,从Oracle的网站上下载最新版本的JDeveloper9.03.3版本,JDeveloper现在是免费的。
1.2 关于Oc4j
在JDeveloper中还自带了Oracle的一个应用服务器OC4J。解压所下载的压缩包,在JDeveloper目录下的j2ee文件夹就是OC4J所在的目录。如果要手工启动Oc4j,我们可以在在它所在的目录下执行java ?Cjar oc4j.jar。Oc4j的用法和功能在这里不详细介绍。
二 开发struts系统
2.1 运行JDeveloper
在JDeveloper所在目录下的[JDeveloperHome]jdev\bin中的jdevw.exe就是JDeveloper在windows中的运行程序。运行JDeveloper后界面如下图:
 

图1

JDeveloper的struts开发支持struts的最新版本struts1.1,并且提供了struts开发向导。下面,我们将介绍如何用JDeveloper开发struts系统。
2.2 构建struts系统环境
1)    首先,我们要创建一个工作空间(workspace)。在JDeveloper中有一个根工作空间,右击(鼠标右键单击)根工作空间,在弹出菜单中选择“new workspace…”创建一个新的工作空间。
2)    通过File|New…|General|Empty Project创建一个名为strustdemo的空的工程。
3)    在新的工作中通过struts系统向导完成struts开发环境的创建。
在File|New菜单下选择Web-Tier分枝下的struts,在右边的选项中选择“starter application”,单击“OK” 按钮。
 
图2
完成了上面的步骤,一个struts的开发环境就完成了。从JDeveloper中我们可以看到向导为我们的工程添加了web.xml、struts-config.xml和一个proterties文件。
2.3 一个struts的开发实例
这只是一个简单的实例,用户输入网址,将弹出一个JSP页面,在JSP页面中输入用户信息并提交,将在同一页面中显示出信息列表。
2.3.1 编辑struts-config.xml文件
首先,我们在struts-config.xml中添加actionmapping、在JSP中用于接收用户输入信息的DynaActionForm。
右击struts-config.xml,在弹出菜单中选择“Edit Struts Config…”项,将弹出struts-config.xml文件的编辑器。
 

 
图3
从图3可看到,JDevelpoer为我们提供了配置struts-config.xml文件的工具。
1)    先选择Form Beans分支添加一个ActionForm
 
图4

2)    先选择Action Mapping分支,然后添加两个ActionMapping,设置如下
 

图5
 

图6
从图3中我们可以看到,还可以通过这个编辑器来编辑Exception、plugs等struts1.1的新特性。
2.3.2 编辑JSP
在File|New菜单下选择Web Tier分支下JavaServer Page(JSP),在右边的选项中选择JSP Page,创建一个名为testdynaform的JSP。
在JDeveloper中提供了编写struts tag的工具,在View|Component Palette可以打开。
 

图7
只要选中所要编辑的标志,然后把它拖到JSP文件中就完成了一个标志的编写。下面是testdynaform.jsp的代码:
<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<html:html>
<head>
<title>测试动态form</title>
<html:base/>
</head>
<body bgcolor="white">

<html:form action="testdynaform">
<table border="0" width="100%">
  <tr>
    <th align="left">
      用户名
    </th>
    <td align="left">
      <html:text property="userName" size="30" maxlength="30"/>
    </td>
  </tr>
  <tr>
    <th align="left">
      性别
    </th>
    <td align="left">
      <html:text property="sex" size="60" maxlength="60"/>
    </td>
  </tr>
<logic:present name="result" scope="request">
    <logic:iterate id="item" name="result" type="mypackage1.User"> 
        <TR> 
            <TD><bean:write name="item" property="userName"/></TD>
            <TD><bean:write name="item" property="sex"/></TD>
        </TR>
    </logic:iterate> 
</logic:present>
  <tr colspan="1">
    <td>
      <html:submit property="submit" onclick="bCancel=false;">
         提交
      </html:submit>
    </td>
  </tr>
</table>
</html:form>
</body>
</html:html>
2.3.4 编写Action
在File|New菜单下选择Web-Tier分枝下的struts,在右边的选项中选择“Action”,单击“OK” 按钮。把创建的Action命名为TestDynaFormAction。在产生的代码的execute函数中添加如下代码:
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
    {
        DynaActionForm dform = (DynaActionForm)form;
        String name = (String)dform.get("userName");
        String sex = (String)dform.get("sex");
        System.out.println("name = " + name + " , sex" + sex);
        String name1 = name + "1";
        String sex1 = sex + "1";
        dform.set("userName", name1);
        dform.set("sex", sex1);    
        User[] result = { new User(), new User(), new User() };
        result[0].setUserName(name);
        result[0].setSex(sex);
        result[1].setUserName(name1);
        result[1].setSex(sex1);
        result[2].setUserName(name1 + "1");
        result[2].setSex(sex1 + "1");
        request.setAttribute("result", result); //OK
        return mapping.findForward("success");
    }
2.3.5 编写一个bean
通过File|New…|Java Class新建一个名为User的class,这个类是一个JavaBean,用于存放用户信息。右击User.java,在弹出菜单中选择Class Editor。
 

图8
在class编辑器中添加两个成员变量
 

图9
只要添加了成员变量,那么相应的geter和seter方法就会自动生成。
2.3.6 运行程序
右击struts-config.xml下的index,在弹出菜单中选择“Run index”就可运行上面所创建的例子。
 

图10
运行结果为:
 

图11

版权声明   给作者写信
本篇文章对您是否有帮助?  投票:         投票结果:     20       4
作者其它文章: 作者全部文章
游客: Qi Zhai 发表时间: Mon Aug 30 19:18:25 CST 2004
it is very good of this topic!
I have a question, if someone, especially this author, knows about it, please email me! Thanks in advance.

Question:

Use DynaActionForm instead of those specific action form that is extened from struts action form, and when you use code like:

<logic:equal name="logon" property="localaction" scope="request" value="edit">
<font color="#000000" size="2"><strong>编辑员工记录(<font color="ff0000">*</font>为必填)</strong></font>
</logic:equal>

I have the error like this:

500 Internal Server Error
javax.servlet.jsp.JspException: No bean found under attribute key logon
    at org.apache.struts.taglib.logic.CompareTagBase.condition(CompareTagBase.java:221)
    at org.apache.struts.taglib.logic.EqualTag.condition(EqualTag.java:90)
    at org.apache.struts.taglib.logic.ConditionalTagBase.doStartTag(ConditionalTagBase.java:218)
    at _menu._jspService(menu.jsp:12)
    [SRC:/menu.jsp]
    at com.orionserver[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].http.OrionHttpJspPage.service(OrionHttpJspPage.java:57)
    at oracle.jsp.runtimev2.JspPageTable.compileAndServe(JspPageTable.java:569)
    at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:304)
    at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:509)
    at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:413)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)


If you use specific action form, it is OK, but use DynaActionForm, I got this. The name attribute value is the name of the form bean in Struts Config.xml

you can call me at 0755-82122365 if you can help me, thanks in advance.

评论人:laonongfu 发表时间: Mon Apr 14 21:42:22 CST 2008
好东西哦!谢谢!

这个文章共有 2 条评论
主题: 不要把事务控制放在Http请求开始的地方 上一篇文章
返回文章列表 返回〔开发框架〕
下一篇文章 主题: 用Spring2.5进行单元测试


文字广告链接
        自主、快速定制基于JAVA的B/S业务系统          重量级企业在线自定义WEB报表平台
        Excel制表、零代码发布、打印、图表结合——快逸报表,免费、稳定、功能强大的java工具
        技术圈: 关于Java、dotNet、PHP、Ruby、奇客、Web2.0等更多资讯博客精选文章

关于 JR  |  版权声明  |  联系我们 

©2002-2006 JR 版权所有 沪ICP备05019622号