如何从Java Servlet返回HTML文档?
这可以返回一个字符串:
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>
回答:
您可以从Servlet本身 HTML (不建议使用)
PrintWriter out = response.getWriter();out.println("<html><body>");
out.println("<h1>My HTML Body</h1>");
out.println("</body></html>");
或者, 到现有资源(servlet,jsp等) (称为转发到视图)(首选)
RequestDispatcher view = request.getRequestDispatcher("html/mypage.html");view.forward(request, response);
您需要将当前HTTP请求转发到的现有资源在任何方面都不需要特殊,即,它的编写方式与其他Servlet或JSP相同;容器无缝处理转发部分。
只要确保您提供了正确的资源路径即可。例如,对于servlet,RequestDispatcher
将需要正确的URL模式 (如web.xml中所指定)
RequestDispatcher view = request.getRequestDispatcher("/url/pattern/of/servlet");
另外,还要注意的是,一个RequestDispatcher
可以从两个检索ServletRequest
和ServletContext
不同之处在于前者可以采取
为好。
参考: 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);
}
}
以上是 如何从Java Servlet返回HTML文档? 的全部内容, 来源链接: utcz.com/qa/426344.html