Java GWT客户端能否读取调用它的httpservletresponse?
我有一个Greasemonkey脚本,它从一个站点读取文件的内容,并通过HTTPPOST方法将其发送到GWT应用程序中的servlet。一旦内容在我的servlet中可用,我希望将文件内容传递给GWT客户端(即,使用文件内容触发打开应用程序) 为了触发应用程序,我在servlet代码中使用了以下内容:Java GWT客户端能否读取调用它的httpservletresponse?,java,servlets,gwt,cookies,httpresponse,Java,Servlets,Gwt,Cookies,Httpresponse,我有一个Greasemonkey脚本,它从一个站点读取文件的内容,并通过HTTPPOST方法将其发送到GWT应用程序中的servlet。一旦内容在我的servlet中可用,我希望将文件内容传递给GWT客户端(即,使用文件内容触发打开应用程序) 为了触发应用程序,我在servlet代码中使用了以下内容: response.sendRedirect("/path/to/my/application"); 有没有办法读取GWT入口点类的onModuleLoad()中的文件内容?因为我正在将响应从se
response.sendRedirect("/path/to/my/application");
有没有办法读取GWT入口点类的onModuleLoad()中的文件内容?因为我正在将响应从servlet重定向到客户端,所以响应是否会包含从其他站点读取的字符串文件
我现在做的是,
- 从站点读取文件并通过HTTP-POST将其发送到我的服务器
- 在会话中存储字符串内容
- 向客户端发送cookie,以指示服务器会话中有可读取的文件
- 客户端在读取cookie时,向服务器发送获取文件的请求
我发现这种方法似乎有点迂回。有没有一种更简单的方法可以做到这一点,通过读取客户端的响应内容直接访问文件内容?使用
计时器
,它将使用GWT RPC调用连续查看用户会话。如果在会话中找到文件内容,则只需将内容发送到客户端
将下面的代码放入入门级
Timer timer = new com.google.gwt.user.client.Timer() {
@Override
public void run() {
//GWT RPC call to check the user session
// if you want then cancel the timer
//timer.cancel();
}
};
timer.scheduleRepeating(5000); // 5 seconds
或者你也可以试试这个 如果
/path/to/my/application
正在重定向到JSP文件,则可以读取JSP文件中的会话属性
服务器端:
session.setAttribute("keyname",fileContent);
JSP:
您可能希望在
web.xml
文件中使用load-on-startup
,然后覆盖servlet中的init()
方法来执行所需的任务
<servlet>
<servlet-name>startupTasks</servlet-name>
<servlet-class>xxx.xxxxxx.server.StartupTasksServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
创业任务
xxx.xxxxxx.server.StartupTasksServlet
0
可以找到其他信息计时器正常。但是它会不会增加开销,因为它会持续在后台运行?此外,我还研究了是否有方法访问onModuleLoad部分中的HttpResponse对象(response.sendRedirect调用就是通过该对象进行的)?只需在获取内容后取消计时器。使用计时器没有开销,因为它就像在特定时间后调用的
JavaScript
函数。第二个选项呢?我的应用程序中没有使用JSP。看起来是个不错的主意。这是用来指定启动顺序的,对吗?我的查询类似于通过重定向访问内容的一种更简单的方法。这是用于指定在应用程序启动时要执行的操作。i、 e.在onModuleLoad()之前。它将在服务器启动时运行。如果应用程序在没有文件内容的情况下无法运行,您可以尝试使用它。
System.out.println(getElementById("myHiddenDiv").getInnerHTML());
...
public static final native Element getElementById(String id) /*-{
return $wnd.document.getElementById(id);
}-*/;
<servlet>
<servlet-name>startupTasks</servlet-name>
<servlet-class>xxx.xxxxxx.server.StartupTasksServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>