位置: IT常识 - 正文

WEB核心【请求转发(阶段重点)】第六章(web主要的请求方式有几种)

编辑:rootadmin
WEB核心【请求转发(阶段重点)】第六章

目录

1:请求转发【阶段重点】

1.1:语法格式及转发使用

1.2:request域对象

1.3:小结:请求转发间做数据传递

1.4:请求转发访问受保护目录


1:请求转发【阶段重点】1.1:语法格式及转发使用

推荐整理分享WEB核心【请求转发(阶段重点)】第六章(web主要的请求方式有几种),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:web主要的请求方式有几种,http请求webservice,http请求webservice,web请求及响应过程,web核心是什么,web请求类型,web请求的完整过程是怎样的?,web请求类型,内容如对您有帮助,希望把文章链接给更多的朋友!

格式:forward:/要跳转的程序或者页面

forward:/index.html        跳转到项目根目录的index.html页面

forward:/demo/index.html      跳转到项目demo目录的index.html页面

forward:/d1?method = run1 跳转到项目d1程序的run1方法

入门案例:

web.xml:注册一个servlet程序

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>Demo1Servlet</servlet-name> <servlet-class>com.czxy.demo1.servlet.Demo1Servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Demo1Servlet</servlet-name> <url-pattern>/d1</url-pattern> </servlet-mapping></web-app>

Demo1Servlet:

public class Demo1Servlet extends BaseServlet { //访问run1方法时,run1方法在控制台打印run1,并且将程序跳转到 //01.html上 //注意:forward中的第一个/,代表项目的根目录,项目的根目录从当前项目的web目录开始 public String run1(){ System.out.println("run1"); return "forward:/01.html"; }}

小结:

forward:/资源路径

forward中的第一个/,代表项目的根目录,项目的根目录从当前项目的web目录开始

Servlet之间的跳转:

//访问run2,在控制台打印run2,将程序跳转到d1?method=run3,run3方法打印run3public String run2(){ System.out.println("run2"); return "forward:/d1?method=run3";}public String run3(){ System.out.println("run3"); return null;//禁止进行递归跳转}

 注意:请求转发不会修改地址栏路径,用户不知道服务器进行过跳转操作。

Servlet之间的跳转,传递参数

Person:  name   age

public class Person implements Serializable { private String id; private String name; private String age; //get/set/无参/有参/toString 自行创建}

Servlet

//访问run4,控制台打印run4,将程序跳转到d1?method=run5,传递name=xiaozhang&age=18,run5方法打印person数据public String run4(){ System.out.println("run4"); return "forward:/d1?method=run5&name=张三&age=18";}public String run5(){ Person person = toBean(Person.class); System.out.println(person); return null;}

 当前传递中文参数没有乱码风险,原因是:

 

post请求传递参数,并再次传递参数 

 run6.html

<form method="post" action="/day04_1/d1"> <input type="hidden" name="method" value="run6"/> 姓名:<input type="text" name="name" value="张三"/><br/> 年龄:<input type="text" name="age" value="18"/><br/> <input type="submit"/></form>

Demo1Servlet

//浏览器将post请求参数传递过来,请求转发到run7,并将person数据带给run7public String run6() throws ServletException, IOException { Person person = toBean(Person.class); System.out.println(person); //下面的注释语句,就是请求转发的完整代码 //getRequest().getRequestDispatcher("/d1?method=run7").forward(getRequest(),getResponse()); return "forward:/d1?method=run7";}public String run7(){ Person person = toBean(Person.class); System.out.println("run7"+person); return null;}

小结:

由ServletA请求转发到ServletB过程中,使用的是同一个请求信息(行、头、体)

WEB核心【请求转发(阶段重点)】第六章(web主要的请求方式有几种)

ServletA可以将请求数据请求转发到ServletB

扩展:若在请求转发中,请求参数需要发生变化:

//浏览器将post请求参数传递过来,请求转发到run7,并将person数据带给run7public String run6() throws ServletException, IOException { Person person = toBean(Person.class); System.out.println(person); //下面的注释语句,就是请求转发的完整代码 //getRequest().getRequestDispatcher("/d1?method=run7").forward(getRequest(),getResponse()); return "forward:/d1?method=run7&name=李四";}public String run7(){ Person person = toBean(Person.class); System.out.println("run7"+person); return null;}

请求转发过程中,请求体没有发生改变。

请求参数获取中,优先获取请求行,再获取请求体(新请求行参数覆盖了原来的请求参数)

1.2:request域对象

域对象:

相当于一个Map集合,在指定范围内可以进行数据传递和共享

ServletContext

HttpSession

HttpServletRequest---- 作用范围:请求转发之间

PageContext

run8.html

<form method="post" action="/day04_1/d1"> <input type="hidden" name="method" value="run8"/> 姓名:<input type="text" name="name" value="张三"/><br/> 年龄:<input type="text" name="age" value="18"/><br/> <input type="submit"/></form>

