これは文字列を返すために機能します:
import javax.servlet.http.*;
@SuppressWarnings("serial")
public class MonkeyServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
resp.setContentType("text/plain");
resp.getWriter().println("got this far");
}
}
しかし、HTML ドキュメントを返すことができません。これは機能しません:
import javax.servlet.http.*;
@SuppressWarnings("serial")
public class BlotServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
resp.setContentType("text/html");
resp.getWriter().println("html/mypage.html");
}
}
初心者でごめんなさい!
編集:
すでに HTML は別のドキュメントにあります。そのため、ドキュメントを返すか、何らかの方法で読み取り/解析して、HTML をすべて再入力するのではなくする必要があります...
編集:
これはweb.xmlにあります
<servlet>
<servlet-name>Monkey</servlet-name>
<servlet-class>com.self.edu.MonkeyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Monkey</servlet-name>
<url-pattern>/monkey</url-pattern>
</servlet-mapping>
他に何か入れて、ファイルを返すようにすることはできますか?
<servlet-mapping>
<servlet-name>Monkey</servlet-name>
<file-to-return>blot.html</file-to-return>
</servlet-mapping>
ベストアンサー1
あなたはどちらか印刷サーブレット自体からHTMLを取り出す(非推奨)
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>My HTML Body</h1>");
out.println("</body></html>");
または、急送既存のリソース(サーブレット、JSPなど)(ビューへの転送と呼ばれる)(推奨)
RequestDispatcher view = request.getRequestDispatcher("html/mypage.html");
view.forward(request, response);
現在の HTTP リクエストを転送する必要がある既存のリソースは、特別なものである必要はありません。つまり、他のサーブレットや JSP と同じように記述され、コンテナーが転送部分をシームレスに処理します。
リソースへの正しいパスを指定してください。たとえば、サーブレットの場合はRequestDispatcher
正しいURLパターンが必要です。(web.xml で指定されているとおり)
RequestDispatcher view = request.getRequestDispatcher("/url/pattern/of/servlet");
また、aはRequestDispatcher
両方から取得できるがServletRequest
、ServletContext
前者はaを取得できるという違いがあることに注意してください。相対パス同じように。
参照:
http://docs.oracle.com/javaee/5/api/javax/servlet/RequestDispatcher.html
サンプルコード
public class BlotServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
// we do not set content type, headers, cookies etc.
// resp.setContentType("text/html"); // while redirecting as
// it would most likely result in an IllegalStateException
// "/" is relative to the context root (your web-app name)
RequestDispatcher view = req.getRequestDispatcher("/path/to/file.html");
// don't add your web-app name to the path
view.forward(req, resp);
}
}