我是初学者,正在使用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;的类函数。哪一个更好?第一种方式或第二种方式?有什么不同。
答案 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()