当我们很躲数据共有一个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>`