美文网首页
JAVA简答(三)

JAVA简答(三)

作者: 大脸猫猫脸大 | 来源:发表于2022-01-05 14:46 被阅读0次
    1. 什么是JDBC?
      JDBC(Java DataBase Connectivity),是一套面向对象的应用程序接口(API),制定了统一的访问各类关系数据库的标准接口,为各个数据库厂商提供了标准的实现。通过JDBC技术,开发人员可以用纯Java语言和标准的SQL语句编写完整的数据库应用程序,并且真正地实现了软件的跨平台性。
    • 通常情况下使用JDBC完成以下操作:
      ①同数据库建立连接;
      ②向数据库发送SQL语句;
      ③处理从数据库返回的结果;
    • 驱动(Driver)在JDBC中的角色
      jdbc本身是一套接口,驱动其实就是它的实现类,只有提供了驱动才能与对应的数据库建立连接的通道。驱动必须要提供java.sql包下面这些类的实现:Connection, Statement, PreparedStatement,CallableStatement, ResultSet和Driver。
    • Class.forName()方法
      Class.forName(xxx.xx.xx)的作用是初始化参数指定的类,并且返回此类对应的Class 对象,即要求JVM查找并加载指定的类。forName() + newinstance()new的作用相当,如A a =(A) Class.forName ("pacage.A").newInstance()这和 A a =new A();是一样的效果。
      JDBC中使用class.forname()加载驱动。
    1. PreparedStatement比Statement有什么优势?
      PreparedStatements作为statement的子类,继承了statement的所有方法
    • PreparedStatement是预编译的,性能会比Statement好
    • PreparedStatement可以防止sql注入,安全性比Statement高
    • PreparedStatements可以写动态参数化的查询,提高了代码的可扩展性与可维护性
    1. 数据库连接池是什么意思?
      数据库连接的建立、关闭资源消耗巨大。
      传统数据库访问方式:一次数据访问对应一个物理连接,每次操作数据库都要打开关闭该物理连接,系统性能严重受损。
      解决方案:数据库连接池。系统初始运行时,主动建立足够足够的连接,组成一个池,每次应用程序请求数据库连接时,无需重新打开连接,而是从池中取出已有的连接,使用完后,不再关闭,而是归还。

    2. 什么是RMI?

    • 定义:Remote Method Invocation,远程方法调用,是Java所特有的分布式计算技术。其基本原则就是把对象的使用和对象的创建相分离,它允许运行在一个Java虚拟机上的对象调用运行在另一个Java虚拟机上的对象的方法。
    • 开发步骤:
      ①定义一个远程接口(远程接口必须继承接口,每个方法必须抛出远程异常,方法参数和方法返回值都必须是可序列化的
      ②实现远程接口
      ③定义使用远程对象的客户程序
      ④产生远程访问对象的桩和框
      ⑤注册远程对象
      ⑥运行服务器和客户程序
    • RMI体系结构
      ①存根和骨架层(Stub and Skeleton layer):这一层对程序员是透明的,它主要负责拦截客户端发出的方法调用请求,然后把请求重定向给远程的RMI服务。
      ②远程引用层(Remote Reference Layer):RMI体系结构的第二层用来解析客户端对服务端远程对象的引用。这一层解析并管理客户端对服务端远程对象的引用。连接是点到点的。
      ③传输层(Transport layer):这一层负责连接参与服务的两个JVM。这一层是建立在网络上机器间的TCP/IP连接之上的。它提供了基本的连接服务,还有一些防火墙穿透策略。
    • java.rmi.Naming
      该类主要用于存储或获取远程对象的引用,参数是是URL格式的String。
      bindrebind方法注册对象,把对象与一个名字name绑定。比如,通过Naming.rebind("//localhost/MyServer", new ServerOperation());ServerOperation对象赋给一个URI,让客户端可以通过这个URI访问该对象。其中bind需要未绑定的地址,否则将会报错。
    • 分布式垃圾回收(DGC)
      当客户机创建(序列化)远程引用时,会在服务器端 DGC 上调用 dirty()。当客户机完成远程引用后,它会调用对应的 clean() 方法。
    • Marshallingdemarshalling
      Marshalling就是object->xml,把内存对象跨网络传递到另一台主机或者是持久化到存储,demarshalling是其反过程。
    1. 什么是Servlet?
      servlet是基于java语言的web服务器端编程技术,运行在servlet容器中的java类,它能处理客户端的http请求并产生http响应。
    • 体系结构:
      Servlet类 ← GenericServlet类 ← HttpServlet类 ← MyServlet类(自己建的类) (←代表继承)
      ①GenericServlet类实现了Servlet和ServletConfig接口。实现了除了service()之外的其他方法,在创建Servlet对象时,可以继承GenericServlet类来简化程序的代码,但需要实现service()方法。
      ②HttpServlet类继承了GeneriServlet类。实际开发中,通常继承HttpServlet类,重写我们需要的doGet(),doPost()请求即可。
    • 使用过程
      ①init()初试化Servlet
      ②service()相应Servlet请求
      ③destroy()销毁Servlet
    • doGetdoPOST
      分别用于处理get和post请求。Get是路径传参,效率高,安全性差;POST是实体传参,效率低,安全性好。
    • Servlet链(Servlet Chaining):是把一个Servlet的输出发送给另一个Servlet的方法,依次类推。链条上最后一个Servlet负责把响应发送给客户端。提供了将一个servlet的输出重定向为另一个servlet的输入的能力,这样就可以划分工作。
    • 判断Servlet请求来源

    request.getRemoteAddr();//ipaddr
    request.getRemoteHost();//主机名
    request.getRequestURL();//返回全路径
    request.getRequestURI();//返回除去host(域名或者ip)部分的路径
    request.getContextPath();//返回工程名部分,如果工程映射为/,此处返回则为空
    request.getServletPath();//返回除去host和工程名部分的路径

    1. 什么是JSP
    • jsp的9个内置对象

    request:封装客户端的请求,其中包含来自GET或POST请求的参数;
    response:封装服务器对客户端的响应;
    pageContext:通过该对象可以获取其他对象;
    session:封装用户会话的对象;
    application:封装服务器运行环境的对象;
    out:输出服务器响应的输出流对象;
    config:Web应用的配置对象;
    page:JSP页面本身(相当于Java程序中的this);
    exception:封装页面抛出异常的对象。

    • jsp的4个作用域

    page代表与一个页面相关的对象和属性。
    request代表与Web客户机发出的一个请求相关的对象和属性。
    session代表与某个用户与服务器建立的一次会话相关的对象和属性。
    application代表与整个Web应用程序相关的对象和属性。

    • jsp 和 servlet
      JSP的本质就是Servlet,是Servlet的一种简化,jsp经编译后就变成了Servlet。
      ① jsp更擅长表现于页面显示,servlet更擅长于逻辑控制。
      ② Servlet中没有内置对象,Jsp中有内置对象
    1. session和cookie有什么区别?
    • 区别:cookie保存在客户端浏览器中,而session保存在服务器上。
    • cookie:实际上是一小段的文本信息。服务器还可以根据需要修改cookie的内容。
      过程:客户端请求服务——>服务器向客户端浏览器颁发一个cookie——>客户端浏览器保存cookie——>客户端请求服务——>客户端发送请求地址和cookie——>服务器检查该cookie,从而判断用户的状态。
      典型的应用如,将用户名和密码信息存入cookie中,下次登录时读取cookie内容能自动填入。
    • session:另一种记录客户状态的机制。不同的是客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是session。类似于一个大号的map,里面的键存储的是用户的Session ID。一般Session ID是通过Cookie来传递的。但禁用cookie之后,也可以通过URL传值等方式获取ID从而使用session。
    1. HTTP请求和响应结构
    • HTTP响应由三部分组成:状态行、响应头、响应正文:
      状态行:包括协议版本Version、状态码Status Code、回应短语;
      响应头:包括搭建服务器的软件,发送响应的时间,回应数据的格式等信息;
      响应正文:就是响应的具体数据。
    • HTTP请求由状态行、请求头、请求正文三部分组成:
      状态行:包括请求方式Method、资源路径URL、协议版本Version;
      请求头:包括一些访问的域名、用户***、Cookie等信息;
      请求正文:就是HTTP请求的数据。
    1. HTTP隧道
      有时候需要访问服务器除了80端口之外的其他端口,但是服务器上装有的防火墙软件 会阻止客户端访问除了80端口之外的其他端口,这个时候需要将访问其他端口的协议“包装”一下 变成访问80端口的http协议,这个就是http隧道。

    2. sendRedirect()和forward()方法有什么区别?
      forward(转发):是服务器内部的跳转,浏览器的地址栏不会发生变化,同时可以把request和response传递给后一个请求。
      sendRedirect(重定向):是浏览器方面的跳转,要发送两次请求,地址栏也会发生变化,同时request和response也会发生变化,重新生成新的对象。

    相关文章

      网友评论

          本文标题:JAVA简答(三)

          本文链接:https://www.haomeiwen.com/subject/xaxxxrtx.html