这可以返回一个字符串:
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");
}
}
抱歉是noob!
编辑:
我已经在单独的文档中使用了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>
答案 0 :(得分:44)
您从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);
}
}