Java面试Web篇

目录

一、JavaWeb基础

1.jsp

2.servlet

二、JavaWeb框架

1.Spring

#SpringMVC的工作流程?

三、Mybatis


今天给大家分享 JavaWeb篇的面试题,小编给大家稍微整理了一下,希望即将面试的朋友们看了后能有帮助。

一、JavaWeb基础

1.jsp

指令:page指令、include...

九大内置对象

  • request:封装了由客户端生成的HTTP头信息、系统信息、请求方式和请求参数等。通过request对象提供的相应方法可以处理客户端浏览器提交的HTTP请求中的各项参数。
  • response:用于响应客户请求,向客户端输出信息。它封装了JSP产生的响应,并发送到客户端以响应客户端的请求。请求的数据可以是各种数据类型,甚至是文件。response对象在JSP页面内有效。
  • config:读取web.xml配置信息的config对象
  • session:会话管理对象,也就是当一个客户向服务器发出请求,服务器接收请求,并返回响应后,该连接就结束了,而服务器并不保存相关的信息。为了弥补这一缺点,HTTP协议提供了session。通过session可以在应用程序的Web页面间进行跳转时,保存用户的状态,使整个用户会话一直存在下去,直到关闭浏览器。但是,如果在一个会话中,客户端长时间不向服务器发出请求,session对象就会自动消失。这个时间取决于服务器,例如,Tomcat服务器默认为30分钟。不过这个时间可以通过编写程序进行修改。
  • page:page对象代表JSP本身,只有在JSP页面内才是合法的。
  • application:用于保存所有应用中的共有数据。它在服务器启动时自动创建,在服务器停止时销毁。当application对象没有被销毁时,所有用户都可以共享该application对象。与session对象相比,application对象的生命周期更长,类似于系统的“全局变量”。
  • out:用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。
  • pageContext:页面上下文的对象,pageContext对象的创建和初始化都是由容器来完成的。
  • exception:用来处理JSP文件执行时发生的所有错误和异常,在Java程序中,可以使用try...catch关键字来处理异常情况,如果在JSP页面中出现没有捕获到的异常,就会生成exception对象,并把exception对象传送到在page指令中定义的错误页面中,然后在错误页面中处理相应的exception对象。 

2.servlet

四大作用域

application:当Web应用被加载进容器时创建代表整个web应用的application对象,当服务器关闭或Web应用被移除时,application对象跟着销毁。用于保存公共数据。

pagecontext:作用范围是整个页面,它是四大作用域中最小的一个;当请求时开始,当响应结束时销毁。

request:在service 方法调用前由服务器创建,请求结束,request结束。

session:在第一次调用 request.getSession() 方法时,服务器会检查是否已经有对应的session,如果没有就在内存 中创建一个session并返回。注意session的作用范围是一次会话。一般用来保存登录的用户信息、购物车信息等。

#问题一:session与cookie的区别

生命周期:init、service、destroy

  1. 作用范围不同,session服务端(服务器),cookie是客户端(浏览器)数据存储
  2. session安全;cookie不安全,因为在浏览器可以查看cookie的信息。
  3. 读取速度不同
  • session速度慢,因为session存在服务端,所有用户信息存在seesion的话,当服务器去读取用户信息时,服务器压力大。
  • cookie速度快,因为用户信息存在客户端的话,当客户端去读取用户信息时,用户信息分给每个访问页面浏览器(客户端),用户信息压力小。
     

二、JavaWeb框架

1.Spring

对Spring的理解

概念:轻量级的容器框架,有两个核心组件ioc、AOP

#问题一:对Spring ioc的理解

ioc:控制反转,依赖注入
控制反转:将对象实例化的权利由程序员控制转交给Spring容器进行控制
依赖注入:将一个对象注入另外一个对象,例如Controller中注入service实现类给service接口


问题二:javabean的配置是单例多例?
Spring对于javabean的管理默认就是单例的;但是可以配置多例,更加实际情况或者业务需求去定义。
单例的特点是节约内存,存在变量污染;

多例的特点是消耗内存,不存在变量污染,

