文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

关于Javaweb的转发和重定向详解

2023-05-19 08:46

关注

转发

转发与页面跳转

转发

页面跳转

调用业务逻辑的Servlet中,编写代码:

request.getRequestDispatcher("/目标URL-pattern").forward(request,response);
//跳转转发到login.jsp
req.getRequestDispatcher("login.jsp").forward(req,resp);

数据传递

request作用域

存数据

以键值对的形式存储在request作用域中,key为String类型,value为Object类型JSP内置对象session和request都有这个方法
request.setAttribute(key,value);

取数据

通过String类型的key访问Object类型的value
request.getAttribute(key)

存取数据

//request作用域存储数据
req.setAttribute("admins",adminList);
//request作用取数据
request.getAttribute("admins");

重定向

重定向作用在客户端,客户端请求发送给服务器后,服务器响应给客户端一个新的请求地址,客户端重新发送新的请求

重定向与页面跳转

调用业务逻辑的Servlet中,编写代码:

// response.sendRedirect("目标URL");
resp.sendRedirect("index.jsp");		//重定向跳转到index.jsp页面

数据传递

sendRedirect跳转时,地址栏发生改变,代表客户端重新发送请求,属于两次请求

传递数据

获取数据

//传递数据
resp.sendRedirect("/WebProject_war_exploded/b?username=tom");   //传递数据为String类型,明文传递
//获取数据
String username = req.getParameter("username");

转发与重定向的区别

转发重定向
转发使用的是getRequestDispatcher()方法重定向使用的是sendRedirect()方法
浏览器URL的地址栏不变浏览器URL的地址栏改变
转发是服务器行为重定向是客户端行为
转发是浏览器只做了一次访问请求重定向是浏览器做了至少两次的访问请求
转发2次跳转之间传输的信息不会丢失重定向2次跳转之间传输的信息会丢失(request范围)
重定向的第二个请求一定是GET

转发和重定向总结:

当两个Servlet需要传递数据时,选择forward转发,不建议使用sendRedirect转发,因为sendRedirect是明文传递不安全

Servlet生命周期(四阶段)

Servlet 生命周期

Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:

在这里插入图片描述

实例化

用户第一次访问Servlet是,由容器调用Servlet的构造器创建具体的Servlet对象,也可以启动容器后立刻创建实例,使用如下代码可以设置Servlet是否在服务器启动时就创建

初始化

初始化阶段,init()方法会被调用,这个方法在javax.servlet.Servlet接口中定义,其中,方法以一个ServletConfig类型的对象作为参数

服务

客户端有一个请求时,容器会将请求ServletRequest与响应ServletRequest对象转给Servlet,以参数的形式传给service方法

销毁

Servlet容器(Tomcat)停止或者重新启动(Tomcat)都会引起销毁Servlet对象并调用destroy方法

实例:

package com.woniu.servlet2;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet(value = "/ls")
public class LifeServlet implements Servlet {
    public LifeServlet(){
        System.out.println("1.实例化");
    }
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("2.初始化");
    }
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("3.提供服务,接受请求,响应结果");
    }
    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void destroy() {
        System.out.println("4.销毁");
    }
}
重启或停止Tomcat即会输出销毁

在这里插入图片描述

到此这篇关于关于Javaweb的转发和重定向详解的文章就介绍到这了,更多相关Javaweb的转发和重定向内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