原文章:Java面试Web篇_java web面试-CSDN博客
JavaWeb基础
jsp:九大内置对象
- 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对象。
servlet:四大作用域
- application:当Web应用被加载进容器时创建代表整个web应用的application对象,当服务器关闭或Web应用被移除时,application对象跟着销毁。用于保存公共数据。
- pagecontext:作用范围是整个页面,它是四大作用域中最小的一个;当请求时开始,当响应结束时销毁。
- request:在service 方法调用前由服务器创建,请求结束,request结束。
- session:在第一次调用 request.getSession() 方法时,服务器会检查是否已经有对应的session,如果没有就在内存 中创建一个session并返回。注意session的作用范围是一次会话。一般用来保存登录的用户信息、购物车信息等。
session与cookie区别
- 作用范围:session-服务端(服务器)、cookie客户端(浏览器)数据存储
- 安全性:session安全、cookie不安全,在浏览器可以查看cookie信息
- 读取速度:session速度慢,因为session存在服务端,所有用户信息存在seesion的话,当服务器去读取用户信息时,服务器压力大。 cookie速度快,因为用户信息存在客户端的话,当客户端去读取用户信息时,用户信息分给每个访问页面浏览器(客户端),用户信息压力小。
JavaWeb框架
Spring
核心组件:IOC、AOP
对IOC理解
IOC:控制反转,依赖注入
控制反转:将对象实例化的权利由程序员控制转交给Spring容器进行控制
依赖注入:将一个对象注入另外一个对象,例如Controller中注入service实现类给service接口
javabean的配置是单例多例
Spring对于javabean的管理默认就是单例的;但是可以配置多例,更加实际情况或者业务需求去定义。
单例的特点是节约内存,存在变量污染;多例的特点是消耗内存,不存在变量污染,
javabean的生命周期
单例:容器生,对象生,容器死,对象死;
多例:使用时创建,销毁跟着jvm走;
单例理解:这个bean要被很多对象调用,既然迟早要调用,所以spring在设计的时候就把bean放在项目启动时,先将容器创建完,对象也已经初始化好了;
bean依赖注入的方式
set注入、构造注入
自动装配:
byName:根据名字在Spring上下文中查找,更具bean的名称,找到id进行注入
byType:根据类型在Spring上下文中查找,只要是接口的实现类就可以更具类型注入
对Spring AOP理解
AOP:面向切面编程
作用:将共性的非核心业务功能进行解耦
实际开发对于AOP的应用
- 日志
- 事务列表
前置通知:开启事务
后置通知:提交事务
异常通知:回滚事务
过滤通知:区别对待增删改有事务,查询没有事务
@transactional 注解式事务,应用在方法或类上
jdk代理与cglib代理的区别
jdk代理代理的是接口,cglib代理的是类。
因为在jdk代理中的代理类与目标类必须实现同一个接口,但是cglib代理不需要实现同一个接口
Spring的底层用了哪些设计模式
工厂模式、单例模式、原型模式、代理模式
SpringMVC工作流程
- 用户发起请求 - DispatherServlet
- DispatcherServlet - HandlerMapping
- DispatcherServlet - HandlerAdapter
- HandlerAdapter - 处理器功能处理方法的调用
- ModelAndView的逻辑视图名 - ViewRecolver
- View - 渲染
详情
-
由 DispatcherServlet 请求一个或多个 HandlerMapping(处理器映射器),并返回一个执行链(HandlerExecutionChain)。
-
DispatcherServlet 将执行链返回的 Handler 信息发送给 HandlerAdapter(处理器适配器);
-
HandlerAdapter 根据 Handler 信息找到并执行相应的 Handler(常称为 Controller);
-
Handler 执行完毕后会返回给 HandlerAdapter 一个 ModelAndView 对象(Spring MVC的底层对象,包括 Model 数据模型和 View 视图信息);
-
HandlerAdapter 接收到 ModelAndView 对象后,将其返回给 DispatcherServlet ;
-
DispatcherServlet 接收到 ModelAndView 对象后,会请求 ViewResolver(视图解析器)对视图进行解析;
-
ViewResolver 根据 View 信息匹配到相应的视图结果,并返回给 DispatcherServlet;
-
DispatcherServlet 接收到具体的 View 视图后,进行视图渲染,将 Model 中的模型数据填充到 View 视图中的 request 域,生成最终的 View(视图);
springmvc常用注解
- 类:@Controller、@restController、@ControllerAdvice
- 方法上:@get/delete/post/putmapping @responseBody @ExceptionHandler
- 方法内:@pathvarible @requestBody @requestParam @requestHeader
Mybatis
#与$的区别
相同点:都是用来传参
不同点:#是自带引号,$不带引号
- #没有sql注入,$存在sql注入的风险
- $可以用来做动态列
ResultType与ResultMap区别
ResultType:单表查询、类型java.lang.string/integer、java.util.map
ResultMap:配置映射关系,用于多表查询