共用一个Servlet提交参数到后台天坑(form和a标签)!

来源:互联网 发布:amd优化什么意思 编辑:程序博客网 时间:2024/06/06 05:23

当我们很躲数据共有一个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>`
0 0
原创粉丝点击