Java相当于C#的HttpContext.Current.Items.set / get

时间:2014-04-30 13:18:16

标签: c# java httpcontext scoping flash-scope

我正在尝试翻译C#API的功能,而且我已经找到了一些我找不到自信解决方案的代码。

它涉及将数据存储在正确的Web上下文范围内。现在我可以简单地通过制作一个HashMap来修复这个问题,但由于我不知道此时存储的数据的扩展需求,我想尽力去做正确的事情。在我试图找到一个同样的java解决方案时,我遇到了一个我以前不知道的范围,即Flash范围。看起来它和HttpContext.Current.Items一样,但我肯定会对此有第二点意见。我在playframework中发现了flashScope。

此外,HttpContext.Current.Items似乎是以静态方式访问的,而java通常会创建范围类的对象实例,如HttpSession。

我可以静态地将对象存储在作用域词典中,例如下面的C#代码吗? Flash范围是否等同于HttpContext.Current.Items? 我可以在没有Play框架的情况下访问Flash Scope吗?

与往常一样,如果我做出任何错误的假设或其他误解,我也非常感激。

谢谢:)

C#方法

    public void setItem(String itemName, Object item) {

        HttpContext.Current.Items.set(itemName, item);      
    }

2 个答案:

答案 0 :(得分:0)

HttpServletRequest使用setattribute()方法。

答案 1 :(得分:0)

此页面提供了有关该主题的大量有用信息: getDate()

最重要的一行是:

  

HttpContext对象将封装单个的特定细节   HTTP请求。该类的属性包括Request对象   响应对象,Session对象和AllErrors属性   保留当前在当前累积的Exception对象数组   请求。

     

...

     

Current是一个静态属性,它将返回HttpContext对象   对于当前的HTTP请求。您可以使用来自任何对象的Current   请求的逻辑执行线程

getAttribute()中的数据虽然以静态方式访问,但其范围限定为单个请求。换句话说,假设使用javas HttpServletRequest及其方法setAttribute()def wrap_commands_in_shell(commands): return "/bin/bash -c 'set -e; set -o pipefail; {}; wait'".format(';'.join(commands)) job_tasks = ['cd /mnt/batch/tasks/shared/ && git clone https://github.com/cryptobiu/OSPSI.git', 'cd /mnt/batch/tasks/shared/OSPSI && git checkout cloud', 'cd /mnt/batch/tasks/shared/OSPSI && cmake CMake', 'cd /mnt/batch/tasks/shared/OSPSI && mkdir -p assets' ] job_creation_information = batch.models.JobAddParameter(job_id, batch.models.PoolInformation(pool_id=pool_id), job_preparation_task=batch.models.JobPreparationTask( command_line=wrap_commands_in_shell( job_tasks), run_elevated=True, wait_for_success=True ) ) 就足够了,但翻译后的框架应该用于应用程序。