2011-11-19 46 views
0

我是初学者使用JSP并遵循教程。我有一个基本问题。有一个名为NameHandler的简单类,它只有一个名为name的String字段。JSP页面集类的成员如何

的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用户输入字符串时的类。这里name =“name”是什么意思?我试图理解这是如何设置类的名称成员。代码工作正常,所以在哪里以及如何设置类的名称成员?

我也知道我可以使用bean的名称并调用一个类函数,如<%= beanname.classfunction%>。那么哪一个更好?第一种方式或第二种方式?有什么区别。

回答

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()