1.重定向
在Servlet中的接口HttpServletRequest提供了sendRedirect()方法用于生成302相应码和Location响应头,从而通知客户端去重新访问Location响应头指定的URL,其定义如下:
public void sendRedirect(String location ) throws IOException;
对于sendRedirect()方法不仅可以重定向到当前应用程序中的其他资源,也可重定向到一个容器中的其他应用程序中的资源。
eg:
//Servlet1.java package com.redrect; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Servlet1 extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub this.doPost(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.sendRedirect("Servlet2"); //重定向到指定路径的资源 // RequestDispatcher dis=request.getRequestDispatcher("Servlet2"); // dis.forward(request, response); } } //Servlet2.java package com.redrect; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Servlet2 extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub this.doPost(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println(" <head><title>servlet2</title></head>"); out.println(" <body>"); out.println("从Servlet2中获取请求参数name的值:"); out.println(request.getParameter("name")); out.println(" </body>"); out.println("</html>"); } }
同时要在项目中的web.xml对Servlet进行声明:
<servlet> <servlet-name>Servlet1</servlet-name> <servlet-class>com.lkh.redrect.Servlet1</servlet-class> </servlet> <servlet-mapping> <servlet-name>Servlet1</servlet-name> <url-pattern>/Servlet1</url-pattern> </servlet-mapping> <servlet> <servlet-name>Servlet2</servlet-name> <servlet-class>com.redrect.Servlet2</servlet-class> </servlet> <servlet-mapping> <servlet-name>Servlet2</servlet-name> <url-pattern>/Servlet2</url-pattern>
2.请求分派
在Servlet中定义一个接口RequestDispatcher
其方法如下:
public void forward(ServletRequest request,ServletResponse response) throws ServletException,IOException;
public void include(ServletRequest request,ServletResponse response) throws ServletException,IOException;
对于forward()方法用于将请求转发到RequestDispatcher实例封装的资源,include()方法用于将RequestDispatcher实例封装的资源作为当前响应的一部分包含进来。
获取RequestDispatcher实例的方式有两种:
(1)调用ServletContext接口提供的getRequestDispatcher(String url) 方法
(2)调用ServletRequest接口提供的getRequestDispatcher(String url) 方法
ServletContext接口提供的getRequestDispatcher(String url) 方法中的路径参数必须以”/"开头
ServletRequest接口提供的getRequestDispatcher(String url) 方法中的路径参数可以是相对路径也可为绝对路径。
eg:
只要将上面中的Servlet1.java 中的doPost()代码改为
RequestDispatcher dis=request.getRequestDispatcher("Servlet2");
dis.forward(request, response);
3.重定向和请求分派的比较:
<1>请求分派只能将请求转发给同一个web应用中的其他组件,而重定向不仅可以定向到当前应用程序中的其他资源,也可重定向到其他站点的资源上
<2>重定向的访问过程结束后,浏览器的地址栏显示的URL会发生改变,变成重定向的目标URL,而请求分派的浏览器地址栏保持初始的URL
<3>请求分派的发起者和被调者之间共享相同的request实例和response实例,属于同一个“请求/响应”而重定向的发起者和被调用者使用各自的request实例和response实例,各自属于独立的“请求/响应”过程。
相关推荐
请求重定向和请求分派是 MVC 架构中关键的技术,它们在 Web 应用程序中扮演着重要的角色。本文将详细介绍请求重定向和请求分派的概念、实现方法和应用场景。 一、请求重定向 请求重定向是指将客户端的请求重新定向...
7. **转发与重定向**:在Servlet中,可以通过`RequestDispatcher`的`forward()`方法将请求转发到其他资源,或者使用`Response.sendRedirect()`方法进行重定向,两者在处理请求流程上有所不同。 8. **会话管理**:...
- 实践如何在Servlet中转发和重定向请求,以及如何在`session`和`cookie`中存储用户信息。 - 学习如何配置和使用Servlet容器,如Tomcat,部署Web应用。 通过这个项目,开发者可以巩固Servlet的基础知识,逐步掌握...
- `RequestDispatcher`接口用于在Servlet之间转发和重定向请求。 - `forward()`方法将请求转发给另一个资源,而`redirect()`则告诉客户端重新发起一个新的请求。 6. **过滤器(Filter)**: - Filter是Servlet...
3. **重定向与请求分派**:重定向改变浏览器地址,分派则在服务器内部转发请求。 【Web应用属性与监听器】 1. **属性与参数**:属性是动态存储在特定范围(请求、会话、上下文)的数据,参数通常是配置项。 2. **...
在本项目"Servlet_servlet_"中,我们看到重点是利用Servlet技术来实现与MySQL数据库的交互,包括数据的增(Add)、删(Delete)、改(Update)和查(Select)操作。这里将详细阐述Servlet与MySQL结合进行CRUD操作的...
### Java Web 培训知识点总结 #### 一、前言和体系结构 ...它采用了请求/响应模型,客户端... - 了解请求重定向和请求分派的概念及应用场景。 通过以上内容的学习,可以为深入理解和掌握Java Web开发打下坚实的基础。
3. 服务:每当收到HTTP请求,Servlet容器会调用`service()`方法,根据请求类型分派到`doGet()`、`doPost()`等具体处理方法。 4. 销毁:当Servlet不再需要时,容器调用`destroy()`方法,释放资源。 三、Servlet容器 ...
- 在Servlet的`doGet()`或`doPost()`方法中获取参数,计算BMI,然后可以通过转发或重定向返回结果页面。 通过实践这个项目,你不仅可以掌握Servlet的基本操作,还能深入了解EL表达式的应用,以及如何在实际Web应用...
JSP(JavaServer Pages)和Servlet是Java Web开发中两个核心的技术,它们主要用于构建动态网站。下面将详细阐述这两个概念以及它们在笔试中常遇到的问题。 1. JSP内置对象: - request:代表HttpServletRequest对象...
4. **转发与重定向**:Servlet可以使用`RequestDispatcher`的`forward()`方法将请求转发给其他资源,或者使用`sendRedirect()`方法将浏览器重定向到新的URL。 5. **会话管理**:Servlet可以利用`HttpSession`接口来...
- **服务**:每次有新的请求到达,Servlet容器都会调用Servlet的service()方法,根据请求类型分派到doGet()或doPost()等具体方法。 - **销毁**:当Servlet不再需要时,服务器会调用destroy()方法释放资源,然后...
- **转发与重定向**:Servlet可以使用RequestDispatcher的`forward()`方法在内部转发请求,或者使用`sendRedirect()`方法让客户端发起新的请求。 - **会话管理**:通过HttpSession接口,Servlet可以存储和检索用户...
Servlet是Java Web开发中的核心组件,它是一种服务器端的Java应用程序,主要用于处理和响应客户端(如浏览器)的请求。在本"相关servlet学习代码"资料中,你将找到关于Servlet基础以及一些实用功能实现的详细示例。...
- **转发与重定向**:Servlet可以通过`RequestDispatcher`进行请求转发或重定向到JSP页面,实现视图渲染。 9. **Filter与Listener** - **Filter**:预处理或后处理Servlet请求,实现过滤功能,如登录检查、字符...
1. **请求分派**:Servlet可以使用`RequestDispatcher`将请求分派到JSP页面,例如在处理完业务逻辑后显示结果。 ```java RequestDispatcher dispatcher = request.getRequestDispatcher("result.jsp"); dispatcher....
Servlet API是Java Web开发中的核心组件,主要用于处理HTTP请求并生成响应。它是Java Servlet规范的一部分,由Java EE(现在称为Jakarta EE)定义,由Sun Microsystems(现为Oracle)最初开发,并由Java社区进程...
5. **重定向与请求分派**: - **重定向(Redirect)**:使用`sendRedirect()`方法,浏览器会发起新的请求到指定URL,地址栏显示新URL。 - **请求分派(Forward)**:通过`RequestDispatcher`的`forward()`方法,...
Servlet是Java EE中的一种组件,它运行在服务器端,负责接收和响应客户端的请求。Servlet可以处理各种类型的请求,包括HTTP、FTP等。通过继承`javax.servlet.http.HttpServlet`基类,开发者可以重写`doGet`和`doPost...
在示例中,可能包含名为`*.java`的`servlet`文件,这些文件实现了`javax.servlet.Servlet`和`javax.servlet.http.HttpServlet`接口,用于接收、处理和响应HTTP请求。 1. **JSP基本元素** - **指令(Directives)**...