Servlet面试题概括

尊重原创:http://blog.csdn.net/caohaicheng/article/details/38116481html

 

一、说一说Servlet生命周期java

Servlet生命周期包括三部分:web

初始化:Web容器加载servlet,调用init()方法浏览器

处理请求:当请求到达时,运行其service()方法。service()自动派遣运行与请求相对应的doXXX(doGet或者doPost)方法。安全

销毁:服务结束,web容器会调用servlet的distroy()方法销毁servlet。服务器

二、get提交和post提交有何区别session

(1)get通常用于从服务器上获取数据,post通常用于向服务器传送数据架构

(2)请求的时候参数的位置有区别,get的参数是拼接在url后面,用户在浏览器地址栏能够看到。post是放在http包的包体中。app

好比说用户注册,你不能把用户提交的注册信息用get的方式吧,那不是说把用户的注册信息都显示在Url上了吗,是不安全的。jsp

(3)能提交的数据有区别,get方式能提交的数据只能是文本,且大小不超过1024个字节,而post不只能够提交文本还有二进制文件。

因此说想上传文件的话,那咱们就须要使用post请求方式

(4)servlet在处理请求的时候分别对应使用doGet和doPost方式进行处理请求

三、JSP与Servlet有什么区别

Servlet是服务器端的程序,动态生成html页面发送到客户端,可是这样程序里会有不少out.println(),java与html语言混在一块儿

很乱,因此后来sun公司推出了JSP.其实JSP就是Servlet,每次运行的时候JSP都首先被编译成servlet文件,而后再被编译成

.class文件运行。有了jsp,在MVC项目中servlet再也不负责动态生成页面,转而去负责控制程序逻辑的做用,控制jsp与javabean

之间的流转。

四、doGet与doPost方法的两个参数是什么

HttpServletRequest:封装了与请求相关的信息

HttpServletResponse:封装了与响应相关的信息

五、request.getAttribute()和request.getParameter

(1)有setAttribute,没有setParameter方法

(2)getParameter获取到的值只能是字符串,不能够是对象,而getAttribute获取到的值是Object类型的。

(3)经过form表单或者url来向另外一个页面或者servlet传递参数的时候须要用getParameter获取值;getAttribute只能获取setAttribute的值

(4)setAttribute是应用服务器把这个对象放到该页面所对应的一块内存当中,当你的页面服务器重定向到另外一个页面的时候,应用服务器

会把这块内存拷贝到另外一个页面对应的内存当中。经过getAttribute能够取得你存下的值,固然这种方法能够用来传对象。

用session也是同样的道理,这是说request和session的生命周期不同而已。

六、JSP有哪些内置对象,做用是什么?

 

JSP内置对象  
名称 做用
request 包含用户端请求的信息
response 包含服务器传回客户端的响应信息
session 与请求有关的会话期
pageContext 管理网页属性
application 服务器启动时建立,服务器关闭时中止,为多个应用程序保存信息
out 向客户端输出数据
config servlet的架构部件
page 指网页自己
exception 针对错误页面才可以使用

 

七、四种会话跟踪技术做用域

(1)page:一个页面

(2)request::一次请求

(3)session:一次会话

(4)application:服务器从启动到中止。

七、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:低.

相关文章
相关标签/搜索