现在在我的页面中我有一个参数调用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);
}
%>
答案 0 :(得分:1)
每当你提出这种情况时,我都会建议你重新考虑一下架构和/或方法。例如,对于您当前的问题,我建议您展望过滤器。它将允许您保持servlet和JPS不受特定任务的影响。我不打算在这里发布任何代码,因为这个问题有点笼统,我宁愿建议您查看一些Internet中的过滤器示例。例如here。
顺便说一句,您在标题中添加了标记spring
,因此我可以假设您在应用程序中使用了Spring Framework。如果确实如此,框架可以承担很多事情,因此您不需要手动提取请求参数。