您的位置:首页 > 编程语言 > Java开发

Struts入门教程 - 第2章 通过Action调用JavaBean

2005-02-13 11:51 459 查看
第2章 通过Action调用JavaBean
添加 logic:notPresent 标签
打开上一节创建的 StrutsDemo1 工程。将hello.jsp改为:
<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>

<html:html locale="true">
<title>Hello World</title>
<html:base />
<body>
<H2> <bean:message key="index.jsp.abc" /></H2>

<logic:notPresent name="stuBean" scope="request">
zhf - Not find stuBean.
</logic:notPresent>

</body>
</html:html>

上面的黑体部分的意思是在 "request" 范围内查找名为 stuBean 的对象,如果找不到的话就显示“zhf - Not find stuBean.”。因为我们并没有向hello.jsp传递任何的request,所以现在访问hello.jsp的话就会显示“zhf - Not find stuBean.”
添加一个叫StudentBean的JavaBean
package hello;

public class StudentBean {
private String name = null;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}
添加logic:present标签
将hello.jsp改为:
<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>

<html:html locale="true">
<title>Hello World</title>
<html:base />
<body>
<H2> <bean:message key="index.jsp.abc" /></H2>

<logic:notPresent name="stuBean" scope="request">
zhf - Not find stuBean.
<logic:forward name="HelloAction" />
</logic:notPresent>

<logic:present name="stuBean" scope="request">
the student name:<bean:write name="stuBean" property="name" />
</logic:present>
</body>
</html:html>
上面的黑体部分的意思是如果在request范围内找到了名为stuBean的对象,就显示它的name属性。当然,由于我们现在还没有把stuBean对象传递给hello.jsp,所以如果访问hello.jsp的话还是会显示“zhf - Not find stuBean.”。

添加一个叫HelloAction的Action
首先要用Eclipse的菜单“Project|Properties|Java Build Path|Libraries”,按“Add Extenal JARs…”按钮,添加“C:/JavaSoft/Tomcat 5.5/common/lib/ servlet-api.jar”和“C:/JavaSoft/Struts/jakarta-struts-1.2.4/lib/ struts.jar”。然后,新建一个类:
package hello;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.*;

public class HelloAction extends Action {
public ActionForward execute(ActionMapping mappingArg, ActionForm formArg,
HttpServletRequest requestArg, HttpServletResponse resqonseAr) throws Exception {
// Having passed the validate
StudentBean jcl = new StudentBean();
jcl.setName("jcl");
requestArg.setAttribute("stuBean", jcl);

return mappingArg.findForward("hello.jsp");
}
}
然后把struts-config.xml改为:
<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

<struts-config>

<global-forwards>
<forward name="hello.jsp" path="/hello.jsp" />
<forward name="HelloAction" path="/HelloAction.do" />
</global-forwards>

<action-mappings>
<!-- path 是访问此Action的路径,为 http://127.0.0.1:9111/strutsDemo1/HelloWorld.do -->
<!-- type 是此 Action 的完整类名 -->
<!-- scope 是此 Action 的存放范围 -->
<!-- validate 指示是否执行验证 -->
<!-- input 是当验证失败时的转发路径 -->
<action
path="/HelloAction"
type="hello.HelloAction"
scope="request"
validate="true"
input="/hello.jsp"
/>
</action-mappings>

<message-resources parameter="resource.app-args" />

</struts-config>
注意标签的顺序是不能颠倒的。重起Struts应用,然后访问“http://127.0.0.1:9111/strutsDemo1/HelloAction.do”,就会看见页面显示“the student name:jcl”。见下图:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: