从Jsp访问bean

时间:2013-05-18 11:33:33

标签: jsp servlets javabeans

我在这个论坛上搜索过但没有得到合适的解决方案。如果错误地认为这个是重复的那么抱歉。

来问题...... 我正在使用像这样的servlet设置我的一个HTML中的值 index.html的代码

<FORM METHOD="POST" ACTION="user">
What's your name? <INPUT TYPE="TEXT" NAME="username" SIZE=20>`

servlet的代码

package test;
  ......
UserBean ub = new UserBean();
String name = request.getParameter("username");
ub.setFirstName(name);
request.setAttribute("user",ub);
RequestDispatcher rd=request.getRequestDispatcher("/getJsp.jsp");
rd.forward(request,response);

servlet和bean都放在名为test的包中。

UserBean的代码:

private String firstName;

public String getFirstName() {
    return firstName;
}

public void setFirstName(String firstName) {
    this.firstName = firstName;
    System.out.println(firstName);
}

从bean中我可以在服务器控制台上打印正确的name值。 在设置servlet中的值之后,我试图从JSP中获取名为getJsp.jsp的bean值

getJsp.jsp

<table>
   <jsp:useBean id="user" type="test.UserBean" class="test.UserBean" scope="request" >   
    <tr>
       <td>  Id : </td>
       <td> <jsp:getProperty name="user" property="firstName"/></td>
   </tr>
   </jsp:useBean>
</table>

从JSP访问bean属性时,我收到以下错误:

  

org.apache.jasper.JasperException:/getJsp.jsp(line:10,column:1)useBean类属性UserBean的值无效。

我无法理解此错误代码中的问题。 请帮帮我。

谢谢。

1 个答案:

答案 0 :(得分:4)

鉴于错误消息,似乎JSP的实际代码使用class="UserBean"而不是class="test.UserBean"

但更重要的是,在搜索答案时你没有发现任何东西的原因是你正在实现你的JSP,就像在JSP领域中没有任何改变超过10年。 jsp:useBean和其他jsp:xxx标记已完全过时。学习如何使用JSP EL和JSTL,并通过

替换JSP的代码
<table>
    <tr>
       <td>  Id : </td>
       <td><c:out value="${user.firstName}"/></td>
   </tr>
</table>

这将具有转义用户名中的HTML特殊字符的额外优势。