共用一個Servlet提交引數到後臺天坑(form和a標籤)!
阿新 • • 發佈:2019-01-02
當我們很躲資料共有一個Servlet物件時要注意:
request物件有一定的作用範圍(管理範圍)
每個物件管理的範圍一般是form管理的範圍
- 問題:用a標籤提交Servlet的引數在Servlet中獲取不到?a標籤和form標籤提交到後臺的資料都相互訪問不到?
- 原因: form提交和a標籤提交所設的request物件不是一個值 也就是說在form標籤中
request物件呼叫setAttribute();setParamter(); 對於a標籤無效,在a標籤中
request物件呼叫setAttribute();setParamter(); 對於a標籤和form標籤中都訪問不到
因為form的equest物件和a標籤的request物件不同
例如:
<a href="<c:url value='/StudServlet?cmd=query'></c:url>">檢視學生資訊</a><hr/>
<form action="<c:url value='/StudServlet?cmd=save'/>" method="post">
姓名:<input type="text" name="name"/><br/>
年齡:<input type="text" name="age"/><br />
<input type="button" onclick="addBook()" value="新增圖書"><br/>
<div id="div">
</div><br/>
<input type="submit" value="註冊">
</form>
<a href="<c:url value='/StudServlet?cmd=abc'></c:url>">
<input type="text" name="aa" value="aaaaaaaaaa"/><br/>
測試註解</a>
</body>
- 解釋:
通過a標籤的Stuservlet拿到request.getParameter(“name”);是為空的,因為是不同的request物件
而通過form提交的Stuservlet同樣拿不到request.getParameter(“aa”),就連a標籤提交的request.getParameter(“aa”)都是null值,自己都拿不到,所以這是要注意的地方。
- 解決辦法:
1.a標籤改用form提交,自己設定自己的param;自己有自己的作用域
2.提升作用域,在頁面中加入屬性,並設定為session物件所有
<c:set var="st" property="st" value="22222" scope="session"></c:set>`