[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 ();
        }
    }
}




转载于:https://www.cnblogs.com/robbychan/p/3786858.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值