【面试必备】谈谈Servlet的理解

以下从几个方面分析面试中常见的Servlet套路。
一、谈谈Servlet的生命周期

Servlet生命周期主要包括三个方面:
1、初始化:Web容器加载Servlet,调用init()方法。
2、处理服务请求:执行service方法,执行对应的doXXX()方法。
3、销毁:服务结束,Web容器调用Servlet的destory()方法。

二、Get和Post提交方式的区别

1、Get从服务器获取数据,Post向服务器推送数据。
2、请求方式不同:Get参数是拼接在url后面,不安全。Post放在http包的包体中。
3、提交内容不同:Get只能是文本,最大1KB。Post可以提交文本和二进制(上传文件必须用post方式)。
4、Servlet在处理请求的时候分别对应使用doGet和doPost方式进行处理请求。

三、JSP和Servlet二者有啥区别

Servlet是服务器端程序,动态生成HTML页面发送到客户端。在Servlet中java与HTML混合很乱。而sun公司推出JSP,即每次运行时候JSP先编译成Servlet文件,然后再编译成.class文件。在MVC中Servlet不再动态生成页面,转而去负责控制层业务。

四、request.getAttribute()和request.getParameter()

1、有setAttribute方法,没有setParameter方法。
2、getAttribute获取到的值是Object类型,getParameter获取到的值只能是字符串。
3、getAttribute只能获取serAttribute的值,而getParameter用于通过form或者url向另一个页面或Servlet传递参数时候使用。

五、JSP内置对象

名称 作用
request 客户端请求的信息
response 服务器端的响应信息
session 请求的会话
pageContext 管理网页属性
application 服务器启动创建,停止销毁,为应用程序保存信息
out 向客户端输出数据
config Servlet的架构部件
page 网页本身
exception 错误页面的信息

六、JSP中动态INCLUDE和静态INCLUDE有什么区别

include指令用于把另一个页面包含到当前页面中,在什么时候包含的?再转换成servlet的时候包含进去的。

动态INCLUDE用jsp:include动作实现 <jsp:include page=“included.jsp” flush=“true” />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。

静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@ include file=“included.htm” %>。
七、forward和redirect的区别
(1)从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址。redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,所以地址栏显示的是新的URL。

(2)从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据。
redirect:不能共享数据。

(3)从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块。
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等。

(4)从效率来说
forward:高。
redirect:低。

发布了18 篇原创文章 · 获赞 2 · 访问量 321

猜你喜欢

转载自blog.csdn.net/Aikin_Tony/article/details/104922340
今日推荐