Servlet技术-请求转发,重定向和包含的关系

Web组件之间的关系包含3种,请求转发,URL重定向和包含

1.请求转发

请求转发允许把请求转发给同一应用程序的其他web组件,这种技术通常用于Web应用控制层的Servlet流程控制器,可检查HTTP请求的数据,并将请求转发到合适的目标组件,目标组件执行具体的请求处理操作并生成响应结果。

实例:

如果当前的Servlet组件要把请求转发给一个jsp组件,如hello.jsp,可在Servlet中的service方法中执行一下代码:

RequestDispatcher rd=request.getRequestDispatcher("hello.jsp");

//forward to request URL

rd.forward(request,resposne);

在jsp页面中,可以使用<jsp:forward>标签来转发请求

<jsp:forward page="hello.jsp">

对于请求转发,转发的源组件和目标组件可以共享request范围内的数据

2.URL重定向

请求重定向类似与请求转发,但有一些重要区别,Web组件可以将请求定向到任意的URL,而不仅仅是同一应用中URL。重定向的源组件和目标组件不能共享同一个

HttpServletRequest对象,因此不能共享request范围内的共享数据

实例:

若当前应用的Servlet组件要把请求转发给URL,如http://www.csdn.net/可以在Servlet中的service()方法中执行一下代码

response.sendRedirect("http://www.csdn.net");

HttpServletResponse的sendRedirect()向浏览器返回包含重定向的信息,浏览器根据这一信息迅速发出一个新的新Http请求,请求访问重定向内容

3.包含

包含关系允许一个web组件聚集来自同一个应用中其他Web组件的输出数据,并使用被聚集的数据来创建响应结果,这种技术通常用于模版处理器,它可以控制网页布局。模版中每个页面区域的内容来自不同的URL,从而组成单个页面,这种技术能够为应用程序提供一致的外观和感觉

实例:

Servlet类使用javax.Servlet.RequestDispatcher.include()方法包含其他的web组件,如当前的Servlet组件包含3个jsp组件,header.jsp main.jsp footer.jsp则可以在service中执行一下代码:

RequestDispatcher rd;

rd=response.getRequestDispatcher("\header.jsp");

rd.include(request,response);

rd=response.getRequestDispatcher("\main.jsp");

rd.include(request,response);

rd=response.getRequestDispatcher("\footer.jsp");

rd.include(request,response);

在jsp文件中可以通过<include>指令来包含其他资源

<%@ include file="header.jsp"%>

<%@ include file="main.jsp"%>

<%@ include file="footer.jsp"%>

Servlet技术-请求转发,重定向和包含的关系

时间: 2024-12-21 12:06:27

Servlet技术-请求转发,重定向和包含的关系的相关文章

Servlet 及 请求转发与重定向

Servlet: Java编写的服务器端程序,处理客户端的http请求并将其结果发送到客户端. Servlet容器Tomcat: 最熟悉的是容器就是tomcat.在tomcat中,server-包含-service-包含-connector+container+other 最核心的组件: Connector:接收TCP请求,创建response和request对象,分配线程给container处理 Container:servlet容器,责任链模式的子容器:engine--host--Conte

idea创建简单web项目分析Servlet的请求转发与重定向的区别

注:如需转载,请附上原文链接,如有建议或意见,欢迎批评指正! 需求说明: // index.jsp页面 1 <% 2 String basePath = request.getScheme()+":"+"//"+request.getServerName()+":"+request.getServerPort()+"/" 3 +request.getServletContext().getContextPath()+&q

关于转发重定向以及包含

一.请求重定向:    1.原始方式        response.setStatus(302);        response.setHeader("Locaton","/xxxxxx");    2.快捷方式        response.sendRedirect("/xxxx");    *3.额外的方式        response.setHeader("refresh","0;url=/xxxx&q

JSP总结报告二(域对象,请求转发,重定向)

一. JSP四大域对象介绍 1. pageContext  :  属性的作用范围仅限于当前 JSP 页面. 2. request:  属性的作用范围仅限于同一个请求. 3. session: 属性的作用范围限于一次会话, 浏览器打开直到关闭称之为一次会话(在此期间会话不失效). 4. application (servletContext ): 属性的作用范围限于当前 WEB 应用. 是范围最大的属性作用范围, 只要在一处设置属性, 在其他各处的 JSP 或 Servlet 中都可以获取到. 二

Servlet到Servlet的请求转发与重定向的区别

Servlet跳转到另一个Servlet中: request.getRequestDispatcher().forward();代表默认的是post方法,即在被跳转的Servlet的doPost()方法中接收或写代码 response.sendRedirector()代表默认的是get方法.//因为重定向,又重新从页面发送请求到服务端

jsp servlet 的 请求转发和重定向

以前对于servlet和servlet/jsp之间的跳转路径问题感到很迷惑,今天亲自动手实验了一把,总结如下: servlet已经是项目根路径下面的资源了,所以servlet跳转的时候,在跳转路径上面可以加"/",也可以不加,加上表示从根路径下面开始找,用的是绝对路径, 不加"/"呢,表示是相对路径,因为本身servlet已经是根路径下面的资源了,所以能相对到项目中的任何路径下面去. jsp跳转(提交也是跳转)到servlet的时候加"/"还是不

请求转发、包含、重定向 getAttribute 和 setAttribute POST和GET编码

 一.请求转发  请求包含  请求重定向 Demo5.java   注意:doPost()方法中别忘写doGet(request, response); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setCo

请求转发与重定向详解(模拟系统维护中提示的实现)

简介 转发和包含 Servlet对象由Servlet容器创建,并且Servlet对象的service()方法也由容器调用.一个Servlet对象可否直接调用另一个Servlet对象的service()方法呢?答案是否定的,因为一个Servlet对象无法获得另一个Servlet对象的引用. 在旧版的Servlet API中,ServletContext接口中的getServlet(Stringname)方法能根据参数给定的名字返回相应的Servlet对象的引用.从Servlet API2.1开始,

javaWeb中request请求转发和response重定向

1.访问资源 运用forward方法只能重定向到同一个Web应用程序中的一个资源. 而sendRedirect方法可以让你重定向到任何URL. 2.request.get Forward代码中的"/uu"则代表相对与WEB应用的路径. 举例: Servlet 和 目标文件的包路径: Servlet  代码:中 doPost 和doGet代码: request 重定向url地址 或者是是相对于 本项目 (WEB13)  http:localhost:8080/WEB13+url