当前位置 博文首页 > Empirefree:Servlet--核心内容汇总

    Empirefree:Servlet--核心内容汇总

    作者:Empirefree 时间:2021-06-19 19:23

    Servlet汇总

    因为看公司代码,有个cookie+jwt.Token登录验证接口,于是回顾下servlet、cookie、session、前后端分离restful、jwt.token相关内容。虽然现在流行的是网关封装各个接口,但是基础还是比较重要,需要重新复习。

    Servlet--基础理论、实战代码锻炼:https://how2j.cn/k/servlet/servlet-eclipse/558.html

    Servlet--拓展理论、实例参考链接:https://github.com/ZhongFuCheng3y/3y/blob/master/README.md

    csdn csdn


    ---

    目录
    • 背景.Servlet相关对象介绍?
      • 简介Servlet
    • 1.Servlet第一篇(tomcat、http协议)
      • 1.tomcat
      • 2.Http协议
    • 2.Servlet第二篇(request,response)
      • 1.request
      • 2.response
    • 3.Servlet第三篇(cookie,session)*
      • 1.Cookie
      • 2.Session



    ? 背景.Servlet相关对象介绍?

    简介Servlet

    ? 首先Tomcat是servlet容器,用以 接受和返回 服务端和客户端的请求(在此之前,没有tomcat,就使用socket进行监听处理)。

    ? 其次,在上述交互过程中,采用Http协议处理。HTTP协议是客户端和服务器交互的一种通迅的格式

    ? 最后,Servlet的生命周期即伴随内置tomcat的调用而产生,伴随tomcat的关闭而销毁。下面列出Servlet相关对象。

    • ServletConfig

    ? 通过此配置获取web.xml中参数

    • ServletContext

      ? tomcat启动时获取整个应用的配置文件。

    • Request、Response

      ? 分别对应http请求头和响应头

    • Cookie、Session

      Cookie:存储与客户端,存储用户身份。Session:存储与服务端,判断用户身份。



    ? 1.Servlet第一篇(tomcat、http协议)

    目前都是httpservlet实现servlet的方法,重写doget和dopost方法。

    1.tomcat

    ? tomcat底层是socket程序,也是jsp、servlet容器。

    ? 介绍tomcat中虚拟目录和虚拟主机

    ? 虚拟目录:文件不一定都放在webapps下,所以项目启动后要访问其他磁盘下的文件就需要配置虚拟目录

    ? 虚拟主机:一个tomcat中配置多个域名,这样就能通过多个域名访问到同一个tomcat中.


    2.Http协议

    ? Http协议:超文本传输协议,在客户端client和服务端server中交互

    ? Http1.0:client和server属于短暂连接,获取资源后就断开

    ? Http1.1:client、server保持连接,并且可以获得多个web资源



    ??2.Servlet第二篇(request,response)

    1.request
    #request参数介绍
    request.getRequestURL(): 浏览器发出请求时的完整URL,包括协议 主机名 端口(如果有)"
    request.getRequestURI(): 浏览器发出请求的资源名部分,去掉了协议和主机名"
    request.getQueryString(): 请求行中的参数部分,只能显示以get方式发出的参数,post方式的看不到
    request.getRemoteAddr(): 浏览器所处于的客户机的IP地址
    request.getRemoteHost(): 浏览器所处于的客户机的主机名
    request.getRemotePort(): 浏览器所处于的客户机使用的网络端口
    request.getLocalAddr(): 服务器的IP地址
    request.getLocalName(): 服务器的主机名
    request.getMethod(): 得到客户机请求方式一般是GET或者POST
    
    #浏览器中header信息
    host: 主机地址
    user-agent: 浏览器基本资料
    accept: 表示浏览器接受的数据类型
    accept-language: 表示浏览器接受的语言
    accept-encoding: 表示浏览器接受的压缩方式,是压缩方式,并非编码
    connection: 是否保持连接
    cache-control: 缓存时限
    
    2.response

    防盗链:某个珍贵资源B,需要通过链接A进来才能访问,所以对请求B的接口中需要加入防盗链的功能

            //防盗链
            String referer = request.getHeader("Referer");
            if (referer == null || !referer.contains("localhost:9090/huyuqiao")){
                response.sendRedirect("huyuqiao");
                return "盗取链接";
            }
            response.setContentType("text/html;charset=UTF-8");
            response.getWriter().write("正版链接");
    



    ??3.Servlet第三篇(cookie,session)*

    1.Cookie

    ? Cookie:在浏览器用以保存用户身份/浏览记录。结合其他技术(session,token,sso等)用以实现用户登录身份验证功能。

            //组装Cookie
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter printWriter = response.getWriter();
            String name = "胡宇乔";
            Cookie cookie = new Cookie("country", URLEncoder.encode(name, "UTF-8"));
            cookie.setMaxAge(2000);
    
            response.addCookie(cookie);
            printWriter.write("服务器颁布的cookie,保存了中文数据");
    
    
            //解码cookie
            Cookie[] cookies = request.getCookies();
            Arrays.stream(cookies).forEach(c ->{
                String cookieName = c.getName();
                try {
                    String value = URLDecoder.decode(c.getValue(), "UTF-8");
                    printWriter.write(name + "-----" + value);
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
    
            });
    
    2.Session

    ? Session:保存在浏览器(默认30分钟,关闭浏览器即消失),在登录注册中保存用户信息,然后前端可以通过el表达式提取出用户信息。

    #session获取、得到、设置、销毁
    HttpSession session = request.getSession
    httpSession.getAttribute("name")
    httpSession.setAttribute("name", "huyuqiao")
    session.removeAttribute("name")
    
    bk
    下一篇:没有了