Java面试错题集2

转发(forward)和重定向(redirect)的区别

1.请求次数不同:
重定向发送请求收到响应后再次向新地址发出请求(至少请求两次)
转发收到请求后相应跳转新地址(请求一次)

2.重定向地址栏会发生变化,转发地址栏不会改变

3.重定向可跳转到任意的url,转发只在当前站点跳转

toString()方法和强制转换为String有什么区别

1.toString()方法的对象不能是null,会返回空指针异常NullPointerException,解决方法是用StringValueof()方法,这个方法在调用toString方法前会对对象进行一个判断,如果是NULL,就返回字符串形式的NULL。
2.toString()是任何对象都有的描述方法,而强制类型转换成(String)是直接将其当成字符串
具体参考:
toString()方法和强制转换为String有什么区别

statement和proparedstatement的区别

1.首先Statement是继承自warpper的,然后proparedstatement继承Statement,但是在statement的基础上增加的对参数处理的方法,所以statement只能处理静态sql语句,而proparedstatement能够处理动态的sql语句。callablestatement继承了proparedstatement,在他的基础上增加了调用存储过程函数以及参数输出的方法,所以可以处理存储过程。
2.statement在每次运行的时候都需要编译一次,而proparedstatement可以预编译,会被缓冲,可以在缓存中检测到预编译的命令,虽然仍要对sql语句进行解析,但是不需要再次进行编译了。能有效提高系统的性能。
3.使用porparedstatement可以有效防止sql注入
statement和proparedstatement的详细区别

String有哪些方法

1.length()计算长度
2.equals()判断字符串是否相同
3.compareto()比较字符串中每个字符的编码
4.isempty()判断字符串是否为空
String常用方法

Spring是如何管理事务的

Spring并不是直接管理事务的,只是提供了多种事务管理器,让持久化机制所提供的平台框架的事务来实现事务管理。

Spring事务管理主要包括3个接口:

第一个是事务管理器:PlatformTransactionManager,这个接口是spring事务管理的核心接口,包括comit事务的提交,rollback事务回滚,gettranslation获取事务状态三张方法。

第二个是TransactionDefinition,用于定义事务信息,给事务管理器用的。TransactionDefinition接口中定义了它自己的传播行为和隔离级别。包括getIsolationLevel:获取隔离级别;getPropagationBehavior:获取传播行为;getTimeout:获取超时时间;isReadOnly:是否只读 四种方法。

第三个接口时translationStatus,获取事务的运行状态。主要有hasSavepoint():返回这个事务内部是否包含一个保存点;isCompleted():返回该事务是否已完成,也就是说,是否已经提交或回滚;isNewTransaction():判断当前事务是否是一个新事务 这三种方法。

事务隔离级别

默认:这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。另外四个与JDBC的隔离级别相对应。
读未提交:这是事务最低的隔离级别,它允许另外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读。
读已提交:保证一个事务修改的数据提交后才能被另外一个事务读取,另外一个事务不能读取该事务未提交的数据。这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻像读。
可重复读:这种事务隔离级别可以防止脏读、不可重复读,但是可能出现幻像读。它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了不可重复读。
串行化:这是花费最高代价但是最可靠的事务隔离级别,事务被处理为顺序执行。除了防止脏读、不可重复读外,还避免了幻像读。

model和view怎么传递值

首先说一下SpringMVC三层架构:
model层,负责表示业务规则,负责各个功能的实现(如登录、增加、删除功能)。模型用JavaBean实现。在这里插入图片描述

view层,负责页面的显示;与用户的交互。包含各种表单。 实现视图用到的技术有html/css/jsp/js等前端技术。

controller层,负责将视图与模型一一对应起来。相当于一个模型分发器。所谓分发就是:①接收请求,并将该请求跳转(转发,重定向)到模型进行处理。②模型处理完毕后,再通过控制器,返回给视图中的请求处。建议使用Servlet实现控制器。

如何传递信息

三层架构分为表现层,业务逻辑层,数据访问层
表现层主要就是呈现给用户的UI界面,主要是view层的东西。
业务逻辑层就是service层,主要是负责一些业务逻辑的实现,主要就是来调用数据访问层的结果,将dao层与前端view连接起来。还有一个功能就是在调用数据库信息前对数据进行判断和检查。
数据访问层就是对数据库进行增删改查的操作,主要是dao层的东西,model层的Javabean包括数据表对应的Java类,里面存放着数据库列名为属性名的私有属性,并设置了get和set方法,dao层就是对这些Javabean进行增删改查的操作。
传递信息的话就是首先前端接收到数据,然后将请求发送给servlet容器,servlet容器接收到请求后,创建servlet实体类,调用servletRequest和servletResponse方法(此处我们可以重写一个servlet类来进行相应处理),之后controller层接受请求,将请求传递给service层(业务逻辑层),业务逻辑层进行判断找到对应的dao层操作,在dao层进行数据库信息的增删改查之后返回给控制器,控制器返回给view层就是响应用户。

什么是事务

事务是并发控制的基本单位,事务有四个特征就是我们说的ACID
原子性:一个事务要么全部提交成功,要么全部失败回滚
一致性:事务的执行不能破坏数据库的完整性和一致性
隔离性:并发环境中,并发事务是相互隔离的,一个事务不会被另一个并发事务所干扰
持久性:一旦事务提交,那么它对数据库中的对应数据的状态的变更就会永久保存到数据库中。

Java如何编写事务

使用@Transactional注解
Java事务编写

如何编写一个servlet

首先需要编写一个servlet类继承HttpServlet
然后实现doPost和doGet方法。
配置xml,在servletMapping标签中配置servlet-name和url-pattern
最后配置项目启动路径。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值