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);
    } 
}
或者通过sendRedirect



forward可以用 ”/” 路径, 是指web app的根路径, servlet forward jsp的时候一定要用 “/”开头
jsp sendRedirect到servlet应该用相对路径,因为这里”/”指网站的根路径
servlet sendRedirect jsp也是
request.getContextPath起作用了
原文地址:https://www.cnblogs.com/Sherlock-J/p/12926047.html