问题三:javabean的生命周期?

单例:容器生,对象生,容器死,对象死;

单例理解:这个bean要被很多对象调用,既然迟早要调用,所以spring在设计的时候就把bean放在项目启动时,先将容器创建完,对象也已经初始化好了;
多例:使用时创建,销毁跟着jvm走;


问题四:bean依赖注入的方式?

set注入、构造注入
自动装配:
byName:根据名字在Spring上下文中查找,更具bean的名称,找到id进行注入
byType:根据类型在Spring上下文中查找,只要是接口的实现类就可以更具类型注入

问题五:对Spring aop的理解

AOP:面向切面编程
作用:将共性的非核心业务功能进行解耦
举例:对于商城项目而言,核心业务是商品管理、购物车、订单管理;
为了后续代码调优,以及平台监管,需要添加日志功能,AOP完成日志功能开发


#问题六:在实际开发对于AOP的应用?

1.日志
2.事务管理    transactionManager
    前置通知:开启事务
    后置通知:提交事务
    异常通知:回滚事务
    过滤通知:区别对待增删改有事务,查询没有事务
    @transactional        注解试事务

问题七:jdk代理与cglib代理的区别?

jdk代理代理的是接口,cglib代理的是类。

因为在jdk代理中的代理类与目标类必须实现同一个接口,但是cglib代理不需要实现同一个接口
 

问题八:Spring的底层用到了哪些设计模式

工厂模式(application.xml配置bean中的FactoryBean)、单例模式(Singlon)、原型模式(prototype)、代理模式(aop代理中通知)

#SpringMVC的工作流程?


 

  • 1 首先用户发送请求-->DispatherServlet
  • 2 DispatcherServlet-->HandlerMapping
  • 3 DispatcherServlet-->HandlerAdapter
  • 4 HandlerAdapter-->处理器功能处理方法的调用
  • 5 ModelAndView的逻辑视图名-->ViewRecolver
  • 6 View-->渲染 

详情

  1. 由 DispatcherServlet 请求一个或多个 HandlerMapping(处理器映射器),并返回一个执行链(HandlerExecutionChain)。
  2. DispatcherServlet 将执行链返回的 Handler 信息发送给 HandlerAdapter(处理器适配器);
  3. HandlerAdapter 根据 Handler 信息找到并执行相应的 Handler(常称为 Controller);
  4. Handler 执行完毕后会返回给 HandlerAdapter 一个 ModelAndView 对象(Spring MVC的底层对象,包括 Model 数据模型和 View 视图信息);
  5. HandlerAdapter 接收到 ModelAndView 对象后,将其返回给 DispatcherServlet ;
  6. DispatcherServlet 接收到 ModelAndView 对象后,会请求 ViewResolver(视图解析器)对视图进行解析;
  7. ViewResolver 根据 View 信息匹配到相应的视图结果,并返回给 DispatcherServlet;
  8. DispatcherServlet 接收到具体的 View 视图后,进行视图渲染,将 Model 中的模型数据填充到 View 视图中的 request 域,生成最终的 View(视图);

问题九:springmvc的常用注解?

  •  类:@Controller、@restController、@ControllerAdvice
  •  方法上:@get/delete/post/putmapping @responseBody @ExceptionHandler
  •  方法内:@pathvarible @requestBody @requestParam @requestHeader

三、Mybatis

#问题一:#与$的区别

相同点:都是用来传参
不同点:#是自带引号,$不带引号 

  1. #没有sql注入,$存在sql注入的风险
  2. $可以用来做动态列
<update id='save'>

        ${execteSQL}//接收新增的字段

</update>

在不修改原来的代码基础上,只修改新增的字段
bookMapper.save(update t_book set abc=23 where id = 1)


问题二:ResultType与ResultMap区别

ResultType:单表查询、类型java.lang.string/integer、java.util.map
ResultMap:配置映射关系,用于多表查询

 

问题三:批量新增/二级缓存的问题
session.beginTransation

for(OrderItem oi:orderItems){

session.save(oi);

}

session.commit;

上述代码用到的是一个会话,新增完一次性全部提交。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值