Servlet和JSP的通信
从JSP调用Servlet:
可用<jsp:forward> 请求信息自动传递到Servlet或者通过sendRedirect
从Servlet调用JSP使用:
RequestDispatcher接口的forward(req, res)方法
请求信息需要显式传递(在req、res参数中)
<html>
<body bgcolor="green">
<!-- Forward to a servlet, 这个servlet存放在web-inf的servlet目录下 -->
<jsp:forward page="/servlet/ServletToJSP" />
</body>
</html>
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletToJSP extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置属性并将它分发给/servlet_jsp/ServletUseJsp.jsp处理
resp.setContentType("text/html;charset=gb2312");
req.setAttribute("servletName", "ServletToJSP");
// RequestDispatcher getRequestDispatcher(String path):
// Returns a RequestDispatcher object that acts as a wrapper for the resource located at the given path.
getServletConfig().getServletContext().getRequestDispatcher("/servlet_jsp/ServletUseJsp.jsp").forward(req, resp);
}
}
或者通过sendRedirectforward可以用 ”/” 路径, 是指web app的根路径, servlet forward jsp的时候一定要用 “/”开头
jsp sendRedirect到servlet应该用相对路径,因为这里”/”指网站的根路径
servlet sendRedirect jsp也是
request.getContextPath起作用了