如何使用sendRedirect或session或forward来刷新我的网页只有一次?

时间:2016-08-01 13:41:58

标签: java spring jsp

现在在我的页面中我有一个参数调用personid,如果访问者输入了url之类的话 :http://helloworld.com?personid=123,我将返回人员信息,人员是123.我不知道这个人是否真实。所以我决定当这个人第一次访问该页面时,我会使用sendRedirect然后再联系其他人参数。但现在这种方式是错误的。我可以使用会话或其他方式只刷新一次页面吗?

    <%
 String personid = request.getParameter("personid ");
String vpersonid= request.getParameter("vpersonid");
 if (vpersonid== null) {
  String url="http://myserver/distinguishusrtoken.do?redirect_uri=http://helloworld.com/index.jsp?personid=123&personid ="+personid ;   
  response.sendRedirect(url);
} 
%>

当用户访问网络http://helloworld.com?personid=123时,最终网址为http://helloworld.com?personid=123&ppersonid=123;但如果有人看到关键字并直接输入网址http://helloworld.com?personid=123&ppersonid=123,则认为它是假网址,但我什么都做不了。如何只重定向一次自我页面?我尝试使用会话,但这是一个无限循环?

    <%
  String personid = request.getParameter("personid ");
 String vpersonid = request.getParameter("vpersonid "); 
 if(response.getHeader("personid")==null||!personid.equals(response.getHeader("personid"))){
String url="http://myserver/distinguishusrtoken.do?redirect_uri=http://helloworld.com/index.jsp?personid=123&personid ="+personid ; 
 vpersonid =personid ;
 response.setHeader("personid ", personid );
response.sendRedirect(url);  
} 
%>

1 个答案:

答案 0 :(得分:1)

每当你提出这种情况时,我都会建议你重新考虑一下架构和/或方法。例如,对于您当前的问题,我建议您展望过滤器。它将允许您保持servlet和JPS不受特定任务的影响。我不打算在这里发布任何代码,因为这个问题有点笼统,我宁愿建议您查看一些Internet中的过滤器示例。例如here

顺便说一句,您在标题中添加了标记spring,因此我可以假设您在应用程序中使用了Spring Framework。如果确实如此,框架可以承担很多事情,因此您不需要手动提取请求参数。