public class SrcIncludeServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("include...get....11111");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();

out.println("include1111..get...包含之前...");
//out.flush();
//out.close();
//请求包含
RequestDispatcher rd = request.getRequestDispatcher("/servlet/DestIncludeServlet");
rd.include(request, response);//包含---可理解成类似调用函数的方式。 主要是调用第2个servlet中的service(req,resp)
out.println("include1111..get...包含之后...");

}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("include...post....11111");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");

out.println("include1111..post...包含之前...");
//请求包含
RequestDispatcher rd = request.getRequestDispatcher("/servlet/DestIncludeServlet");
rd.include(request, response);//包含
out.println("include1111..post...包含之后...");

out.println(" </BODY>");
out.println("</HTML>");
}

}

----------------------------------------------------------------------------------------------------------------------------------------------------------

public class DestIncludeServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("include...get....22222");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("include2222..get页面数据输出......");
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("include...post....22222");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");

out.println("include2222..post页面数据输出......");

out.println(" </BODY>");
out.println("</HTML>");
}

}

----------------------------------------------------------------------------------------------------------------------------------------------------

<a href="<%=request.getContextPath()%>/servlet/srcIncludeServlet?name=Jack&age=22">请求包含时,两个servlet的访问顺序, 读取页面数据, 传参</a>
<form action="<%=request.getContextPath()%>/servlet/srcIncludeServlet" method="post">
姓名:<input type="text" name="name"/>
<input type="submit" value="提交">
</form>

-----------------------------------------------------------------------------------------------------------------------------------------------------

5、请求包含(共享同一个request和response ,类似函数调用中的传参)
1)通过request实现,与转发一样是通过RequestDispatcher,只是前者是rd.forward(req,resp),后者是rd.include(req,resp);
2)在第1个servlet中out.flush(),对两个servlet的输出都没有影响。但如果在第1个servlet中out.close(),则第1个之后的输出以及第2个servlet中的输出都无效(不会输出),注意,后面的rd.include()仍然有效即第2个servlet虽然不能输出但仍会执行,且没有异常报出!
3)页面内容输出顺序:
servlet1..包含之前的输出...
servlet2.....(被包含的servlet输出)
servlet1..包含之后的输出...
4)由于该方式和转发一样是共享同一个request和response,因此有关页面参数读取和两个servlet之间的传参特性,同转发!
5)访问顺序(同转发): 第1个GET方式,第2个走的是doGet()。 第1个POST方式,第2个走的是doPost()。

6)一个小细节:被包含servlet中的所有输出信息(包括<html><body>等标记内容)都会原样输出,
//因此要注意,两个servlet之间的输出内容不要出现标记嵌套冲突! ( 如:<html><body><html><body>...</body></html></body></html> )

Servlet中的请求包含的更多相关文章

  1. web基础----->servlet中得到请求的数据

    对tomcat的源码做一些分析,今天我们就开始servlet中的请求分析. form表单中的默认类型 一.在index.jsp中get请求: <form action="Paramet ...

  2. Servlet中的请求转发RequestDispatcher接口的forword与Include的区别

    RequestDispatcher接口中具有两个方法: forward() 与 include() 均 可完成请求 的转发.区别如下: forword(): 使用该方法,则当前 的 Servlet 中 ...

  3. Servlet中的请求转发和重定向

    跳转和重定向 有的时候客户端请求到达服务端后需要对请求重新转发到其它Servlet甚至别的服务器,这就需要跳转和重定向. 区别 一般来说,跳转是服务器内部跳转,例如将请求从一个Servlet转发给另外 ...

  4. Servlet中的请求转发

    请求转发时,传递到下一个servlet的request和response可能内存地址不同,但是里面包含的内容是相同的 // servlet1 RequestDispatcher dispatcher ...

  5. javaweb servlet中使用请求转发乱码

    乱码的方式有很多,这里指出一种不容易想到的 *请确保您的页面单独访问正常,经过servlet请求转发时,有PrintWriter out = response.getWriter()不正常,没有正常 ...

  6. servlet中的请求响应与重定向区别

    一.概念 请求响应(转发):将客户端请求转发另一个servlet或者jsp页面------------------------getRequestDispatcher()方法 重定向: 返回一个连接给 ...

  7. Servlet 中 RequestDispacher 请求与分发

    RequestDispacher 请求与分发使用HttpServletRequest的getRequestDispatcher()方法取得 Login.java页面 package control; ...

  8. Servlet中获取请求参数问题

    1.GET方法,可以通过getParamter方法反复获取同一个变量的数据: 2.POST方法,需要注意请求类型(content-Type)是否是application/x-www-form-urle ...

  9. Envoy 代理中的请求的生命周期

    Envoy 代理中的请求的生命周期 翻译自Envoy官方文档. 目录 Envoy 代理中的请求的生命周期 术语 网络拓扑 配置 高层架构 请求流 总览 1.Listener TCP连接的接收 2.监听 ...

随机推荐

  1. 【HDOJ】1061 Rightmost Digit

    这道题目可以手工打表,也可以机器打表,千万不能暴力解,会TLE. #include <stdio.h> #define MAXNUM 1000000001 ][]; int main() ...

  2. Android开发UI之ViewPager及PagerAdapter

    ViewPager,官网链接--http://developer.android.com/reference/android/support/v4/view/ViewPager.html ViewPa ...

  3. HTML5标签一览

    HTML5标签一览,点击下载 访问密码:1907

  4. 2016年中国500强利润率最高的公司,中国500强最赚钱的40家公司,ROE最高的公司

    2016年中国500强利润率最高的公司     排名 公司名称 利润率 62 阿里巴巴集团控股有限公司 73.09% 87 百度股份有限公司 50.71% 195 国信证券股份有限公司 47.87% ...

  5. mapreduce实现全局排序

    直接附代码,说明都在源码里了. package com.hadoop.totalsort; import java.io.IOException; import java.util.ArrayList ...

  6. bzoj1821

    题目要求最近的两个部落间距尽可能最远 不难想到一种贪心的方法,对每两个点之间距离从小到大排序, 把每个点看成一个部落 然后不断将距离近的两个部落合并成一个部落,直到剩下了k个部落,那么下一条不同部落之 ...

  7. 解决因block的损坏而导致hdfs启动后进入安全模式

    问题描述: 以单机伪分布式方式安装了hadoop2.7.1,并在该机器上安装了hive1.2.1.首先执行 sbin/start-dfs.sh 启动hdfs服务,然后执行hive,这时hive脚本启动 ...

  8. WordPress FunCaptcha插件跨站脚本漏洞

    漏洞名称: WordPress FunCaptcha插件跨站脚本漏洞 CNNVD编号: CNNVD-201311-431 发布时间: 2013-11-29 更新时间: 2013-11-29 危害等级: ...

  9. [转] KMP算法详解

    转载自:http://www.matrix67.com/blog/archives/115 KMP算法详解 如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段.    我们这里说的K ...

  10. Guid 的几种形式

    Guid.NewGuid().ToString()得几种格式显示 1.Guid.NewGuid().ToString("N") 结果为:       38bddf48f43c485 ...