1. 程式人生 > >共用一個Servlet提交引數到後臺天坑(form和a標籤)!

共用一個Servlet提交引數到後臺天坑(form和a標籤)!

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