簡體   English   中英

無法在JSP / Servlet中的請求中設置屬性-Java?

[英]unable to set attributes in requests in JSP/servlets - Java?

這是我在jsps代碼中遵循的步驟:1)登錄頁面並將其發布到servlet。

2)在servlet中,我正在設置一些請求屬性,並使用調度程序將請求轉發到另一個以設置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是正確的。 我測試了 上面我粘貼了相關的代碼。 它不是完整的代碼

只是改變

<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" />

根據 ,下面的符號

<jsp:setProperty name="wu" property="*" />

將根據請求參數名稱檢索和設置屬性。 因此,請更改您的請求參數

String uid = request.getParameter("uid");
String pwd = request.getParameter("pwd");

String uid = request.getParameter("userId");
String pwd = request.getParameter("password");

顯然也要更改forminput參數名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM