共用一個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>`
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章