jsp中判断页面是刷新进入还是按钮点击进入
我写了个简单的页面,里面有个form处理方法是jsp页面自己,在处理时需要判断出页面时通过form点击进来的,而不是打开的新页面和刷新.代码如下:
文件名 test.jsp
<html> <head> </head>
<body>
<form id= "form1 " name= "form1 " method= "post " action= "test.jsp ">
<input type= "submit " name= "Submit " onclick= " " value= "确认 " />
</form>
<%
out.println(request.getMethod());
if(request.getMethod().equals( "POST "))
{
out.println( "点击进入 ");
}
%>
</body>
</html>
现在的结果是,如果新打开一个test.jsp,输出即request.getMethod()获得的值为 "GET ".当通过点击 "确定 "按钮进入test.jsp时,request.getMethod()获得的值为 "POST ",但是这时如果刷新页面,request.getMethod()获得的值也为 "POST ".这样就区分不了页面是处理form的,如果才能达到需要的结果? 将 "确定 "的情况区分开来.
------解决方案--------------------if(request.getMethod().equals( "POST "))
{
out.println( "点击进入 ");//处理完毕后一般执行重定向,就不会再次刷新了
}
------解决方案--------------------如楼上所说处理完成后重定向返回,response.sendRedirect( "*.jsp ");这个时候再刷新应该不会有问题了
------解决方案--------------------如楼上所说:点按纽也提交不了了。
叫孟子老大帮你想想办法吧,写个javaScript,不让它刷新什么的。
下班回家。。。
------解决方案--------------------用session对象 的isnew()方法判断用户是否是刷新页面
------解决方案--------------------request.getParameter( "Submit ")==null
------解决方案--------------------对,执行重定向,这个时候再刷新应该不会有问题了
------解决方案--------------------在重定向到test.jsp啊
------解决方案--------------------在form的action里写一个参数,或者在form里面写一个隐藏input(优先推荐),每次页面处理以检查这个参数来判断是否处理form即可。
------解决方案-------------------- <input type= "submit " onclick= "this.form.action=this.form.acton+ '?submit=1 ' ">
加一个参数嘛,在下一组件里如果取得这个参数就说明是点击进入的嘛,这里要注意哦
如果你的from里的action里面已经有了“?”那么上面就要改成
<input type= "submit " onclick= "this.form.action=this.form.acton+ '&submit=1 ' ">
------解决方案--------------------由于是同一页面,不太适合RedirectAferPost
所以,采用令牌比较好,简单实现
A.jsp
session.setAttribute( "token ",new Integer(1));
B.jsp
<html> <head> </head>
<body>
<form id= "form1 " name= "form1 " method= "post " action= "test.jsp ">
<input type= "hidden " name= "token " value= " <%=session.getAttribute( "token ")%> "/>
<input type= "submit " name= "Submit " onclick= " " value= "确认 " />
</form>
<%
out.println(request.getMethod());
if(request.getMethod().equals( "POST "))
{
if(session.getAttribute( "token ").equals(request.getParameter( "token "))){