<jsp:setproperty>与直接设置值之间的差异

时间:2016-08-19 04:01:46

标签: jsp jsp-tags

我正在尝试研究'jsp:useBean'并发现'jsp:setProperty'和'jsp:getProperty'与useBean一起使用。 我怀疑的是,当我们可以使用bean id直接调用setter和getter方法时,为什么我们需要这些动作标记。?

我做了一个样本来测试它。

豆:

package test.usebean.bean;

public class UseBeanTarget {

    @Override
    public String toString() {
        return "UseBeanTarget [userName=" + userName + ", password=" + password
                + "]";
    }


    private String userName;
    private String password;
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }


    public String displayName(){
        return userName;
    }

}

JSP:

<jsp:useBean id="targetBean" class="test.usebean.bean.UseBeanTarget"></jsp:useBean>
<jsp:setProperty property="userName" name="targetBean" value="Renjith"/>
<jsp:setProperty property="password" name="targetBean" value="ren@1234"/>

<h2>
Set using setProperty
<br />
<%= targetBean %>
</h2>
<hr />
<% 
targetBean.setUserName("Renjith_Direct");
targetBean.setPassword("ren$1234");
%>
<h2>
After setting the properties directly
<br />
<%= targetBean.getUserName() %>
<br />
<%= targetBean.getPassword() %>
</h2>

我观察到的是两者都有相同的目的。

结果:

Set using setProperty 

UseBeanTarget [userName=Renjith, password=ren@1234]

After setting the properties directly 

Renjith_Direct 
ren$1234

1 个答案:

答案 0 :(得分:2)

是的,两种方法都可以正常工作,但通常在JSP文件中使用java代码是不受欢迎的。使用JSP标记而不是使用带有<% %>标记的Java代码,可以保留JSP文件的XML格式,并使代码更具可读性。