Java每日5问(第20天)

Http 请求的 get 和 post 方法的区别。

1、Get 是向服务器发索取数据的一种请求,而 Post 是向服务器提交数据的一种请求
2、Get 是获取信息,而不是修改信息,类似数据库查询功能一样,数据不会被修改
3、Get 请求的参数会跟在 url 后进行传递,请求的数据会附在 URL 之后,以?分割 URL 和传输数据,参数之间以&相连,%XX 中的 XX 为该符号以 16 进制表示的 ASCII,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64 加密。
4、Get 传输的数据有大小限制,因为 GET 是通过 URL 提交数据,那么 GET 可提交的数据量就跟 URL 的长度有直接关系了,不同的浏览器对 URL 的长度的限制是不同的。
5、GET 请求的数据会被浏览器缓存起来,用户名和密码将明文出现在 URL 上,其他人可以查到历史浏览记录,数据不太安全。
在服务器端,用 Request.QueryString 来获取 Get 方式提交来的数据
Post 请求则作为 http 消息的实际内容发送给 web 服务器,数据放置在 HTML Header 内提交, Post 没有限制提交的数据。Post 比 Get 安全,当数据是中文或者不敏感的数据,则用 get, 因为使用 get,参数会显示在地址,对于敏感数据和不是中文字符的数据,则用 post。
6、POST 表示可能修改变服务器上的资源的请求,在服务器端,用 Post 方式提交的数据只能用 Request.Form 来获取。

tomcat 容器是如何创建 servlet 类实例?用到了什么原理?

当容器启动时,会读取在 webapps 目录下所有的 web 应用中的 web.xml 文件,然后对 xml 文件进行解析,并读取 servlet 注册信息。然后,将每个应用中注册的 servlet 类都进行加载, 并通过反射的方式实例化。(有时候也是在第一次请求时实例化)
在 servlet 注册时加上1如果为正数,则在一开始就实例化,如果不写或为负数,则第一次请求实例化。

JDBC 访问数据库的基本步骤是什么?

第一步:Class.forName()加载数据库连接驱动;
第二步:DriverManager.getConnection()获取数据连接对象;
第三步:根据 SQL 获取 sql 会话对象,有 2 种方式 Statement、PreparedStatement ;
第四步:执行 SQL,执行 SQL 前如果有参数值就设置参数值 setXXX();
第五步:处理结果集;
第六步:关闭结果集、关闭会话、关闭连接。

为什么要使用 PreparedStatement?

PreparedStatement 接口继承 Statement,PreparedStatement 实例包含已编译的 SQL 语句,所以其执行速度要快于 Statement 对象。
作为 Statement 的子类, PreparedStatement 继承了 Statement 的所有功能。三种方法
execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要参数。在 JDBC 应用中,多数情况下使用 PreparedStatement,原因如下:
代码的可读性和可维护性。Statement 需要不断地拼接,而 PreparedStatement 不会。PreparedStatement 尽最大可能提高性能。DB 有缓存机制,相同的预编译语句再次被调用不会再次需要编译。
最重要的一点是极大地提高了安全性。Statement 容易被 SQL 注入,而 PreparedStatement
传入的内容不会和 sql 语句发生任何匹配关系。

数据库连接池的原理。为什么要使用连接池?

1、数据库连接是一件费时的操作,连接池可以使多个操作共享一个连接。
2、数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放 回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是 我们可以通过连接池的管理机制监视数据库的连接的数量、使用情况,为系统开发,测试及 性能调整提供依据。
3、使用连接池是为了提高对数据库连接资源的管理

猜你喜欢

转载自blog.csdn.net/qq_39899164/article/details/106983174