1

jsps コードで実行する手順は次のとおりです。1) ログイン ページをサーブレットに投稿します。

2)サーブレットで、いくつかのリクエスト属性を設定し、ディスパッチャーを使用してリクエストを別のリクエストに転送して、Bean プロパティを設定します。

3) Bean はプロパティを設定し、別の URL に転送します。

4) この URL では、リクエストから属性を取得してページに表示します。リクエストから、私nullの属性がリクエストに応じて設定されていないことを示しています。つまり、displayinfo.jsp以下はWelcome Nullを表示します。属性が設定されていないのはなぜですか?

これが私のコードです: Login page:

<form id="login" method="post" action="setBeansAllPropertiesLoginUser.do">  
    <span>UserName:</span><input name="uid" type="text" style="width:250px;" /> 
    <span>Password:</span><input name="pwd" type="password" style="width:250px;"/>
</form>

servlet:

@WebServlet("/setBeansAllPropertiesLoginUser.do")
public class SetBeansAllPropertiesLoginuser extends HttpServlet {

    public SetBeansAllPropertiesLoginuser() {
        super();
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String uid = request.getParameter("uid");
        String pwd = request.getParameter("pwd");

        request.setAttribute("userId", uid);
        request.setAttribute("password", pwd);
        //verify login details
        int authLevel = 1;

        String base = "setBean.jsp";
        /*
        String params = String.format("?userId=%s&password=%s&authLevel=%d"
                , uid, pwd, authLevel);
        */
        String dest = String.format("%s%s"
                        ,base
                        ,params);
        //RequestDispatcher rd = request.getRequestDispatcher(dest);
        RequestDispatcher rd = request.getRequestDispatcher(base);
        rd.forward(request, response);
    }

}

setBean.jsp

<table style="width:100%;">
        <tr>
            <td style="width:25%;height:80%;" valign="top">
                <jsp:include page="navbar.jsp" />
            </td>
            <td style="width:75%;height:80%;">
                <jsp:useBean id="wu" class="com.worldmanager.models.WebUser"
                    scope="request">
                    <jsp:setProperty name="wu" property="*" />
                </jsp:useBean>

                <jsp:forward page="displayinfo.jsp" />
            </td>
        </tr>
    </table>

displayinfo.jsp:

<table style="width:100%;">
        <tr>
            <td style="width:25%;height:80%;" valign="top">
                <jsp:include page="navbar.jsp" />
            </td>
            <td style="width:75%;height:80%;">
                <jsp:useBean id="wu" class="com.worldmanager.models.WebUser" scope="request"/>

                <h1>Welcome 
                    <jsp:getProperty name="wu" property="userId" />
                </h1>
            </td>
        </tr>
    </table>

私のbeanは正しいです。私はそれをテストしました。上記に関連するコードを貼り付けました。完全なコードではありません

4

2 に答える 2

1

変えるだけ

<jsp:getProperty name="wu" property="userId" />

<c:out value="${userId}" />

リクエスト属性から直接読み取る

を使用し<jsp:getProperty>てリクエストしていて、のプロパティを利用可能なスコープにwu.getUserId()設定していませんwu

または

wuのプロパティを明示的に設定する

  <jsp:setProperty name="wu" property="userId"  value="${userId}"/>
  <jsp:setProperty name="wu" property="password"  value="${password}/>

今と同じ方法でアクセスします

  <jsp:getProperty name="wu" property="userId" />
于 2014-07-10T00:13:09.190 に答える