[英]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");
顯然也要更改form
的input
參數名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.