 Demo1Servlet

public String run8(){ getRequest().setAttribute("k1","v1"); return "forward:/d1?method=run9";}public String run9(){ System.out.println(toBean(Person.class));//请求参数 System.out.println(getRequest().getAttribute("k1"));//request作用域 System.out.println(getRequest().getAttribute("k2"));//request作用域 return null;}

1.3:小结:请求转发间做数据传递

目标: 熟练进行资源之间的内部跳转

①:在转发时,?参数列表形式进行拼接:

格式:return "forward:/资源路径?k1=v1&k2=v2";

优先级较高,会覆盖原来的同名参数

注意:该形式只能转发 字符串数据

②:在转发前,向request作用域设置键值对。

格式:getRequest().setAttribute("k",v);//value值Object

注意:该形式相当于转发间的map集合,可以转发一切数据

1.4:请求转发访问受保护目录

WEB-INF是受保护目录,里面的资源,浏览器不能直接访问

WEB-INF访问方式就是通过请求转发 跳转进来:

public String run10(){ //请求转发到web-inf里 p3.png return "forward:/WEB-INF/p3.png";}

请求转发:

return "forward:/WEB-INF/资源路径";

最后:        如果文章对您有帮助,就拿起小手赶紧给博主点赞💚评论❤️收藏💙 一下吧!         愿我们在未来的日子里。熠熠生辉!!!
本文链接地址:https://www.jiuchutong.com/zhishi/299658.html 转载请保留说明!

上一篇:图片的美白与美化(图片美白ps)

下一篇:前端实战|React18项目启动——pc端极客园项目前置准备(前端实战培训)

  • 苹果如何给app上锁(苹果手机怎么给app)

    苹果如何给app上锁(苹果手机怎么给app)

  • 组网技术的问题包括哪些(组网解决方案)

    组网技术的问题包括哪些(组网解决方案)

  • 天猫加速卡怎么抽(天猫新品流量加速包)

    天猫加速卡怎么抽(天猫新品流量加速包)

  • 笔记本白屏怎么退出(笔记本白屏怎么一键恢复步骤)

    笔记本白屏怎么退出(笔记本白屏怎么一键恢复步骤)

  • qq群被冻结了怎么解冻(qq群被冻结了怎么退群)

    qq群被冻结了怎么解冻(qq群被冻结了怎么退群)

  • 第一代applepencil的电量怎么看(第一代applepencil怎么充电)

    第一代applepencil的电量怎么看(第一代applepencil怎么充电)

  • ctrl enter是什么快捷键(ctrl+enter是什么意思)

    ctrl enter是什么快捷键(ctrl+enter是什么意思)

  • 有网却显示网络不给力(有网却显示网络错误怎么回事)

    有网却显示网络不给力(有网却显示网络错误怎么回事)

  • 收音机收不到台的原因(收音机收不到台的声音)

    收音机收不到台的原因(收音机收不到台的声音)

  • 微信握手什么意思(微信的握手是什么意思)

    微信握手什么意思(微信的握手是什么意思)

  • 微信有回音是设置了什么(微信有回音是设置了吗)

    微信有回音是设置了什么(微信有回音是设置了吗)

  • vivox20多久出来的 (vivox20什么时候出的手机)

    vivox20多久出来的 (vivox20什么时候出的手机)

  • 小米cc9e支持多少瓦快充(小米cc9e支持多大内存卡)

    小米cc9e支持多少瓦快充(小米cc9e支持多大内存卡)

  • 手机卡停机怎么查话费(手机卡停机怎么回事)

    手机卡停机怎么查话费(手机卡停机怎么回事)

  • qq预设数量上限怎么弄(手机qq预设账号上限了怎么办)

    qq预设数量上限怎么弄(手机qq预设账号上限了怎么办)

  • 为什么line打开会闪退(line为啥打不开)

    为什么line打开会闪退(line为啥打不开)

  • 苹果11几个卡槽(苹果11pro max参数)

    苹果11几个卡槽(苹果11pro max参数)

  • 天猫电子券怎么激活(天猫电子券怎么绑定到账号)

    天猫电子券怎么激活(天猫电子券怎么绑定到账号)

  • qq换了手机号不能验证怎么办(qq换了手机号不用了)

    qq换了手机号不能验证怎么办(qq换了手机号不用了)

  • 华为nova5耳机孔在哪(华为nova9耳机孔在哪里)

    华为nova5耳机孔在哪(华为nova9耳机孔在哪里)

  • QQ音乐怎么关闭自动下载(qq音乐怎么关闭好友可以看)

    QQ音乐怎么关闭自动下载(qq音乐怎么关闭好友可以看)

  • 华为m5电脑模式怎么用(华为m5电脑模式找不到)

    华为m5电脑模式怎么用(华为m5电脑模式找不到)

  • 知乎怎么匿名回答(知乎怎么匿名回复别人的评论)

    知乎怎么匿名回答(知乎怎么匿名回复别人的评论)

  • 无线路由器如何安装 无线路由器安装方法图文介绍(无线路由器如何桥接wifi信号)

    无线路由器如何安装 无线路由器安装方法图文介绍(无线路由器如何桥接wifi信号)

  • Vue前端表格导出Excel文件(vue table导出excel)

    Vue前端表格导出Excel文件(vue table导出excel)

  • 保单税优识别码图片
  • 税金及附加与应交税费的差额
  • 控股子公司增资扩股
  • 研发投入和研发支出的关系
  • 季末资产总额填错了要紧吗
  • 雇佣外籍劳工
  • 周转材料核算科目是什么
  • 一个公司帮另一个公司代付款
  • 股权转让印花税税目怎么填
  • 房地产开发预提费用
  • 小规模和一般纳税人的区别
  • 资产管理人该如何称呼
  • 未抵扣进项税会计分录
  • 小规模纳税人少计提的工资怎么办
  • 增值税专用发票和普通发票的区别
  • 文化建设事业费怎么计算
  • 进项税额抵扣不完怎么办
  • 季度收入超过30万但开票只有10万
  • 享受小型微利企业标准
  • 为什么win10系统更新不了
  • 扣缴义务人申报和综合所得年度自行申报
  • window的hosts文件
  • 进项加计扣除如何做分录
  • win11 pin失效
  • php图片库
  • 国外进口增值税税率
  • 金融机构贷款利息规定
  • 长期挂账的在建工程如何处理
  • 水资源税收费标准
  • 个人所得税部分缴纳
  • 金税三期登录不上
  • redis两种持久化方式的优缺点
  • 训练集验证集和测试集
  • sockas
  • 已申报未导入是什么情况
  • 旅行社专票开票内容的规定
  • 研发专利什么意思
  • 售后租回怎么理解
  • 微众银行贷款利率2023最新
  • 税务局开普票需要什么材料
  • 纳税人备案期限
  • db management
  • 流动资产损失计入营业外支出吗
  • 库存现金银行存款用什么凭证
  • 原材料报废收入账务处理
  • 增值税抵扣了,主要成本怎么算
  • 房产税征收标准2020
  • 承兑汇票多付退税怎么算
  • 外币资产汇兑损失计算公式
  • 产品质量问题扣款账务处理
  • 旅游业差额开票的票据可以累计一季度吗
  • 受托代销商品款计入存货吗
  • 什么情况下必须打狂犬疫苗
  • 跨年做进项税额转出
  • 简易计税项目可以抵扣进项税吗?
  • 收付实现制下收入包括增值税吗
  • 自增字段必须是主键吗
  • window8开机
  • mac怎样解压缩
  • centos虚拟机配置
  • solaris 安装
  • 卸载声卡驱动有什么影响
  • Win10 UWP红石版应用商店迎来更新:查找更新再换位置
  • win10周年更新版是什么意思
  • 程序中map是什么意思
  • win8打游戏
  • 如何设置ie8
  • 错误化
  • final exam是什么意思
  • javascript入门基础
  • 浅谈javascript网页编码特效论文
  • unity androidx
  • python中import导入模块的方法
  • python 解析
  • 国家财政税务局
  • 江苏税务个人所得税app怎么下载不了?
  • 进口汽车增值税怎么算
  • 财政云操作视频
  • 税务局风险管理股工作总结
  • 长沙税务服务热线
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设