【发布时间】:2009-06-03 20:10:15
【问题描述】:
我一直想知道为什么 Servlet API 中没有 removeParameters() 方法。 这种设计背后的动机是什么? 这是一个场景:我在不得不使用的专有 MVC 框架中面临挑战。这个框架使用一个控制器 Servlet,它在它的 post 方法中托管一个算法:
doPost() {
//create instance of action - just like struts action
action.init
action.preexecution
if(redirection state is not set)
action.process
action.postprocess
action.finish
}
我可以跳过任何特定操作的唯一方法是设置重定向 URL。控制器 Servlet 是最终的。现在,当我从动作的预执行方法中执行 requestdispatcher.forward 时,控制器将继续执行其余的方法,而不是跳过其余的方法。我无法更改此行为,也无法设置重定向,因为我需要进行转发。只要我不将请求转发到相同的操作,它就可以正常工作。当一个请求转发到同一个action时,http参数都是一样的。这将使它进入一个永无止境的循环。因此,我不得不添加额外的参数,表明这是一个重复请求,应该区别对待。 不确定我的问题是否有意义,但认为这是一个发布相同问题的好论坛。
【问题讨论】:
-
有一种情况我希望有一个 removeParameter 选择。有时我想获取一个密码参数,对其进行哈希处理,然后立即隐藏/删除/销毁对原始密码的任何引用,以免我不小心记录它或以后暴露它。我不知道有什么办法。