Javaweb第五天

一、请求转发RequestDispatcher

1、什么是请求转发:
request.getRequestDispatcher(URL地址).forward(request, response)
  • 客户端发送请求,Servlet做出业务逻辑处理。
  • Servlet调用forword()方法,服务器Servlet把目标资源返回给客户端浏览器
  • 可以访问WEB-INF下的文件,WEB-INF的文件一般是需要一定的权限才可以访问

注意:在浏览器地址栏中不会显示出转发后的地址,属于服务器内部转发,整个过程处于同一个请求当中,所以转发中数据的存取可以用request作用域 

二、EL表达式

1、什么是EL表达式?
EL表达式的格式都是以 ${ }表示。例如 $ {userinfo}代表获取变量userinfo的值,${对象.属性},可以有多层操作
当EL表达式中的变量不给定范围时,则默认在page范围查找,然后依次在request、session、application范围查找,如果找到不再继续找下去,但是假如全部的范围都没有找到时,就回传""
可以用范围作为前缀表示属于哪个范围的变量,例如:${pageScope.userinfo}表示访问page范围中的userinfo变量
2、属性范围在EL中的名称

  • 对比:

    • <%= (String)request.getAttribute("name")%> 等价于 ${name}

三、请求重定向sendRedirect

1、什么是请求重定向?
  • 客户端发送请求,Servlet做出业务逻辑处理
  • Servlet调用response.sendRedirect("xxx.jsp")方法,把要访问的目标资源作为response响应信息发给客户端浏览器
  • 客户端浏览器重新访问服务器资源xx.jsp,服务器再次对客户端浏览器做出响应
  • 请求重定向,不能访问WEB-INF下的文件,浏览器上的窗口地址会改版,可以用于跳转第三方地址(但需要加上http或者https,不然会被浏览器认为是内部资源跳转,比如https://xdclass.net)或者应用里面的其他Servelt、jsp等

下图是重定向的流程图: 

2、注意点:

1、 重定向是取不到request中的存储的数据,如果当前servlet是重定向,浏览器可以看到两个请求

2、调用sendRedirect()方法,会在响应中设置Location响应报头(302),这个过程对于用户来说是透明的,浏览器会自动完成新的访问

3、重定向路径问题:如果没有加 http 开头,则认为是当前应用里面的servlet重定向,默认加上应用上下文;如果有加http则会使用配置的全路径进行跳转

4、如果请求转发可以满足需要时,尽量使用请求转发,而不是重定向,效率性能更好。一是取值原因,一般取值都在同个请求里面;二是转发只有一个http请求,而重定向有两个http请求,这些请求会占用我们的网络资源,所以越少请求越好。

应用场景:注册登录时,点击微信可以跳转到用微信扫码登录,或者点击商品下单时,出现扫码二维码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值