Javaweb面试题及答案

本文详细介绍了JavaWeb开发中的JDBC操作数据库流程,解释了使用PreparedStatement的原因,探讨了HTTP的长连接与短连接、HTTP/1.1与HTTP/1.0的区别,以及常见HTTP状态码的含义。此外,还讨论了GET和POST请求的区别,HTTP重定向与请求转发的本质差异,Cookie与Session的使用场景和区别,并提出了分布式环境下session共享的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、说下原生JDBC操作数据库流程?

● 第一步:Class.forName()加载数据库连接驱动;

● 第二步:DriverManager.getConnection()获取数据连接对象;

● 第三步:根据SQL获取sql会话对象,有2种方式 Statement、PreparedStatement ;

● 第四步:执行SQL,执行SQL前如果有参数值就设置参数值setXXX();

● 第五步:处理结果集;

● 第六步:关闭结果集、关闭会话、关闭连接。

2、为什么要使用PreparedStatement?
PreparedStatement接口继承Statement,PreparedStatement实例包含已编译的SQL语句,所以其执行速度要快于Statement对象。

作为Statement的子类, PreparedStatement 继承了Statement的所有功能。三种方法execute、 executeQuery和executeUpdate已被更改以使之不再需要参数。

● 在 JDBC 应用中,多数情况下使用PreparedStatement,原因如下:

代码的可读性和可维护性。Statement需要不断地拼接,而PreparedStatement不会。

PreparedStatement尽最大可能提高性能。DB有缓存机制,相同的预编译语句再次被调用不会再次需要编译。

最重要的一点是极大地提高了安全性。Statement容易被SQL注入,而PreparedStatement传入的内容不会和sql 语句发生任何匹配关系。

3、http的长连接和短连接区别?
HTTP协议有HTTP/1.0版本和HTTP/1.1版本。HTTP1.1默认保持长连接(HTTP persistent connection,也翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。

在 HTTP/1.0 中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。从HTTP/1.1起,默认使用的是长连接,用以保持连接特性。

4、HTTP/1.1与HTTP/1.0的区别?
● 可扩展性

● HTTP/1.1在消息中增加版本号,用于兼容性判断。

● HTTP/1.1增加了OPTIONS方法,它允许客户端获取一个服务器支持的方法列表。

● 为了与未来的协议规范兼容,HTTP/1.1在请求消息中包含了Upgrade头域,通过该头域,客户端可以让服务器知道它能够支持的其它备用通信协议,服务器可以据此进行协议切换,使用备用协议与客户端进行通信。

● 缓存

在HTTP/1.0中,使用Expire头域来判断资源的fresh或stale,并使用条件请求(conditional request)来判断资源是否仍有效。HTTP/1.1在1.0的基础上加入了一些cache的新特性,当缓存对象的Age超过Expire时变为stale对象,cache不需要直接抛弃stale对象,而是与源服务器进行重新激活(revalidation)。

● 带宽优化

HTTP/1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了。例如,客户端只需要显示一个文档的部分内容,又比如下载大文件时需要支持断点续传功能,而不是在发生断连后不得不重新下载完整的包。

HTTP/1.1中在请求消息中引入了range头域,它允许只请求资源的某个部分。在响应消息中Content-Range头域声明了返回的这部分对象的偏移值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值