Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jsp:UseBean与Struts标记_Java_Jsp_Struts2_Javabeans - Fatal编程技术网

Java jsp:UseBean与Struts标记

Java jsp:UseBean与Struts标记,java,jsp,struts2,javabeans,Java,Jsp,Struts2,Javabeans,我正在学习Struts2,我还不完全清楚如何以及何时使用标签和Struts标签 我发现一篇文章概述了这些差异,但没有提供任何示例 http://struts.apache.org/development/1.x/struts-taglib/tlddoc/bean/define.html 标记在几个方面不同于,包括: 无条件地在指定的 标识符。 可以使用属性返回的值创建bean 不同bean的getter,包括用 嵌套和/或索引属性名称。 可以创建一个 内容是文本字符串或运行时表达式的结果 由v

我正在学习Struts2,我还不完全清楚如何以及何时使用标签和Struts标签

我发现一篇文章概述了这些差异,但没有提供任何示例

http://struts.apache.org/development/1.x/struts-taglib/tlddoc/bean/define.html
标记在几个方面不同于,包括:

无条件地在指定的 标识符。 可以使用属性返回的值创建bean 不同bean的getter,包括用 嵌套和/或索引属性名称。 可以创建一个 内容是文本字符串或运行时表达式的结果 由value属性指定。 不支持嵌套内容 例如,仅当bean被删除时才执行的标记 实际创建的。 下面是我使用UseBean标记的快速测试代码。谁能给我举个例子,说明我应该如何/为什么或者是否应该在display.jsp中使用Struts标记

谢谢

index.jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>

        <form name="input" action="TestServlet" method="post">
            <input type="text" name="txtFirstName" placeholder="First Name">
            <input type="text" name="txtLastName" placeholder="Last Name">
            <input type="submit" value="Submit">
        </form>
    </body>
    </html>
display.jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>

        <jsp:useBean id="myPersonObj" class="com.website.models.Person" scope="request"></jsp:useBean>

        <p> 
            Full Name : <jsp:getProperty property="firstName" name="myPersonObj"/>
                        <jsp:getProperty property="lastName" name="myPersonObj"/>
        </p>

    </body>
    </html>

因为您实际上是在servlet中创建bean,并将其放入请求属性中,所以您可以替换:

    <jsp:useBean id="myPersonObj" class="com.website.models.Person" scope="request"></jsp:useBean>

    <p> 
        Full Name : <jsp:getProperty property="firstName" name="myPersonObj"/>
                    <jsp:getProperty property="lastName" name="myPersonObj"/>
    </p>
使用EL时:

    <p> 
        Full Name : ${myPersonObj.firstName}
                    ${myPersonObj.lastName}
    </p>
请参见此处的说明,以便:

如果已经在使用servlet处理模型,请不要使用。它只会导致混乱和维护问题,因为它采用的MVC方法与使用servlet时不同。要么是servlet,要么不是两者都有


因为它与servlet不兼容,并且您需要使用servlet来进行任何适当的编码,所以完全过时,因为JB Nizet没有将其放在第一条注释中。

因为您实际上是在servlet中创建bean,并将其放在请求属性中,您可以替换:

    <jsp:useBean id="myPersonObj" class="com.website.models.Person" scope="request"></jsp:useBean>

    <p> 
        Full Name : <jsp:getProperty property="firstName" name="myPersonObj"/>
                    <jsp:getProperty property="lastName" name="myPersonObj"/>
    </p>
使用EL时:

    <p> 
        Full Name : ${myPersonObj.firstName}
                    ${myPersonObj.lastName}
    </p>
请参见此处的说明,以便:

如果已经在使用servlet处理模型,请不要使用。它只会导致混乱和维护问题,因为它采用的MVC方法与使用servlet时不同。要么是servlet,要么不是两者都有


因为它与servlet不兼容,而且您需要使用servlet来进行任何像样的编码,正如JB Nizet在第一条评论中所说的那样,它完全过时了。

您应该使用struts2标记,它们支持OGNL。OGNL有一个上下文和一个作为根对象的值堆栈。因此,您的请求范围对象显示为

<p> 
    Full Name : <s:property value="#request.myPersonObj.firstName"/>&nbsp;
                <s:property value="#request.myPersonObj.lastName"/>
</p>

要更好地理解OGNL概念,请参阅。

您应该使用struts2标记,它们支持OGNL。OGNL有一个上下文和一个作为根对象的值堆栈。因此,您的请求范围对象显示为

<p> 
    Full Name : <s:property value="#request.myPersonObj.firstName"/>&nbsp;
                <s:property value="#request.myPersonObj.lastName"/>
</p>

要更好地理解OGNL概念,请参见。

您的问题被标记为struts2,您的问题是关于struts1标记的,并且您似乎既没有使用struts1也没有使用struts2。首先决定是否要使用Struts。Struts 1已经完全过时了。因此,如果您选择使用struts,请选择struts2版本,并查看struts2文档,而不是struts1文档。请注意,jsp:useBean也完全过时了。学习JSP EL和JSTL。我认为您应该在servlet中创建bean,并将其放在会话属性中,或者将其传递给请求属性中的JSP,这就是servlet代码实际执行的操作!,不要使用任何bean标记。你的问题被标记为struts2,你的问题是关于struts1标记的,而你似乎既没有使用struts1也没有使用struts2。首先决定是否要使用Struts。Struts 1已经完全过时了。因此,如果您选择使用struts,请选择struts2版本,并查看struts2文档,而不是struts1文档。请注意,jsp:useBean也完全过时了。学习JSP EL和JSTL。我认为您应该在servlet中创建bean,并将其放在会话属性中,或者将其传递给请求属性中的JSP,这就是servlet代码实际执行的操作!,并且不使用任何bean标记。