由jsp中的request.getParameter联想到的
最近参加了一个JSP的免费培训班,第二次课的时候老师讲了JSP中页面之间参数传递的方法提到了request.getParameter().
因为之前学过ASP和PHP,觉得JSP中request.getParameter()有点不一样,一般传递的方式常用的是GET和POST,但在JSP里面居然不区分两者,于是联想到一个问题:如果同时采用GET和POST提交同一个参数会得到什么结果呢?当时问了下老师,他说form里面的action属性决定传递方式,因此结果应该是采用action指定的方式得到的值。
周末在寝室自己做了个测试,结果出乎意料。
HTML页面代码如下:
<form action=”ac.jsp?var=i_am_from_get” method=”get”><input name=”var” type=”text” />
<input type=”submit” value=”提交查询内容” />
</form>
ac.jsp代码:
<%String m = request.getMethod();
out.println(”传递方式:”+m+”<br/>”);
String method = request.getParameter(”var”);
out.println(”取得的值:”+method);%>
在表单里填写:i_am_from_post
提交后运行结果:
传递方式:GET
取得的值:i_am_from_post
奇怪吧?action指定了GET方式,因此request.getMethod()得到的是GET,但是取得的值却是POST赋予的i_am_from_post。
然后修改HTML代码:
<form action=”ac.jsp?var=i_am_from_get” method=”post”><input name=”var” type=”text” />
<input type=”submit” value=”提交查询内容” />
</form>同样提交得到结果:
传递方式:POST
取得的值:i_am_from_get
action指定了POST方式,因此request.getMethod()得到的是POST,但是取得的值却是POST赋予的i_am_from_get 。
不知道为什么会产生这样的结果,觉得可能会存在安全的问题,所以先记下吧。