java牛客网经典面试题

什么是Servlet?
Servlet是用来处理客户端请求并产生动态网页内容的Java类。Servlet主要是用来处理或者是存储HTML表单提交的数据,产生动态内容,在无状态的HTTP协议下管理状态信息,它还是运行在服务器上的程序。

解释下Servlet的生命周期。
对每一个客户端的请求,Servlet引擎载入Servlet,然后判断是否有servlet实例,如果没有先构造一个servlet实例,再调用它的init()方法,完成Servlet的初始化。然后,Servlet对象通过为每一个请求单独调用doget和dopost来处理所有随后来自客户端的请求。当服务器关闭的时候,调用Servlet(译者注:这里应该是Servlet而不是server)的destroy()方法把Servlet删除掉。

doGet:GET方法会把名值对追加在请求的URL后面。因为URL对字符数目有限制,进而限制了用在客户端请求的参数值的数目。并且请求中的参数值是可见的,因此,敏感信息不能用这种方式传递。
doPOST:POST方法通过把请求参数值放在请求体中来克服GET方法的限制,因此,可以发送的参数的数目是没有限制的。最后,通过POST请求传递的敏感信息对外部客户端是不可见的。

什么是cookie?session和cookie有什么区别?
coolie是存储在客户端的,用于保存用户信息的对像。
session:用于保存服务器的信息;保存的对像类型是object;保密性较好,用于存储那些比较重要的信息;保存的信息在会话结束后会自动销毁。
coolie:用于保存客户端的信息;保存的对像类型是String;保密性不好,用于存储那些不太重要的信息;保存的信息存放在客户端,用户可以选择性清除。

浏览器和Servlet通信使用的是什么协议?
浏览器和Servlet通信使用的是HTTP协议。

sendRedirect()和forward()方法有什么区别?
sendRedirect()方法会创建一个新的请求,是请求重定向。而forward()方法只是把请求转发到一个新的目标上,是转发。重定向(redirect)以后,之前请求作用域范围以内的对象就失效了,因为会产生一个新的请求,而转发(forwarding)以后,之前请求作用域范围以内的对象还是能访问的。一般认为sendRedirect()比forward()要慢。

什么是JSP页面?
JSP页面是一种包含了静态页面和JSP元素两种类型的文本的文本文档。静态数据可以用任何基于文本的格式来表示,比如:HTML或者XML。JSP是一种混合了静态内容和动态产生的内容的技术。

JSP有什么优点?
参考答案

下面列出了使用JSP的优点:
JSP页面是被动态编译成Servlet的,因此,开发者可以很容易的更新展现代码。
JSP页面可以被预编译。
JSP页面可以很容易的和静态模板结合,包括:HTML或者XML,也可以很容易的和产生动态内容的代码结合起来。
开发者可以提供让页面设计者以类XML格式来访问的自定义的JSP标签库。
开发者可以在组件层做逻辑上的改变,而不需要编辑单独使用了应用层逻辑的页面。

什么是JSP指令(Directive)?JSP中有哪些不同类型的指令?
参考答案

Directive是当JSP页面被编译成Servlet的时候,JSP引擎要处理的指令。Directive用来设置页面级别的指令,从外部文件插入数据,指定自定义的标签库。Directive是定义在 <%@ 和 %>之间的。下面列出了不同类型的Directive:
包含指令(Include directive):用来包含文件和合并文件内容到当前的页面。
页面指令(Page directive):用来定义JSP页面中特定的属性,比如错误页面和缓冲区。
Taglib指令: 用来声明页面中使用的自定义的标签库。

什么是JSP动作(JSP action)?
参考答案

JSP动作以XML语法的结构来控制Servlet引擎的行为。当JSP页面被请求的时候,JSP动作会被执行。它们可以被动态的插入到文件中,重用JavaBean组件,转发用户到其他的页面,或者是给Java插件产生HTML代码。下面列出了可用的动作:
jsp:include-当JSP页面被请求的时候包含一个文件。
jsp:useBean-找出或者是初始化Javabean。
jsp:setProperty-设置JavaBean的属性。
jsp:getProperty-获取JavaBean的属性。
jsp:forward-把请求转发到新的页面。
jsp:plugin-产生特定浏览器的代码。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值