Java EE面试题解析(上)

1、 Session和Cookie的区别?【掌握】

Session是存储在服务器端,Cookie是存储在客户端的:

Session的安全性要比Cookie高;

Session内容不断增加会造成服务器负担;

重要的信息存储在Session中,次要东西存储在Cookie里。

Session创建时机:调用getSession()方式时创建。

Session获取:通过存放在会话Cookie里的Sessionid获取的。

Session销毁时机:

浏览器关闭;

Session过期(默认时间30分钟);

调用invalidate()方法销毁。

Cookie分为两大类,分别为会话Cookie和持久化Cookie。

会话Cookie:存放在客户端浏览器内存中,生命周期和浏览器是一致的;

持久化Cookie存放在客户端磁盘中,持久化Cookie的生命周期在设置Cookie时候设置。

Cookie容量限制:单个Cookie保存数据不能超过4K,很多浏览器都限制一个站点最多保存20个Cookie。

存储内容:Session可以存储任意类型的数据,而Cookie只能存储字符串。

2、 Servlet的生命周期?【重点】

Servlet生命周期可以分成四个阶段:加载和实例化、初始化、服务、销毁。

当客户第一次请求时,判断是否存在Servlet对象,若不存在,Web容器创建对象;

调用init()方法对其初始化,初始化方法在整个Servlet生命周期中只调用一次;

Web容器调用Servlet对象的service()方法来处理请求。

Web容器关闭或者Servlet对象从容器中被删除时,自动调用destroy()方法。

3、 什么是Web Service?【了解】

Web Service是一个能通过Web进行调用的API,调用Web Service的应用程序叫做客户端,而Web Service应用程序叫做服务端。

深层次看,Web Service是建立可互操作的分布式应用程序的新平台,是远程服务调用的一套标准;定义了应用程序如何在Web上实现互操作,可以用任何语言、在任何平台上编写Web Service,只要可以通过Web Service标准对这些服务进行查询和访问即可。

4、 JSP和Servlet的区别、共同点、各自应用的范围?【了解】

JSP是Servlet技术的扩展,本质上就是Servlet的简易方式,JSP编译后的类是Servlet。

Servlet和JSP的不同点:

Servlet是仅包含Java代码;

JSP是包括Java代码和HTML代码的扩展名为".jsp"的文件;

JSP侧重于视图,Servlet主要用于控制逻辑;

在MVC设计模式中,JSP位于的视图层,而Servlet位于控制层。

5、 forward()与redirect()的区别?【重点】

forward即是请求转发:

地址栏显示不变;

发生在服务器端,是服务器内部的操作;

客户端向服务器端发出一次request;

转发页面和转发到的页面可以共享request里面的数据;

可以跳转到Web应用程序内的任何地方,如:WEB-INF目录;

运行效率比较高;

使用方法:request.getRequestDispatcher().forward()。

Redirect即是重定向:

地址栏显示变化;

发生在客户端,是服务器通知客户端,让客户端重新发起请求;

客户端向服务器端发出两次request;

不能共享request里面的数据;

不可以跳转到WEB-INF安全目录下,但是可以跳转到Web应用程序外部网站;

运行效率比较低;

使用方法:response.sendRedirect()。

6、 Request对象的getAttribute()和getParameter()区别?【掌握】

getParameter()方法是用来接收表单提交过来的参数;

setAttribute()与getAttribute()仅在Web容器内部流转,仅仅是请求处理阶段;

getAttribute()方法返回的是对象,getParameter()方法返回的是字符串;

getAttribute()与setAttribute()一般一起使用,必须setAttribute()设置之后,才能够通过getAttribute()来获取值,传递的是Object类型的数据,必须在同一个request对象中使用才有效。

7、 Jsp静态包含和动态包含的区别?【重点】

格式不同:

静态包含:<%@ include file="文件" %>;

动态包含:<jsp : include page = "文件" />。

处理时机不同:

静态包含是先将几个文件合并,然后再被编译,缺点就是如果含有相同的标签,会出错;

动态包含是页面被请求时编译,将结果放在一个页面。

生成的文件不同:

静态包含会生成一个包含页面名字的servlet的class文件;

动态包含会各自生成对应的servlet的class文件。

传递参数不同:

动态包含能够传递参数;

而静态包含不能。

8、 MVC的各个部分都有哪些技术来实现?如何实现?【掌握】

MVC是Model-View-Controller的简写;

Model代表的是应用程序的业务逻辑(通过 JavaBean,Mybatis等框架实现);

View代表的是应用程序的表示层,即:Jsp页面;

Controller代表的是应用程序的处理过程控制(一般是Servlet);

这种设计模型把应用逻辑,处理过程、显示逻辑分成不同的组件实现,这些组件可以进行交互和重用。

9、 JSP有哪些内置对象?作用分别是什么?【掌握】

JSP有9个内置对象:

request:封装客户端的请求,其中包含来自GET或POST请求的参数;

response:封装服务器对客户端的响应;

pageContext:通过该对象可以获取其他对象;

session:封装用户会话的对象;

servletContext:封装服务器运行环境的对象;

out:输出服务器响应的输出流对象;

config:Web应用的配置对象;

page:JSP页面本身(相当于Java程序中的this);

exception:封装页面抛出异常的对象。

10、 Http请求的get和post方法的区别?【重点】

Get是向服务器索取数据的一种请求,而Post是向服务器提交数据的一种请求;

Get 请求的参数会跟在URL后进行传递,Post请求将数据放置在HTML Header内提交;

GET请求数据传递方式:请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以&相连,%XX中的XX为该符号以16进制表示的ASCII,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密;

Post请求数据传递方式:以http消息的实际内容发送给web服务器。

Get请求传输的数据有大小限制,因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了,不同的浏览器对URL的长度的限制是不同的;Post请求没有限制提交的数据。

GET请求的数据会被浏览器缓存起来,数据将明文出现在URL上,不安全;Post数据不会出现在URL上,比Get安全,当数据是不敏感的数据,则用Get,对于敏感数据的数据,则用Post。

相关推荐
P.H. Infinity11 分钟前
【RabbitMQ】04-发送者可靠性
java·rabbitmq·java-rabbitmq
生命几十年3万天15 分钟前
java的threadlocal为何内存泄漏
java
caridle26 分钟前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
^velpro^31 分钟前
数据库连接池的创建
java·开发语言·数据库
苹果醋335 分钟前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
秋の花39 分钟前
【JAVA基础】Java集合基础
java·开发语言·windows
小松学前端42 分钟前
第六章 7.0 LinkList
java·开发语言·网络
Wx-bishekaifayuan1 小时前
django电商易购系统-计算机设计毕业源码61059
java·spring boot·spring·spring cloud·django·sqlite·guava
customer081 小时前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源
全栈开发圈1 小时前
新书速览|Java网络爬虫精解与实践
java·开发语言·爬虫