response.sendRedirect()实现重定向(页面跳转)

这篇具有很好参考价值的文章主要介绍了response.sendRedirect()实现重定向(页面跳转)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在某些情况下,针对客户端的请求,一个 Servlet 类可能无法完成全部工作。这时,可以使用请求重定向完成这一工作。

请求重定向指 Web 服务器接收到客户端的请求后,可能由于某些条件的限制,不能访问当前请求 URL 所指向的 Web 资源,而是指定了一个新的资源路径,让客户端重新发送请求。

为了实现请求重定向,HttpServletResponse 接口定义了一个 sendRedirect() 方法,该方法用于生成 302 响应码和 Location 响应头,从而通知客户端重新访问 Location 响应头中指定的 URL,sendRedirect() 方法的完整语法如下所示:

public void sendRedirect(java.lang.String location) throws java.io.IOException

在上述方法代码中,参数 location 可以使用相对 URL,Web 服务器会自动将相对 URL 翻译成绝对 URL,再生成 Location 头字段。

sendRedirect() 方法的工作原理如图 1 所示。

response.sendRedirect()实现重定向(页面跳转)


图 1 sendRedirect()方法的工作原理

在图 1 中,当客户端访问 Servlet1 时,由于在 Servlet1 中调用了 sendRedirect() 方法将请求重定向到 Servlet2,因此,浏览器收到 Servlet1 的响应消息后,立刻向 Servlet2 发送请求,Servlet2 对请求处理完毕后,再将响应消息回送给客户端浏览器并显示。

下面通过一个用户登录的案例分步骤讲解 sendRedirect() 方法的使用。

1)创建页面文件

在 servletDemo02 项目的 WebContent 目录下创建一个用户登录的页面 login.html 和登录成功的页面 welcome.html,编辑后如下所示。

① login.html文件

  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>用户登录</title>
  6. </head>
  7. <body>
  8. <!-- 把表单内容提交到 servletDemo02 工程下的 LoginServlet -->
  9. <form action="/servletDemo02/LoginServlet" method="POST">
  10. 用户名:<input type="text" name="username"><br/>
  11. 密&nbsp;&nbsp;&nbsp;码:<input type="password" name="password"/><br/>
  12. <br/>
  13. <input type="submit" value="登录"/>
  14. </form>
  15. </body>
  16. </html>

② welcome.html文件

  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>欢迎页面</title>
  6. </head>
  7. <body>
  8. 欢迎你,登陆成功!
  9. </body>
  10. </html>

2)创建 Servlet

在 servletDemo02 项目的 com.mengma.response 包中创建一个名为 LoginServlet 的 Servlet 类,用于处理用户登录请求,如下所示。

  1. package com.mengma.servlet;
  2. import java.io.IOException;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.http.HttpServlet;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. public class LoginServlet extends HttpServlet {
  8. public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
  9. response.setContentType("text/html;charset=utf-8");
  10. // 用 HttpServletRequest 对象的 getParameter() 方法获取用户名和密码
  11. String username = request.getParameter("username");
  12. String password = request.getParameter("password");
  13. // 假设用户名和密码分别为 admin 和 123456
  14. if ("admin".equals(username) && ("123456").equals(password)) {
  15. // 如果用户名和密码正确,重定向到 welcome.html
  16. response.sendRedirect("/servletDemo02/welcome.html");
  17. } else {
  18. // 如果用户名和密码错误,重定向到 login.html
  19. response.sendRedirect("/servletDemo02/login.html");
  20. }
  21. }
  22. public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
  23. doGet(request, response);
  24. }
  25. }

在上述代码中,首先通过 getParameter() 方法分别获取用户名和密码,然后判断表单中输入的用户名和密码是否为指定的“admin”和“123456”,如果是,则将请求重定向到 welcome.html 页面,否则重定向到 login.html 页面。

3)运行项目并查看结果

启动 Tomcat 服务器,在浏览器的地址栏中输入地址 http://localhost:8080/servletDemo02/login.html 访问 login.html,浏览器的显示结果如图 2 所示。

response.sendRedirect()实现重定向(页面跳转)


图 2 运行结果

在图 2 所示的界面中填写用户名“admin”和密码“123456”,单击【登录】按钮,浏览器的显示结果如图 3 所示。

