[Jweb] JSP-编程 07 Servlet和JSP的通信

* 从JSP调用Servlet可用<jsp:forward> 请求信息自动传递到Servlet
  * 或者通过sendRedirect
* 从Servlet调用JSP使用
  * RequestDispatcher接口的forward(req, res)方法
  * 请求信息需要显式传递(在req、res参数中)
  * 或者通过sendRedirect

* 例如:
  * FromJspToServlet.jsp / ServletToJsp.java / ServletUseJsp.jsp
* forward可以用 ”/” 路径, 是指web app的根路径, servlet forward jsp的时候一定要用 “/”开头
* jsp sendRedirect到servlet应该用相对路径,因为这里”/”指网站的根路径
* servlet sendRedirect jsp也是

* request.getContextPath起作用了

ServletToJSP.java

import javax.servlet.*;
import javax.servlet.http.*;

public class ServletToJSP extends HttpServlet {
    public void doGet (HttpServletRequest req,HttpServletResponse resp) {
        try {
            // 设置属性并将它提交给ServletUseJsp.jsp
            resp.setContentType("text/html;charset=gb2312");
            req.setAttribute ("servletName", "ServletToJsp");
            //forward
            //getServletConfig().getServletContext().getRequestDispatcher("/servlet_jsp/ServletUseJsp.jsp").forward(req, resp);
            //sendredirect
            System.out.println(req.getContextPath());
            resp.sendRedirect(req.getContextPath() + "/servlet_jsp/ServletUseJsp.jsp");
        }catch (Exception e){
            e.printStackTrace ();
        }
    }
}
FromJspToServlet.jsp
<html>
<body bgcolor="green">
<!-- Forward to a servlet,这个servlet存放在web-inf的servlet目录下 -->
<jsp:forward page="/servlet/ServletToJSP" />
</html>
ServletUseJsp.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<html>
<meta context="text/html;charset=gb2312" >
<head>
<title>Servlet使用JSP</title>
</head>
<body bgcolor="gray">
<h2>Servlet使用JSP的例子:</h2>
<h2>
这个页面是被
这个Servlet调用的.
</h2>
</body>
</html>
ServletToJsp.jsp
import javax.servlet.*;
import javax.servlet.http.*;

public class ServletToJSP extends HttpServlet {
    public void doGet (HttpServletRequest req,HttpServletResponse resp) {
        try {
            // 设置属性并将它提交给ServletUseJsp.jsp
            resp.setContentType("text/html;charset=gb2312");
            req.setAttribute ("servletName", "ServletToJsp");
            //forward
            //getServletConfig().getServletContext().getRequestDispatcher("/servlet_jsp/ServletUseJsp.jsp").forward(req, resp);
            //sendredirect
            System.out.println(req.getContextPath());
            resp.sendRedirect(req.getContextPath() + "/servlet_jsp/ServletUseJsp.jsp");
        }catch (Exception e){
            e.printStackTrace ();
        }
    }
}




posted @ 2014-01-02 23:34  小尼人00  阅读(344)  评论(0编辑  收藏  举报