1

我有一个正在运行并从网页中获取数据的 Servlet。稍后在一组不同的任务中,我想从标准 Java 类访问这些数据并使用这些数据,我将如何处理?我可以将数据保存在任何地方以供访问吗?

我有这样的代码:

String name = request.getParameter("username");

然后我尝试将其设置为属性并传递它:

getServletContext().setAttribute("com.mycompany.app-param", "name");

然后在下一堂课中,我尝试访问上下文以获取变量,但无论我尝试什么,我都得到了服务器错误 500,或者 null 或 Server = null。我认为它无法正确获取上下文:

value = getServletContext().getAttribute("com.mycompany.app-param");

有谁知道我如何访问之前创建的上下文并获取它的变量?

4

6 回答 6

1

是的,就像在数据库表中一样?甚至是一个文件?

示例代码:

https://www.ibm.com/developerworks/mydeveloperworks/blogs/wasdev/entry/servlet_jdbc_sample1?lang=en

于 2012-07-19T12:53:54.627 回答
1

您可以使用具有一组 getter(将数据获取到 java 类)和 setter(从网页设置数据)的 DTO 并将其维护为全局范围,以便您以后可以使用 Java 类访问它......希望这个有帮助!!!

于 2012-07-19T12:59:22.623 回答
1

你可以用一个 dao 编写一个数据访问层,它将数据保存在数据库中。如果您的要求是仅在会话范围内使用数据,那么您可以将该数据保存在会话中。

于 2012-07-19T13:00:43.223 回答
1

您可以将该数据保存在某个文件中

或者

您可以在 UI 中提供具有所有属性的 Class 并为该类创建一个对象并在之后的那一刻序列化该对象,当您想要该数据时,您可以反序列化该对象。

序列化链接 http://www.tutorialspoint.com/java/java_serialization.htm

于 2012-07-19T13:00:49.060 回答
1

干得好...

public class DummyDTO {
    private String name = null;
    private String age = null;

    // getters and setters
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
} 

public class MyServletClass extends HttpServlet {
    public void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException,
            IOException {
        DummyDTO dummyDTO = new DummyDTO();
        dummyDTO.setName(request.getParameter("name"));
        dummyDTO.setAge(request.getParameter("age"));
        AnotherClass.setValues(dummyDTO);
    }




    public class AnotherClass {

        String name = "";
        String age = "";

        public static void setValues(DummyDTO dummyDTO) {

            name = dummyDTO.getName();
            age = dummyDTO.getAge();
        }

    }   
于 2012-07-19T13:14:22.700 回答
1

请参阅GAE 是否正式支持 getServletContext()?- 在 gae 上,不能保证按照您希望的方式工作(例如传递信息)。

您应该改用 Session 或 Request 范围属性,请参阅此处和此处 帮助入门。您使用哪一个取决于所需的生命周期和已保存属性的可见性(请求 < 会话 < 应用程序)

于 2012-07-19T14:35:43.843 回答