как страница JSP устанавливает член класса - PullRequest
0 голосов
/ 19 ноября 2011

Я новичок в использовании JSP и следую инструкциям.У меня есть основной вопрос.Существует простой класс с именем NameHandler, который имеет только одно поле String с именем name.

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"?Я пытался понять, как это устанавливает имя члена класса.Код работает правильно, поэтому где и как это устанавливает имя члена класса?

Я также знаю, что могу использовать имя компонента и вызывать функцию класса, например <% = beanname.classfunction%>.Так какой из них лучше?Первый путь или второй путь?В чем различия.

1 Ответ

1 голос
/ 19 ноября 2011

Тег <jsp:setProperty name= "mybean" property= "name"/> работает следующим образом.Сначала он находит бин с именем mybean.Он принимает значение атрибута property (name в вашем случае), использует его заглавные буквы и добавляет set, и создает имя метода:

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

Затем он вызываетgetMethod(methodName)

Если этот вызов завершается успешно, он вызывает его, используя method.invoke()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...