JAVA面试常考系列十
题目一
Servlet是什么?
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,是用Java编写的服务器端程序,主要的作用是处理客户端请求并生成动态Web内容。
一般情况下,Servlet主要用于处理或者存储由HTML表单提交的数据,提供动态内容并管理状态信息。
题目二
Applet和Servlet有什么区别?
Applet是客户端Java程序,Servlet是服务器端组件。
Applet运行在客户机上的Web浏览器中,Servlet运行在Web服务器上。
Applet可以使用用户接口类,servlet没有用户接口,等待客户端的HTTP请求,并在每个请求中产生一个响应。
题目三
GenericServlet和HttpServlet有什么区别?
HttpServlet是GenericServlet的子类。
GenericServlet是个抽象类,必须给出子类才能实例化。它给出了设计servlet的一些架构,定义了servlet生命周期,以及一些得到名字、配置、初始化参数的方法,其设计的是和应用层协议无关的。
HttpServlet是子类,所以具有GenericServlet的一切特性,还添加了doGet, doPost, doDelete, doPut, doTrace等方法用来处理http协议里命令的请求响应过程。
题目四
一个Servlet在生命周期中经历了哪些过程?
Servlet 在加载之后依次经历了实例化、服务、销毁三个过程。
init()
在服务器装入Servlet时,将会执行init()方法,目的是为了初始化Servlet对象。也可以通过配置服务器,在启动服务器或客户机首次访问Servlet时装入Servlet。Init()方法在整个生命周期中,仅仅执行一次,与访问Servlet的客户机数量无关。
service()
负责响应客户的请求,是Servlet的核心。当一个客户请求一个HttpServlet对象时,对象就会调用Service()方法,并传递给方法一个请求对象和一个响应对象作为参数。Service()方法在HttpServlet中已存在,默认的服务功能是调用与HTTP请求的方法相应的do功能。
destroy()
在服务器端停止且卸载Servlet时执行该方法,用来释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,所以在调用destroy()方法时,需要确认这些线程已经终止或完成。与init()方法一样,整个生命周期中,仅执行一次。
题目五
doGet()和doPost()有什么区别?
区别一
get是从服务器上获取数据,post是向服务器传送数据。
区别二
get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。过程对用户不可见。
区别三
对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
区别四
get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
区别五
get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
题目六
什么是服务器端包含(SSI)?
服务端包含(SSI)是一种简单的解释型服务端脚本语言,多数情况下只用在Web上,用servlet标签嵌入。SSI最常用的场景把一个或多个文件包含到Web服务器的一个Web页面中。当浏览器访问Web页面的时候,Web服务器会用对应的servlet产生的文本来替换Web页面中的servlet标签。
题目七
什么是ServletChaining?
ServletChaining是一种传输方法,用来把一个Servlet的输出发送给另一个Servlet。第二个Servlet的输出可以发送给第三个Servlet,依次循环。链末端Servlet负责把响应发送给客户端。
题目八
如何找出当前向你请求servlet的客户机?
ServletRequest类具有查找客户机的IP地址或主机名的功能。
getRemoteAddr()获取客户机的IP地址。
getRemoteHost()获取客户机的主机名。
题目九
HTTP响应的结构是什么?
HTTP响应由三部分组成:
状态代码:描述响应的状态。它可以用来检查请求是否已经成功完成。在请求失败的情况下,状态码可以用来找出失败的原因。如果您的servlet没有返回状态码,则默认返回成功状态码HttpServletResponse.SC_OK。
HTTP标头:它们包含更多关于响应的信息。例如,标题可以指定响应被视为陈旧的日期/时间,或用于安全地将实体传送给用户的编码形式。
Body:它包含响应的内容。正文可能包含HTML代码,图像等。主体由紧接在标题之后的HTTP事务消息中传输的数据字节组成。
题目十
sendRedirect和forward方法有什么区别?
区别一
sendRedirect方法可以定位到同一个web站点的其他应用,甚至可以通过传入绝对路径定位到别的web站点。forward方法只能转发给同一个web站点的资源。
区别二
sendRedirect转发后,浏览器url地址变为目的url地址。forward重定向后,浏览器url地址不变。
区别三
使用sendRedirect转发的过程,浏览器先向目的Servlet发送一次请求,Servlet看到sendRedirect将目的url返回到浏览器,浏览器再去请求目的url,目的url再返回response到浏览器。浏览器和服务器两次请求响应。
使用forward重定向的过程,是浏览器先向目的Servlet发送一次Request请求,然后再服务器端由Servlet再将请求发送到目的url,再由服务器端Servlet返回Response到浏览器端。浏览器和服务器一次请求响应。
区别四
sendRedirect方法由于两次浏览器服务器请求,所以有两个Request和Response。
forward方法的调用者与被调用者之间共享Request和Response。
完
程序员面试】是IT求职神器,提供海量C++、JAVA、前端等职业笔试题库,在线进行一线互联网名企笔试面试模拟考试练习,天天刷题,和牛人一起讨论经典试题,全面提升你的编程能力,海量高薪职位信息等着你!永远为下个月离职做好准备!年薪百万的码农都已关注!
原文:https://blog.51cto.com/15047485/2559933