精华内容
下载资源
问答
  • 在servlet中可能会牵扯到传值或者跳转的问题,可以能是 servlet之间互相跳转 ,也可能是 ...关于请求转发和重定向(二)--- 重定位 http://blog.csdn.net/u011832252/article/details/26099907

    在servlet中可能会牵扯到传值或者跳转的问题,可以能是servlet之间互相跳转,也可能是两个web应用程序之间互相跳转。这就出现了请求转发和重定向。


    请求转发:

    说道请求转发,不得不提到两个parameter和attribute

    parameterattribute
    参数名(String)参数值(String)参数名(String)参数值(Object)
    namexiaoli

    我们可以在客户端页面上通过<form>表单进行数据提交,在服务器中,通过request来提取


    通过getParameter方法对客户端页面提交的数据进行接收

    String name = request.getParameter("userName") 

    attribute则需要通过setAttribute方法,在服务器端进行输入添加。

    request.setAttribute("xuehao", "123456");

    而我们传值的办法,就是通过传递request来达到传值的目的

    (request里面的值包括表单上可以通过parameter方法获得的的参数和服务器端通过setAttribute方法输入的。)



    RequestDispatcher wxm = request.getRequestDispatcher("/LiServlet");
    wmx.forward(request, response);//LiServlet是下一跳的servlet
     
    

    接下来就是通过上面的语句进行请求转发了。

    请求转发的特点:

    1.请求转发需要RequsetDispatcher,最后通过forward方法传递request和response

    2.request数据从第一个servlet 到第二个servlet不会丢失,因为是同一个request

    3.转发只能web应用程序内部进行转发

    4.如果第一个servlet请求方法是doGet,那么转发给其他servlet的方法都是doGet,及所有的请求方法类别一致

    5.请求转发的地址栏显示的依然是第一个请求资源路径(可能会导致表单的重复提交



    关于请求转发和重定向(二)--- 重定位

    http://blog.csdn.net/u011832252/article/details/26099907


    展开全文
  • 后端提供了一个接口,正常post请求,但是此接口返回结果是 302 , 页面自动重定向到 结果页面。 如下图所示,我们请求到这个 302 接口之后其实是希望直接打开下面那条 200 请求的 index.html 页面。 下图是在浏览器...

    业务场景描述

    后端提供了一个接口,正常post请求,但是此接口返回结果是 302 , 页面自动重定向到 结果页面。
    如下图所示,我们请求到这个 302 接口之后其实是希望直接打开下面那条 200 请求的 index.html 页面。
    下图是在浏览器中测试的 ajax 请求,那么此时我们需要在小程序中实现请求接口直接打开页面的功能。
    在这里插入图片描述

    预期目标

    在这里插入图片描述

    第一次尝试(失败)

    我们知道的是,小程序中只能使用人家提供的 API ,不能自己写,所有的封装和变换都是在 wx.request 这个 API 的基础上,底层是不能变的。

    所以要发起请求我们只能使用 wx.request ,看代码:

    const data = {
          pf: '2',
          appId: 'mgszwfwlzt',
          sign: this.data.sign,
          taskId: this.data.qlsxBasicInfo.TaskCode,
          timestamp: this.data.timeStamp,
        }
        wx.request({
          url: 'https://*********/bjpjList.do',
          header: {
            'content-type': 'application/x-www-form-urlencoded'
          },
          data,
          method: 'POST',
          success: function(response) {
            console.log(response)
          }
        })
    

    按照我们平时请求接口的写法,我们请求一下这个 bjpjList.do 的接口,看下 network 监听到了什么:

    在这里插入图片描述

    在小程序中我们其实也监听到了 bjpjList.do 的请求,但是一闪而过,立马变成了 index.html 的请求,返回结果也直接是我们 index.html 的代码

    在这里插入图片描述

    百度了很多说可以在 response.header 里面获取到 location, 也就是 302 重定向 index.html 的地址,我们展开 response 看看到底有没有

    在这里插入图片描述
    可以看出,小程序人家直接帮我们请求重定向之后的页面了,没给我们权利去监听这个重定向的地址,感觉没戏了,可以页面地址看得到拿不到,那我不信,打开官网看看官网提供的 API

    在这里插入图片描述
    发现还有别的 API 我们打开看看 onHeadersReceived

    这个 API 官网的解释是监听 HTTP Rresponse Header 事件

    这不就是我们要的么,监听我们发起 HTTP 请求的头部,去读取重定向之后的地址

    我们接着写,代码如下:

    const data = {
          pf: '2',
          appId: 'mgszwfwlzt',
          sign: this.data.sign,
          taskId: this.data.qlsxBasicInfo.TaskCode,
          timestamp: this.data.timeStamp,
        }
        wx.request({
          url: 'https://********/bjpjList.do',
          header: {
            'content-type': 'application/x-www-form-urlencoded'
          },
          data,
          method: 'POST',
          success: function(response) {
            console.log(response)
          }
        }).onHeadersReceived(res => {
          if (res.header.location) {
            wx.hideLoading()
            this.setData({
              pageLink: res.header.location
            })
          }
        })
    

    我们发现开发工具上还是 重定向之后的头部信息,不满足情况

    在这里插入图片描述

    可以鉴于有时候真机测试和开发工具的测试结果是不一样的,我们使用真机测试一下(我使用的安卓手机)

    在这里插入图片描述

    可以看到开发工具上没有直接跳转,而且监听到了两次 onHeadersReceived 事件:

    在这里插入图片描述
    在这里插入图片描述
    图中可知 第一次监听事件其实获取到了 这个 location 地址,那我们就写了上面的代码,直接使用 webview 标签跳转就好了

    安卓手机全部Ok没问题,上体验版之后,苹果手机一律打不开,每次苹果手机都作妖都习惯了,我们换个苹果在测试一下

    使用 iphone 6s Plus 测试,发现我们的 onHeadersReceived 事件和我们开发工具上的情况是一样的,只能监听到一次,还是获取不到 location 地址

    我们想投机取巧的方式失败

    PS:至于百度说把请求方式换成 HEAD 这样的方式,如果你后端只支持 POST 请求方式,请求都不会成功,或者你和后台能商量修改当然最好。这里我们没得权限修改后端,继续自己想办法!

    第二次尝试(成功)

    这里其实你会发现小程序里面的 API 已经没有什么可用的了,那我们只能想别的办法。

    这种方式是使用跳转 H5 的方式,用浏览器去处理 302 请求自动跳转

    在这里插入图片描述

    由上图中看出,我们已经将请求接口的功能交给了 h5 的空白页面,提交请求后,直接跳转结果页面,这是浏览器默认的

    也就是说小程序对 302 重定向的方式 无能为力

    因为页面默认是 form 表单提交,提交成功后默认跳转,看一下大致代码

    在这里插入图片描述
    我们读取到 小程序传入 H5 页面的参数并将字符串转换成对象形式

    然后使用了关键的 form.submit() 提交表单

    在这里插入图片描述

    PS:如果不使用 form.submit() 方式,使用 ajax 请求还是不能自动跳转

    把 h5 页面放到服务器上,带出网络地址

    然后把小程序中的跳转地址修改

    在这里插入图片描述
    如图所示,记得加入 业务域名

    到这里问题就完美解决了,这里是我们的页面加载很慢的问题,不是代码问题,不用担心

    在这里插入图片描述

    如果大家有更好的方式也可以直接私信我!感谢!

    展开全文
  • 关于请求路径正确,一直404的原因

    千次阅读 2020-07-29 23:30:56
    关于请求路径正确,一直404的原因 今天在做一个springboot项目是遇到了一个很头疼的问题,请求路径正确,但是一直404 在解决问题之前,我们先知道下@ComponentScan这个注解, 在springboot项目中,在启动类上使用这...

    关于请求路径正确,一直404的原因
    今天在做一个springboot项目是遇到了一个很头疼的问题,请求路径正确,但是一直404
    在解决问题之前,我们先知道下@ComponentScan这个注解,
    在springboot项目中,在启动类上使用这个注解要注意:
    当用@ComponentScan了这个注解,原来@SpringBootApplication这个注解的扫描规则将失效,要想让以前@SpringBootApplication这个注解扫描的包被扫描到,必须把包路径加入@ComponentScan中**@ComponentScan({"com.atguigu.crowd.api","com.*"})**
    希望能解决问题

    展开全文
  • 关于请求报文和响应报文的详解

    千次阅读 2019-01-17 15:31:58
    请求报文包括三个部分,第一部分是请求行,第二部分是Headers,第三部分是Body。 2.1 请求请求行包括三个部分,第一个是方法。常见的有get,post,put,delete。第二个是路径,也就是服务器地址后面的部分,...

    1 什么是HTTP请求

     HTTP的定义是超文本传输协议,是一种网络传输协议,位于协议族的应用层中。

    2 请求报文

    请求报文包括三个部分,第一部分是请求行,第二部分是Headers,第三部分是Body。

    2.1 请求行

    请求行包括三个部分,第一个是方法。常见的有get,post,put,delete。第二个是路径,也就是服务器地址后面的部分,比如 https://mp.csdn.net/users,这个users就是路径,第三个是http的版本,当前的主流版本是http 1.1。具体格式如下,

    GET  /users  HTTP/1.1

    2.1.1 请求方法

    请求方法主要有四种,其中开发中用的最多的是get和post,另外还有put和delete。其中,get用在获取资源,并且它是没有Body的。post用在添加或修改资源,发送的内容写在Body里面。put和post比较相似,唯一的不同点是put只能用在修改资源,而post比它更为广泛,不仅可以用于修改资源,还可以用于添加资源。从这点上讲,put能做的post都能做。最后一个是delete,delete用在删除资源,也是不发送Body的。

    另外,除了post外,其它三个都是幂等的。那么,什么是幂等呢,就是这个操作,操作一次或者操作多次,结果是一样的。比如你发送某个请求,获取一次资源或者获取多次资源,结果是一样的。其实,这个东西挺简单的,想明白了就懂了,你把一个东西从1修改成2,它是2,你再修改成2,它还是2。所以get,put和delete是幂等的。

    2.2 Headers

    Headers有很多,这里只介绍一些常用的。                                                                                                                                        Content-Type:内容的类型,常见的有   text/html ---- 用于浏览器间响应                                                                                                                                                        x-www-form-urlencoded ---- 纯⽂本表单的提交⽅式                                                                                                                          multitype/form-data ---- 含有⼆进制⽂件时的提交⽅式                                                                                                                      application/json ---- json格式

    Content-Length:指定 Body 的⻓度(字节)

    Location:指定重定向的⽬标 URL

    User-Agent:⽤户代理,即是谁发送或接受响应的,可以用来区分浏览器发送的请求还是手机发送的请求。

    3 响应报文

    响应报文也包括三个部分,第一部分是状态行,第二部分是Headers,第三部分是Body。

    3.1 状态行

    状态包括三个部分.第一个是http版本,常用的还是1.1。第二个是状态码,常见的有200,表示成功,404,表示找不到内容。第三个是状态信息。具体格式如下,

    HTTP/1.1  200 OK

    3.1 状态吗

    1xx:临时性消息。如:100 (继续发送)                                                                                                                                2xx:成功。最典型的是 200(OK)、201(创建成功)                                                                                                          3xx:重定向。如 301(永久移动)、302(暂时移动)                                                                                                                4xx:客户端错误。如 400(客户端请求错误)、404(找不到内容)                                                                                      5xx:服务器错误。如 500(服务器内部错误)

    到此,请求报文和响应报文的一些基础知识已经介绍完毕了。

    展开全文
  • 关于请求状态400的问题

    千次阅读 2019-03-27 10:17:56
    **400 一眼看去的确是前端提交的JSON数据格式存在问题(80%左右的概率都是前端),但是有种是后端的(不管是Java,还是Node,如果没有按照他们的要求传递JSON格式(你不知道的格式情况下20%的概率都是后端的),也会...
  • request.getReader()根据表单提供提交数据的参数不同,而请求参数方法也不同 enctype=application/x- www-form-urlencoded 这种编码方式是默认的编码方式。编码后的结果通常是field1=value2&field2=v
  • 关于请求被挂起页面加载缓慢问题的追查 缘起 有一个Dashboard的页面大约有十几个图表,每一个图表是一个ajax请求。 突然有一天改了页面中间几个图表的查询逻辑,导致ajax请求响应时间比较长。 然后就出现了图表...
  • 关于请求URL过长报414的问题

    万次阅读 2017-10-30 17:15:45
    关于请求URL过长报414的问题问题如下: post请求携带超长url,报下图错误 解决: 1.涉及到参数特别多,然后对参数值安全性又有一定的要求,那么就需要考虑:对字符串加密JS加密url生成已加密的字符串uri 加密:...
  • 仔细一看,不对昂,跨域一般会再错误信息里提示请求源的路径啊,仔细一看,是request header,我经验太少啊,看不懂了 然后我让他截图NetWork的图,是这样的,重点已圈出(红框) 结果出来了,后端跨域是解决了,但...
  • 一、请求 表单里的参数是字符,在数据传输的过程中编码为utf-8的字节,tomcat中默认以iso-8859-1的方式解码,所以必须要修改解码是查询的码表: 如果是post请求,在获取参数代码之前: request.setCharacterEncoding...
  • 这段时间一直在着手于RESTful风格的接口...为此我好好研究了一下关于Springmvc请求这方面的内容,也借鉴了前人的经验写下这篇博客,记录下我的学习心得。 一、@RequestMapping简介 @RequestMapping是用来映射URL,它
  • 今天在解决请求转发和重定向的问题的时候发现了一个问题,就是在请求转发之后会出现中文乱码的情况。 在刚开始的时候以为是没有设置response的encoding。后来设置了之后,发现还是乱码。检查之后,发现自己写了...
  • 今天在项目开发中,前端页面使用ajax访问springmvc的控制器,发现路径是对的,进入了控制器,但是在数据返回的时候前端就报406的错,搞了一下午不...示例代码中请求代码,后台代码均正常,且有返回信息。如下图: ...
  • 所以请求方法为GET的表单,其action属性中不能携带参数,如果要实现参数的传递,有如下三种方式:  1、使用POST方式进行传递,可以在action中添加参数;  2、如果要用GET方式,那么可以采用上述的方式,通过...
  • 最近在接入百度AI文本纠错API,要求使用JSON格式的结构体来描述一个请求的具体内容。接入请求说明如下: 代码如下: private class Body { public string text = ""; } IEnumerator ErrorCorrection() { ...
  • 关于请求返回的500,404.等错误

    千次阅读 2016-05-26 10:36:18
    400错误是由于不正确的请求造成的,说明正在搜索的网页可能已经删除、更名或暂时不可用。 错误代码:401.1 401.1错误是由于登陆失败造成的,说明没有权限查看该目录或网页。 错误代码:401.2 401.2错误是由于服务器...
  • 关于请求报错-ReferenceError: $ is not defined
  • 最近开发一个项目,项目前后端完全分离...这样前台发送请求后会出现跨域问题,针对跨域问题,解决思路为处理响应头,步骤如下 1.定义一个过滤器,在web.xml中配置 ajaxFilter com.tbms.filter.AjaxFilter aja
  • 关于http请求传参的总结

    万次阅读 2018-06-20 00:19:12
    关于请求中的Form Data、Request Payload区别 R equest Payload:Content-Type 不为 application/x-www-form-urlencoded的请求, 只要是 R equest Payload类型的参数,后台的数据都需要我们自己处理,tomcat并不会...
  • axios原生请求设置请求

    万次阅读 2018-09-17 22:40:44
    工作中项目使用的是前端的Vue框架,请求用的是自己封装好的axios,api请求均已封装成方法,在页面中使用时直接import 然后写在自己的自定义触发方法中即可。 然而遇到一个棘手的问题就是有一个超级大的表单无论怎么...
  • 关于options请求

    千次阅读 2018-10-31 15:51:00
    有时我们在浏览器中发现发送的ajax请求自动请求两次,第一次是options请求,第二次才是你自己发送的get或post请求。 有时我们也会发现,自己用的get或者post方法请求的,浏览器只有一个options请求。自己的get或post...
  • HttpServletRequest获取http请求参数问题

    千次阅读 2018-04-24 12:57:56
    今日用springMVC配置请求路径,前端发HTTP请求后报出如下错误:No modifications are allowed to a locked ParameterMap:意思是不允许对锁定参数进行修改。后台参数是通过 request.getParameterMap()获取,直接...
  • Easymock关于post请求

    千次阅读 2019-07-05 00:10:30
    Easymock关于post请求快速上手 章节1 首先我们先创建一个post请求的接口,如下 对于post请求,easymock内置了一个_req对象,通过 _req.body可以设置参数: _req.body.username ===‘admin’,当axois.post(url,{...
  • 关于HTTP请求中断问题

    千次阅读 2019-10-04 14:20:51
    这时候,由于HttpConnection.getResponseCode()请求是阻塞的,我们的程序一般是单独线程去请求数据,该线程就会永远的等在那,并且事后即使连上了,接收到的数据一般都已经是我们抛弃的了.此时我们很想在请求超时的时侯将...
  • 请求转发与响应重定向

    千次阅读 2016-12-14 23:18:05
    当用户请求服务器的A.jsp页面时,但是A.jsp不知道怎么处理该请求,但知道B.jsp能够处理该请求,于是A.jsp告诉用户,B.jsp能处理这个请求,然后浏览器重新再根据A.jsp返回的B.jsp的地址,重新请求B.jsp。 “`...
  • Python爬虫:关于scrapy模块的请求

    万次阅读 多人点赞 2018-06-22 16:56:02
    使用scrapy写爬虫的时候,会莫名其妙的被目标网站拒绝,很大部分是浏览器请求头的原因,现在一起来看看scrapy的请求头 工具准备 开发环境python2.7 + scrapy 1.1.2 测试请求头网站:...
  • 关于在GET请求中使用body
  • iphone 关于ajax请求使用FormData的问题

    千次阅读 2018-08-02 09:28:50
    * 实际请求时:发现在iphone中在input[type=file]里面有内容的时候是可以成功请求的; * 但是当input[type=file]里面内容为空的时候却不能成功发送请求 * (备注:Android机没遇到此情况,由此断定,是浏览器内核...
  • 关于在GET请求中使用body

    万次阅读 多人点赞 2019-05-06 19:38:18
    今天有人问我,为什么发到后端的请求400了,我说肯定是参数不对,你去检查检查GET、POST之类的方法写没写对,要么就是字段没对上,无非是这几个问题。然后他说检查过了,没问题啊;我不太相信,但是看了看前端发送的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,695,640
精华内容 678,256
关键字:

关于请求