當我們很躲數據共有一個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>`