我正在尝试为我的网页实现 AJAX 抓取。
为了感受一下,我用示例代码创建了一个新的 GWT 项目。
我创建了一个过滤器
public final class CrawlServlet implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException {
PrintWriter out = response.getWriter();
if (request.toString().contains("_escaped_fragment=")) {
out.write("yo");
} else {
try {
chain.doFilter(request, response);
return;
} catch (ServletException e) {
e.printStackTrace();
}
}
}`
如果浏览此站点,我会得到正确的响应:http: //127.0.0.1 :8888/URLFilter.html?gwt.codesvr=127.0.0.1:9997?_escaped_fragment=key=#!yo 如果我的,我会看到 GWT 示例应用程序URL 不是 escaped_fragment。但是当我点击“发送”(调用 RPC)时,我得到了一个 IllegalStatementException。
[WARN] Exception while dispatching incoming RPC call
java.lang.IllegalStateException: WRITER
at test.server.CrawlServlet.doFilter(CrawlServlet.java:32)
(这是chain.doFilter(request, response);
我的 web.xml
<!-- Servlets -->
<filter>
<filter-name>crawlServlet</filter-name>
<filter-class>test.server.CrawlServlet</filter-class>
</filter>
<filter-mapping>
<filter-name>crawlServlet</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>greetServlet</servlet-name>
<servlet-class>test.server.GreetingServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>greetServlet</servlet-name>
<url-pattern>/urlfilter/greet</url-pattern>
</servlet-mapping>
由于我在 GWT 中没有找到太多关于过滤器/rpc 的教程/示例,我很乐意感谢任何帮助。
谢谢