Java Web开发6___包含 Web 资源----RequestDispatcher.include 方法
来源:互联网 发布:法院速录员听打软件 编辑:程序博客网 时间:2024/05/22 14:49
有时候为了实现代码重用, 需要将某些公用的代码 和 数据放到一个或几个Servlet 中, 以供其他的 Servlet 使用,为这实现上述功能, Java Web 专门提供了RequestDispather.include 方法, 在具体使用该方法时,可以首先通过 getServletContext 方法获取 ServletContext 对象, 然后通过 ServletContext.getRequestDispatcher 方法获取RequestDispatcher 对象.
IncludingServlet 类演示了如何使用include 方法包含Web 资源, 代码如下:
//包含了一个 Servlet: IncludedServlet 和一个html 页面public class IncludingServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{response.setContentType("text/html; charset=gb2312");PrintWriter out = response.getWriter();out.println("中国<br/>");//向客户端输出请求out.println("IncludingServlet URI:" + request.getRequestURI() + "<p/>");// RequestDispatcher对象封装的资源路径前必须加“/”, RequestDispatcher rd = getServletContext().getRequestDispatcher("/servlet/IncludedServlet");//包含 IncludedServletrd.include(request, response);rd = getServletContext().getRequestDispatcher("/chp4/IncludedHtml.html");//包含includedHtml.html页面rd.include(request, response);}}
在 上述代码中, 包含了两个Web资源,映射路径为 "/servlet/IncludedServlet" 的Servlet 类 和 名为IncludedHtml.html 的静态页面
getRequsetDispatcher 方法的参数必须以 "/" 开头
IncludedServlet 类的代码如下:
public class IncludedServlet extends HttpServlet{@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{response.setContentType("text/plain; charset=utf-8");PrintWriter out = response.getWriter();out.println("<b>超人</b><br/>");out.println("IncludedServlet URI:" + request.getRequestURI() + "<p/>");}}
在WebRoot\chp4 目录下创建一个IncludedHtml.html 文件,代码如下:
<meta content="text/html; charset=utf-8"><table border="1"><tr><td>Book Name</td><td>Publish Date</td></tr><tr><td>Java 编程思想</td><td>2006年12月</td></tr></table>
在浏览器输入 URL: http://localhost:8080/webdemo/servlet/IncludingServlet
运行效果如下包含了 Web 资源
使用include 方法时,Servlet 引擎并不会 调整HttpServletRequest 中的消息, 因此,IncludingServlet 和 IncludedServlet都输出了访问IncludingServlet 时的URI. 从这一点可以看出,调用 include 方法就相当于 Servlet 引擎在IncludingServlet 的service 方法中又调用了IncludedServlet 的 service 方法, 并将IncludingServlet 的service 方法的两个参数传入了IncludedServlet 的service 方法, 因此才会得出同样的URI 值。
在被调用都 中(在本例中为 IncludedServlet) 设置的响应消息头将被忽略。 读者从IncludedServlet 类中可以看到, 已经将响应正文的编码格式设置成了utf-8,
但是, 注意Servlet 引擎发送的并不是utf-8编码格式, 而是gb2312. 另外在IncludedServlet 类中设置了MIME 类型是"text/plain" 而在输出“超人” 时变成了粗体, 而不是直接输出"<b>超人</b><br/>". 因此可以断定, 在IncludedServlet 中调用的setContentType 方法并没有生效。
- Java Web开发6___包含 Web 资源----RequestDispatcher.include 方法
- Java Web开发2___<jsp:include>和<%@ include %>的区别
- Java Web开发详解:RequestDispatcher接口
- 用 RequestDispatcher.include 方法实现文件包含
- RequestDispatcher.include方法
- Java web加载资源方法
- java web小记response.sendRedirect,RequestDispatcher对象的forward方法实现页面跳转
- javaweb之request使用RequestDispatcher的include方法实现页面包含
- Java Web开发7___通过数据库连接池连接MySQL 数据库
- 【Java Web】页面包含
- Java web 开发构想[三] 页面资源
- Java web开发中读取资源文件
- Java web开发中读取资源文件
- WEB开发资源
- Web开发资源站点
- web 开发视频资源
- web开发资源
- 开源Web开发资源
- 高通 8x26 andorid light sensor(TSL258x) 开发
- 七层学习
- php-redis扩展编译
- Redis持久化配置
- 《现代操作系统》笔记
- Java Web开发6___包含 Web 资源----RequestDispatcher.include 方法
- redis安装
- 如何教孩子Scheme编程(1)
- react学习中的一些细节
- 某个土壤检测网页项目记录
- Brackets Sequence
- 单向链表实现堆栈
- LVS(Linux Virtual server)
- 实验吧_登陆一下好吗??