response.sendRedirect()实现重定向(页面跳转)
图 3 运行结果

从图 3 中可以看出,当用户名和密码输入正确后,浏览器跳转到了 welcome.html 页面。但是,如果用户名或者密码输入错误,则会跳转到图 2 所示的登录页面。文章来源地址https://www.toymoban.com/news/detail-420892.html

到了这里,关于response.sendRedirect()实现重定向(页面跳转)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • bat 打开 cmd 跳转某个目录并执行某些命令

    当遇到多条命令要在 cmd 下执行时,可以用 bat 脚本一次性执行所有命令 例如: 要跳转到桌面名为sentinel的文件夹下,用java -jar执行里面的jar包 普通情况下,Windows+R打开cmd,切换到sentinel文件夹,再执行 java -jar 现在只需要执行 bat 文件,文件内容: start cmd /k \\\"cd /d C:Userseoi

    2024年02月16日
    浏览(54)
  • Android Studio 点击按钮实现页面跳转、网页跳转

    1)页面跳转 2)网页跳转 3)完整代码 activity_main.xml: next.xml:(准备跳转到页面的布局) MainActivity.java: nextActivity.java: 4)结果呈现 Android Studio 点击按钮实现页面跳转、网页跳转就到这了,更多Android Studio相关资料(面试题)可以扫码免费领取! 需要掌握基本知识点,比如四大

    2024年04月16日
    浏览(54)
  • vue怎么实现页面跳转

    在 Vue 中,可以使用 vue-router 插件来实现页面跳转。首先需要在 main.js 文件中引入 vue-router 并配置好路由。然后在组件中使用 标签或者 this.$router.push() 方法来实现页面跳转。 示例: 1.main.js 中引入并配置路由 2.使用 标签在页面中实现页面跳转 3.使用 this.$router.push() 方法在组件

    2024年02月15日
    浏览(37)
  • vue点击按钮实现页面跳转

    2024年02月12日
    浏览(56)
  • vue单页面实现路由跳转后保留原页面数据

    有时候在路由跳转后,返回原页面时需要保留之前的数据,即不销毁页面。 页面的缓存,需要用到vue的内置组件keep-alive,来缓存列表页面,同时配合路由选项来更改页面的数据。 在设置keep-alive缓存的组件中,首次进入组件,会一次调用组件的钩子函数:created -- mounted --ac

    2024年02月15日
    浏览(42)
  • 微信小程序—点击实现页面跳转

    1.按钮button标签通过bindtap属性绑定点击事件实现页面跳转。 2.但需注意,跳转到tabBar页面和非tabBar页面所调用的函数方法不一样。 跳转到TabBar页面需用wx.switchTab()方法 3.而 跳转到非tabBar页面用wx.navigateTo()方法

    2024年02月11日
    浏览(62)
  • android studio实现页面跳转(点击按钮)

    1.在已经创建的java文件MainActivity(点击app,点击java)下里面编写  2.在activity_main.xml(打开app,打开res,在layout下)里面编写 3.新建一个layout Resource File(打开app,打开res,在layout下新建一个layout Resource File)命名为twolayout,在里面编写 4.新建一个java文件(在app下,在java下,

    2023年04月09日
    浏览(40)
  • android studio实现简单的页面跳转

    运用intent组件实现简单的跳转 主页面 跳转后的页面(返回功能) 此时就可以满足页面间的跳转和返回了,当时第一次做觉得这样就结束了,结果运行发现有报错,后来发现忽视了还要在配置文件加上新创建的页面,这里大家也要注意⚠️⚠️⚠️ 在AndroidMainfest.xml里加上新

    2024年02月07日
    浏览(39)
  • Android实现点击按钮跳转另外页面

    主界面 activity_main.xml

    2024年02月11日
    浏览(53)
  • 2022支付宝红包跳转页面_微信跳转支付宝红包实现

    教你微信点击短链接直接跳转到支付宝领红包 qrcode后的值就是你所要跳转页面的链接地址 h5唤醒支付宝指定页面     方案1:跳转到支付宝并自动聚焦到搜索框 方案2:跳转到支付宝并自动领取红包 代码一键生成不懂联系wx_wzmslr 方案3:跳转到支付宝并打开扫码 完整: 微信跳

    2024年02月08日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包