茂展的分享博客

JavaWeb基础

JavaWeb基础

JDBC技术

JDBC操作数据库流程

  1. Class.forName()加载数据库连接驱动
  2. DriverManager.getConnection()获取数据库连接对象
  3. 根据SQL获取sql会话对象,有两种方式Statement、PreparedStatement
  4. 执行SQL处理结果集,执行SQL前如果有参数值就设置参数值
  5. 关闭结果集、关闭会话、关闭连接

关于使用PreparedStatement不使用Statement的原因

  • PreparedStatement继承自Statement,PreparedStatement实例包含已编译的SQL语句,因此执行速度快
  • PreparedStatement三个方法execute、executeQuery、executeUpdate已经更改为不再需要参数
  • PreparedStatement不需要不断的拼接,但是Statement需要
  • PreparedStatement传入的内容不会和sql语句发生任何的匹配关系,但Statement容易被SQL注入

关系数据库中连接池的机制是:

前提:为数据库连接建立一个缓冲池

  1. 从连接池获取或者创建一个可用连接
  2. 使用完毕后,把连接返回给连接池
  3. 在系统关闭前,断开所有连接并释放连接占用的系统资源
  4. 能够处理无效连接,限制连接池中的连接总数不低于或者不超过某个限定值

注:数据库连接池数量一直保持一个最小连接数的数量,当数量不够时,数据库会创建一些连接,直到一个最大连接数,之后的数据库连接就会等待。

Http的长连接和短连接

Http协议有HTTP/1.0版本和HTTP/1.1版本。
HTTP/1.1默认保持长连接,数据传输完成完成了依然保持TCP连接不断开,等待同域名下继续使用这个通道传输数据。
HTTP/1.0默认是短连接,浏览器和服务器每一次进行HTTP操作,就建立一次连接,任务结束就中断连接。

Cookie和Session

Cookie和Session的区别:

Cookie是web服务器发送给浏览器的一块信息,浏览器会在本地一个文件中给每个web服务器存储cookie。以后浏览器再给特定的web服务器发送请求时,同时会发送所有为该服务器存储的cookie。
Session是存储在web服务器端的一块信息。session对象存储特定的用户会话所需的属性以及配置信息。当用户在应用程序的web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个会话中一直存在下去。

Cookie和Session的不同点:

  1. 无论客户端做怎样的配置,session都能正常工作。当客户端禁用cookie时将无法使用cookie
  2. 存储方面,session可以存储任何的java对象,cookie只能存储String类型的对象

关于Session在集群和分布式中的共享问题

我们可以使用服务器session复制共享,但是session广播通知其他session会造成网络流量瓶颈,同时session中的内容序列化也会消耗系统性能,所以最好使用接触redis实现session共享
原理: 当服务器发现session不在本机内存中,则会去redis中查找,如果redis查到,会复制到本机。这样就可以实现session同步和高可用!有时候我们可能担心redis宕机,所以我们要使用一主多备,由于redis宕机后不会自动切换master,所以需要结合keepalived来实现切换问题!

单点登录原理

后端生成一个session ID,然后设置到cookie,后面的所有请求 浏览器都会带上cookie,然后服务器端从cookie里面获取sessionID,再查找用户信息。所以,保持登录的关键不是cookie,而是通过cookie保存和传输的sessionID,其本质是能获取用户信息的数据。除了cookie,还通常使用HTTP请求头来传输。但是这个请求头浏览器不会像cookie一样自动携带,需要手工处理。

JSP技术

Jsp本质上就是一个Servlet,它是Servlet的一种特殊形式,每个jsp页面都是一个Servlet实例。
Servlet是由java提供用于开发web服务器应用程序的一个组件,运行在服务端,由servlet容器管理,用来生成动态内容。
一个servlet实例是实现了特殊接口Servlet的Java类,所有自定义的servlet均必须实现Servlet接口。

jsp servlet对比:

jsp是html页面中内嵌的Java代码,侧重页面显示
Servlet是html代码和java代码分离,侧重逻辑控制,mvc设计思想中jsp位于视图层,servlet位于控制层

JVM只能识别java类,并不能识别jsp代码!web容器收到以.jsp为扩展名的url请求时,会将访问请求交给tomcat中jsp引擎处理,每个jsp页面第一次被访问时,jsp引擎将jsp代码解释为一个servlet源程序接着编译成servlet源程序生成.class文件,再由web容器servlet引擎去装载执行servlet程序,实现页面交互。

jsp域对象

一个4个域对象

  • pageContext 指当前页面,在当前jsp页面有效,跳转到其他页面失效
  • request request域指的是在一次请求范围内有效,从http请求到服务器处理结束,返回响应的整个过程。
  • session session域指的是当前会话有效范围,浏览器从打开到关闭的过程中,转发、重定向均可以使用。
  • application context域指的是能在同一个web中使用,服务器未关闭或者重启,数据有效。

XML技术复习

xml是一种可扩展性标记语言,支持自定义标签(使用前必须预定义)使用DTD和XML Schema标准化XML结构
优点:用于配置文件,格式统一,符合标准;用于在互不兼容的系统间交互数据,共享数据方便。
缺点:xml文件格式复杂,数据传输占流量,服务端和客户端解析xml文件占用大量资源且不易维护
xml常用解析器有两种:

  • DOM解析,xml文档以DOM树形结构加载入内存
  • SAX解析,采用事件模型
------本文结束感谢阅读------
🐶 您的支持将鼓励我继续创作 🐶