一.使用JDBC完成数据库操作的关键步骤有哪些?
1.加载JDBC驱动程序
2.提供JDBC连接的URL
3.创建数据库的连接
4.创建一个Statement(Statement、PreparedStatement、CallableStatement)
5.执行SQL语句:executeQuery 、executeUpdate和execute
6.关闭链接对象;
二、PreparedStatement和Statement有什么差别
PreparedStatement做了预编译执行效率高,同时提供占位符进行参数替换,可避免SQL注入
三、原生的JDBC接口进行事务操作的关键步骤有哪些?
1.设置事务开启
2.设置事务隔离级别
3.设置事务提交、事务回滚
4.设置保存点和返回保存点(可选)
四、servlet的生命周期
1.实例化
2.初始化init
3.处理请求service() doGet()和doPost()
4.销毁destory
五、servlet的解决方案
a.实现 SingleThreadModel 接口
该接口指定了系统如何处理对同一个Servlet的调用。如果一个Servlet被这个接口指定,那么在这个Servlet中的service方法将不会有两个线程被同时执行,
当然也就不存在线程安全的问题。这种方法只要继承这个接口就行了
public class XXXXX extends HttpServlet implements SingleThreadModel {
…………
}
b.同步对共享数据的操作
使用synchronized 关键字能保证一次只有一个线程可以访问被保护的区段,可以通过同步块操作来保证Servlet的线程安全。同步后的代码如下:
Public class XXXXXX extends HttpServlet {
………… synchronized (this){XXXX}
}
c.避免使用实例变量
线程安全问题还有些是由实例变量造成的,只要在Servlet里面的任何方法里面都不使用实例变量,那么该Servlet就是线程安全的
六、服务端防止表单重复提交的原理
由于用户或网络延迟原因,用户在提交表单时会多次点击提交,此时表单内容会被多次提交给服务器。这样会资源的浪费。
通过在Session维护一个全局的UUID,带入到页面,发起请求的时候对UUID进行检查,请求执行完了删除session数据。重复请求发现没有数据就是重复提交。
七、spring bean的初始化过程
1.容器寻找Bean的定义信息并且将其实例化
2.设置属性值
3.根据bean的实现不同接口完成方法采用不同的方法来(setBeanName()、setBeanClassLoader())
4.调用BeanPostProcessor的预先初始化方法;
5.调用InitializingBean的afterPropertiesSet()方法;
6.调用init方法;
7.调用BeanPostProcessor的后初始化方法;