Web ページに 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というサイト を参照すると、正しい応答が得られます。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 に関するチュートリアル/例があまり見つからないので、助けていただければ幸いです。
ありがとう