Web组件的三种关系

Web应用程序存在的三种关联关系:

  • 请求转发
  • URL重定向
  • 包含

    存在以上关联关系的Web组件可以使JSP或Servlet,对于Structs应用,则还包括Action。这些Web组件都可以访问HttpServletRequest和HttpServletResponse对象,具有处理请求、生成响应结果的功能。


  1. 请求转发

    请求转发允许把请求转发给同一应用程序中的其它Web组件。这种技术通常用于Web应用控制层的Servlet流程控制器,它检查HTTP请求数据,并将请求转发到合适的目标组件,目标组件执行具体的请求处理操作,并生成响应结果。
    Servlet类使用javax.servlet.RequestDispacher.forward()方法来转发它收到的Http请求。转发目标组件将处理该请求并生成响应结果,或者将请求转发到另一个组件。最初请求的ServletRequesth和ServletResponse对象被传递给转发目标组件,这使得目标组件可以访问整个请求上下文。值得注意的是,只能把请求转发给同一Web应用中的组件,而不能转发给其他Web应用的组件。
    如果当前的Servlet组件要把请求转发给一个JSP组件,如hello.jsp,可以在Servlet的service()方法中执行以下代码:

    RequestDipacher rd = request.getRequestDispather("hello.jsp");
    rd.forward(request,response);

在JSP页面中,可以使用< jsp:forward>标签来转发请求,例如:< jsp:forward page=”hello.jsp”>

2.请求重定向

请求重定向类似于请求转发,但也有一些重要区别:

  • Web组件可以将请求重定向到任一URL,而不仅仅是同一应用中的URL。
  • 重定向的源组件和目标组件之前不共用同一个HttpServletRequest对象,因此不能共享request范围内的共享数据。

    如果当前应用的Servlet组件要求把请求转发给URL “http://jakarta.apache.org/structs”,可以在Servlet的service()方法中执行以下代码:

    response.sendRedirect(“http://jakarta.apache.org/structs/”);

HttpServletRequest的 sendRedirect()方法向浏览器返回包含重定向的信息,浏览器根据这一信息迅速发出一个新Http请求,请求访问重定向目标组件。

3.包含

包含关系允许一个Web组件聚集来自同一个应用中的其它Web组件的输出数据,并使用被聚集的数据来创建响应结果。这种技术通常用于模板处理器,它可以控制网页的布局。模板中的每个页面区域的内容来自不同的URL,从而组成单个页面。这种技术能够为应用程序提供一直的外观和感觉。包含关系的源组件和目标组件公用一个HttpServletRequest对象,因它们共享request范围内的数据共享。

Servlet类使用javax.servlet.RequestDispacher.include()方法包含其他的Web组件。例如,如果当前的Servlet组件包含了三个JSP文件:header.jsp、main.jsp和footer.jsp,则可以在Servlet的service()方法中执行以下代码:

    RequestDispacher rd;

    rd = req.getRequestDispacher("/header.jsp");
    rd.include(req,res);
    rd = req.getRequestDispacher("/main.jsp");
    rd.include(req,res);
    rd = req.getRequestDispacher("/footer.jsp");
    rd.include(req,res);    

在JSP文件中,可以通过< include>指令来包含其他的Web资源,例如:<%@ include file = “header.jsp” %>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值