JSP页面如何设置类的成员

时间:2011-11-19 19:36:38

标签: java html forms jsp

我是初学者,正在使用JSP并遵循教程。我有一个基本问题。有一个名为NameHandler的简单类,它只有一个名为name的String字段。

index.jsp看起来像这样:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Entry Form</h1>
        <form name="Name Input Form" action="response.jsp">
            Enter name
            <input type="text" name="name"/>        
            <input type="submit" value="OK"  />
        </form>

    </body>
</html>

和response.jsp看起来像这样:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body><jsp:useBean id="mybean" scope="session" class="org.mypackage.hello.NameHandler" />
        <jsp:setProperty name= "mybean" property= "name"/> 
        <h1>Hello, <jsp:getProperty name="mybean" property="name" />!</h1>
    </body>
</html>

我的问题是:我试图理解当用户输入字符串时如何在NameHandler类中设置名称成员。这里名称=“名字”是什么意思?我试图理解这是如何设置类的名称成员的。代码正常工作,那么这里设置类的名称成员的地点和方式是什么?

我也知道我可以使用bean的名称并调用类似于&lt;%= beanname.classfunction%&gt;的类函数。哪一个更好?第一种方式或第二种方式?有什么不同。

1 个答案:

答案 0 :(得分:1)

标记<jsp:setProperty name= "mybean" property= "name"/>的工作原理如下。首先,它找到名为mybean的bean。它取值为property属性(在您的情况下为name),将其大写并预先添加set,并构造方法名称:

String methodName = "get" + str.substring(0, 1).toUpperCase() + str.toLowerCase(str)

然后调用getMethod(methodName)

如果此调用成功,则使用method.invoke()

调用它