如何 save/get 对象的当前状态 to/from Servlet 的上下文路径
how to save/get current state of an object to/from the context path of a Servlet
我是 Java Servlet 的新手,对于我目前正在处理的应用程序,(某种没有转发或重定向的代理 类)我想保存一个对象到应用程序的上下文路径。
我知道有类似的问题,但我无法让它工作或者我只是不明白。
我是否必须在 web.xml 中指定上下文路径?
我需要上下文监听器吗?
这是代码片段,但保存的对象中的对象为空;
如何将对象的当前状态保存到上下文路径?
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
if(this.getServletContext().getAttribute("oldConnector")==null){
Connector connection = new Connector();
connection.sendRequest(request);
this.getServletContext().setAttribute("oldConnector", connection);
}else{
((Connector)this.getServletContext().getAttribute("oldConnector")).sendResponse(response);
this.getServletContext().removeAttribute("oldConnector");
}
HttpServletResponse 的响应对象永远不会为 null,因为它是在向您的 servlet 发出第一个请求时由 Web 容器创建的。
因此,未设置属性 "oldConnector",因此您得到的值为 null。
建议:通过删除 if(response==null) 条件设置上下文属性 "oldConnector"。并在另一个 servlet 或同一个 servlet 中检索该属性,然后在需要时将其删除。
下面的代码可以帮助您在评论中查询。
if(getServletContext().getAttribute("oldConnector") == null){
getServletContext().setAttribute("oldConnector", "old value");//dummy value added, replace it with your connection object.
System.out.println("oldConnector attribute has be set.");
}else{
getServletContext().removeAttribute("oldConnector");
System.out.println("oldConnector attribute has be removed");
}
我是 Java Servlet 的新手,对于我目前正在处理的应用程序,(某种没有转发或重定向的代理 类)我想保存一个对象到应用程序的上下文路径。
我知道有类似的问题,但我无法让它工作或者我只是不明白。
我是否必须在 web.xml 中指定上下文路径? 我需要上下文监听器吗?
这是代码片段,但保存的对象中的对象为空; 如何将对象的当前状态保存到上下文路径?
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
if(this.getServletContext().getAttribute("oldConnector")==null){
Connector connection = new Connector();
connection.sendRequest(request);
this.getServletContext().setAttribute("oldConnector", connection);
}else{
((Connector)this.getServletContext().getAttribute("oldConnector")).sendResponse(response);
this.getServletContext().removeAttribute("oldConnector");
}
HttpServletResponse 的响应对象永远不会为 null,因为它是在向您的 servlet 发出第一个请求时由 Web 容器创建的。
因此,未设置属性 "oldConnector",因此您得到的值为 null。
建议:通过删除 if(response==null) 条件设置上下文属性 "oldConnector"。并在另一个 servlet 或同一个 servlet 中检索该属性,然后在需要时将其删除。
下面的代码可以帮助您在评论中查询。
if(getServletContext().getAttribute("oldConnector") == null){
getServletContext().setAttribute("oldConnector", "old value");//dummy value added, replace it with your connection object.
System.out.println("oldConnector attribute has be set.");
}else{
getServletContext().removeAttribute("oldConnector");
System.out.println("oldConnector attribute has be removed");
}