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。