我有一个运行的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");
有谁知道如何访问先前创建的上下文并获取其变量?
答案 0 :(得分:1)
是的,就像在数据库表中一样?甚至是文件?
示例代码:
https://www.ibm.com/developerworks/mydeveloperworks/blogs/wasdev/entry/servlet_jdbc_sample1?lang=en
答案 1 :(得分:1)
您可以将DTO与一组getter(获取数据到java类)和setter(从Web页面设置数据)一起使用,并将其维护为全局范围,以便以后可以使用Java类访问它。希望这有帮助!!!
答案 2 :(得分:1)
你可以用一个dao编写一个数据访问层,它将数据保存在数据库中。如果您的要求是仅在会话范围内使用数据,那么您可以将该数据保存在会话中。
答案 3 :(得分:1)
您可以将该数据保存在某个文件中
或者
您可以在UI中提供具有所有属性的类,并为该类创建一个对象,并在此之后序列化该对象,此时您希望该数据可以对该对象进行反序列化。
序列化链接 http://www.tutorialspoint.com/java/java_serialization.htm
答案 4 :(得分: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();
}
}
答案 5 :(得分:1)
请参阅Is getServletContext() officially supported in GAE? - 关于gae,它不能保证以您希望的方式工作(例如传递信息)。
您应该使用会话或请求范围属性,请参阅here here和here以帮助您入门。您使用哪一个取决于所保存属性的所需生命周期和可见性(请求<会话<应用程序)