zoukankan      html  css  js  c++  java
  • get 与 post 请求方式

    get 与 post 请求方式的区别:

    get : method="get" 、地址栏、超链接(<a href="xx")请求方式默认都属于 get 提交方式。

    但是地址栏能够容纳的信息有限不能超过5KB,如果请求数据太大会报错。

    get 方式会在地址栏显示请求信息,post 不会显示。文件上传操作必须是 post

    5、统一请求的编码

    get 方式请求如果出现乱码,把tomcat8(使用UTF-8的编码)的JSP代码复制到tomcat7(使用的是ios-8859-1编码)后出现了乱码的情况。

    解决办法:

    1)统一每一个变量的编码(每个变量都要转一次编码)使用new String(旧编码,新编码)

    image-20200716174600768

    2)修改server.xml一次性的更改 tomcat7 默认 get 提交方式的编码(utf-8)

    在包含端口号的标签处添加 get 请求方式的编码URIEncoding="UTF-8"

    post 请求方式下修改编码:

    image-20200716175224450

    6、response响应对象

    void addCookie(Cookie cookie):服务端向客户端增加 Cookie 对象。

    void sendRedirect(String location) throws IOException:重定向,页面跳转的一种方式。

    login.jsp登陆页面代码,输入登入信息后会到check.jsp页面中检查信息是否正确:

    image-20200716181648274

    ckeck.jsp:验证信息,信息正确会重定向success.jsp页面

    image-20200716181821424

    success.jsp返回登入成功的信息

    image-20200716181924975

    结果跳转到了success.jsp页面,但是没有返回传入的name属性值,导致数据丢失。

    将跳转方式改为请求转发

    返回结果:返回了name属性值,但是页面还是停留在check.jsp的页面。

    请求转发与重定向的区别:

    image-20200716183246236
    请求转发 重定向
    地址栏是否改变 不变(check.jsp) 改变(success.jsp)
    是否保留第一次请求时的数据 保留 不保留
    请求的次数 1 2
    session 服务端

    Cookie (客户端,不是内置对象):Cookie是有服务端产生的,再发送给客户端保存,相当于本地缓存的作用,可以提高访问服务端的效率,但是安全性较差。是以name=value的形式存在。

    存在于javax.servlet.http.Cookie包下提供以下几个方法:

    public Cookie(String name,String value):构造方法

    String getName():获取name

    String getValue():获取value

    void setMaxAge(int expiry):最大有效期(秒)

    1)服务端准备Cookie:response.addCookie(Cookie cookie)服务器向客户端发送Cookie对象。(响应的时候发送)

    image-20200717104945391

    2)页面跳转(转发,重定向):将服务端的 cookie 带入客户端。

    3)客户端获取cookie:request.getCookies()

    image-20200717105233647

    注意:

    1)服务端增加cookie:response对象;客户端获取对象:request对象

    2)不能直接获取某一个单独对象,只能一次性将全部的 cookie 拿到。

    session :会话。(开始 -> 结束,如打开浏览器到关闭浏览器的整个过程),是保存在服务端的。

    session机制:客户端第一次请求服务端时,服务端会产生一个 session 对象(用于保存该客户信息)并且每个session 对象都会有唯一一个sessionID(用于区分其他session) -> JSESSIONID(会存入cookie中);服务端产生一个cookie,该cookie的 name=JSESSIONID,value=服务端sessionID值,然后服务端响应客户端的同时将该cookie发送给客户端,因此实现客户端(cookie里的jessionid和session 里的sessionid)和服务端一一对应。

    session 的性质:

    • session 存储在服务端
    • session 是在同一个用户(客户)请求时共享
    • 实现机制:第一次客户请求时产生一个sessionID并复制给cookie的jessionID然后发给客户端。

    session 的方法:

    String getId():获取sessionID

    boolean isNew() :判断是否是新用户(第一次访问)

    void invalidate():使session全部失效(用户退出登录、注销)session.invalidate();

    session.removeAttribute("uname");使某一个 session 失效。

    注意:这里的session 对象是由HttpSession(java.servlet.http)类产生的。

    session.setAttribute("uname",name);:登录成功后把从客户端获取的name值给服务端的变量uname

    String name=session.getAttribute("uname");:获取服务端的session中的uname值。

    void setMaxInactiveInterval():设置最大有效非活动时间(如人离开了长时间停留没有操作响应超时会让用户重新登录)

    关于request的作用域问题:

    request数据同一次请求有效。

    场景:登录成功(login.jsp)时会返回欢迎某用户的页面(check.jsp),然后在地址栏敲回车(相当于在check.jsp页面发出第二次请求)会报空指针异常即从服务端返回的值为空;但是按F5刷新却能返回值。

    分析:在地址栏敲回车相当于在 check.jsp 页面发出第二次请求,而request数据只在同一次的请求下有效;刷新时会自动重新在 login.jsp 页面将数据发送给服务端,然后服务端返回数据,这时是在同一次请求下的操作。

    session同一次会话共享。

    场景:在同一个浏览器登录淘宝成功一次后,打开新的淘宝页面时显示的也是登录状态,当换另一个不同的浏览器登录时则需要重新登录账号。

    分析:同一个浏览器访问服务器算作一次会话,同一次会话的用户信息共享;不同浏览器相当于不同的对象访问服务器,属于不同的会话。

    session cookie
    保存的位置 服务端 客户端
    安全性 较安全 较不安全
    保存的内容 Object String
  • 相关阅读:
    python—Celery异步分布式
    python 安装虚拟环境步骤
    同源策略:
    git 的用法和命令
    一分钟搞定AlloyTouch图片轮播
    JavaScript学习总结(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例
    CSS3与页面布局学习总结(八)——浏览器兼容与前端性能优化
    移动前端UI选择
    你必须收藏的Github技巧
    HTML5 学习笔记(二)——HTML5新增属性与表单元素
  • 原文地址:https://www.cnblogs.com/gyunf/p/13343294.html
Copyright © 2011-2022 走看看