• 复习日记-xml/tomcat/response/request


    xml:

      可扩展的标签语言

      标签自定义

      作用:存储数据

      书写规范:

        1.区分大小写

        2.应该有一个根标签

        3.标签必须关闭

        4.属性必须用引号括起来

        5.标签体中的空格或者换行、制表符等都是作为数据内容存在

        6.特殊字符必须转义

    xml组成部分:

        声明:<?xml ...?>

        标签:

            不能以xml开头、必须关闭、不能出现特殊字符

        属性:用引号引起来

        注释:

        CDATA:

          xml文件中的特殊字符必须转义,但是使用CDATA就可以不需要转义,直接原样输出

          cdata格式:

            <![CDATA[

              原样输出的内容

            ]]>

    /////////////////////////////////////////////////////////////////////////

    xml解析

      解析方式:

          1.sax解析:从上到下逐行解析,只能查询,不支持增删改

          2.dom解析:一次性将文档加载到内存中,形成一棵dom树,可以进行crud操作

      解析技术:

          JAXP:sun提供的dom和sax开发包

          JDom:dom解析方式

          jsoup:一种处理HTML特定解析开发包

          dom4j:常用的解析开发包,hibernate底层使用

    //////////////////////////////////////////////////////////////////////////

    反射:

      1.获取class对象的方式

          1.Class clazz = Class.forName("全限定名");

          2.Class clazz = 类名.class;

          3.Class clazz = 对象.getClass();

      2.通过class对象创建一个实例对象(相当于new类)

          object clazz.newInstance();

      3.通过class对象获取一个方法

          Method method = clazz.getMethod("方法名",Class ...  paramType);

              Class ... 表示参数个数可变、paramType表示参数类型

      4.方法执行;

          method.invoke(Object  实例对象,Object 参数);  例如:method(a,10,30);

    xml约束:一个xml文件只可以有一个DTD约束,可以有多个scheme约束

      作用:规定xml中可以出现哪些元素以及属性,以及它们出现的顺序

      约束的分类:

        DTD约束:struts2、hibernate等

        schema约束:tomcat、spring等

    DTD约束:

        和xml关联:

          内部关联

             格式:<!DOCTYPE  根元素名  [dtd语法]>

          外部关联-系统关联

             格式:<!DOCTYPE  根元素名 SYSTEM "约束文件的位置">

          外部关联-公共关联 

             格式:<!DOCTYPE  根元素名 PUBLIC   "DTD约束文件名称" "约束文件的位置">

    SCHEMA约束:

        一个xml文档可以有多个schema约束

        xml和schema的关联

          格式:

              <根标签   xmlns="..." ...>

              <根标签   xmlns:别名="..." ...>

          名称空间;

            关联约束文件

          例如:一个约束文件中有table,另一个约束文件中也有table,在同一个xml中同时引入这两个schema约束,一旦写一个table,应该使用哪一个约束呢?

             为了避免这种情况发生,可以给其中一个约束起一个别名,使用的时候若是没有加别名就代表来自于没有别名的约束文件

              例如a:table和table

          显然:在一个xml文件中只能有一个不起别名的schema约束

    tomcat:

      下载;

        .tar  .tar.gz这种结尾是提供给Linux系统使用的

        .zip  .exe这种结尾是提供给Windows系统使用的

    tomcat默认端口是8080,但是项目上线时基本修改为80端口,因为80是HTTP的端口号,且在浏览器中可以省略不写

    有可能出现的问题:在环境变量中配置了CATALINA_HOME(tomcat的地址),这会导致无论安装几个tomcat都只会启动该变量所注明的那个

    解决:删掉

    通过类加载器获取文件路径(处于classes目录下的文件)

    类.class.getClassLoader().getReousrce("文件路径").getPath()

    类.class.getClassLoader().getReousrceAsStream("文件路径")  返回一个流

    ////////////////////////////////////////////////////////////////

    response:

     302:重定向

     304:读缓存

     404:用户访问错误,资源不存在

     405:访问的方法不存在

     500:服务器内部错误

    常用方法:

      setStatus(int 状态码):针对于1xx、2xx、3xx   配合location响应头使用

      了解:

          sendError(int 状态码):针对于4xx、5xx

    常用响应头:

      location:重定向

      refresh:定时刷新

      content-type:设置文件的mime类型,设置响应流的编码及告诉浏览器用什么编码打开

      content-disposition:文件下载需要的响应头   

    重定向实现方式:

      1.response.setStatus(302);    response.setHeader("location","地址");

      2.封装以上两步:response.setRedirect("地址");  

    定时刷新:

      方案一:设置响应头refresh

      方案二:通过HTTP的<meta>标签  <meta  http-equiv=“refresh"  content="3;url=..."> 三秒以后跳转到url地址

    操作响应体:

      页面上要展示的内容

      常用方法;

        Writer getWriter():字符流

        ServletOutputStream  getOutputStream():字节流

        注意:自己写的东西用字符流,其余用字节流,但是这两个流不可以一起使用(互斥),当响应完成之后,服务器会判断流是否关闭,若没有服务器自动帮关闭

    处理响应的中文乱码:

      方式一:response.setContentType("text/html";charset=utf-8);  

      方式二:未封装前:response.setHeader("content-type","text/html;charset=utf-8"); 

    ////////////////////////////////////////////////////

    文件下载:

      下载方式:

        1.超链接下载

          若浏览器可以解析下载资源的MIME类型,则自动打开,若不能解析则下载

        2.编码下载  通过servlet完成

          <a href="...servletname?name=资源名">下载</a>

            1.设置文件mime类型  response.setContentType(类型)

            2.设置下载头信息  content-disposition

              response.setHeader("content-disposition","attachment;filename="+文件名)

            3.提供流 

              response.getOutputStream()

        扩展:使用commons-io工具包操作流

        扩展:通过response生成验证码

           验证码:通过Java生成的验证码放在session中,在后台和用户输入的进行对比

              作用:防止暴力攻击

    request:

    重要的请求头;

        user-agent:浏览器内核

        referer:页面来源,防盗链

    请求的中文乱码:

      get请求:参数追加到地址栏,会使用utf-8编码,服务器接收到请求之后,使用ios-8859-1解码,所以出现乱码

      post请求:参数存放在请求体中,服务器获取请求体时使用iso8859-1解码,也会出现乱码

      通用的方式:get和post都可以使用

          new String(参数.getBytes("iso8859-1"),"utf-8");

      针对post请求还有一种处理方式:只需要将请求流的编码设置成utf-8

          request.setCharacterEncoding("utf-8");

    扩展:URLEncode.encode(s,"utf-8");指定编码

       URLDecode.decode(s,"iso8859-1");指定解码

    中文下载扩展:

        中文名称的文件名下载的时候名称会出现乱码问题,导致找不到指定资源,因此需要iso--->utf-8

        常见的浏览器需要提供文件名称的utf-8编码的东西

        对于火狐浏览器需要提供文件名称的base64编码

    请求转发:一次会话,request域和session域数据共享

    请求转发和重定向的区别;

      重定向两次请求、地址栏改变,请求转发一次请求,地址栏不变

      重定向是从浏览器发送的,请求转发是服务器内部转发,路径不一样

      重定向不存在request域对象,请求转发可以使用request域对象

      重定向是response的方法,请求转发是request的方法

      重定向可以请求站外资源,请求转发不可以   

    //////////////////////////////////////////////////////////////////////////////////

    jsp: java server pages  Java服务器页面

    本质上是一个servlet,在HTML上嵌套Java代码

    运行在服务器端,处理请求、生成动态内容

    对应的Java和class文件在tomcat目录下的work目录

    注意:新建的jsp文件默认charset=iso,可以去eclipse修改默认设置   

    执行流程;

      1.浏览器发送请求,jspservlet找到对应的jsp文件

      2.服务器接收请求,JspServlet会帮我们查找对应的jsp文件

      3.服务器将对应的JSP页面翻译成.java文件

      4.jvm会将Java编译成.class文件

      5.服务器运行class文件,生成动态内容

      6.将内容发送给服务器,服务器组装成响应信息发送给浏览器

      7.浏览器接收数据,解析展示  

    session底层依赖于cookie 

    cookie:JSESSIONID=...

  • 相关阅读:
    苹果mac shell 终端 命令行快捷键——行首行尾
    mac 编译ffmpeg真简单!
    (2)小彩灯接收数据解析
    JSON数据解析(自写)
    ESP-手机--双向通信模式
    史上最全脉搏心率传感器PulseSensor资料(电路图+中文说明书+最全源代码)
    OpenSCAD 大白
    用OpenSCAD設計特製的遊戲骰子
    如何使用openscad绘制一个简单的键帽.
    OpenSCAD(1)基础教程
  • 原文地址:https://www.cnblogs.com/tfboy/p/10375091.html
Copyright © 2020-2023  润新知