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