2022年Java面试题全集 .pdf





《2022年Java面试题全集 .pdf》由会员分享,可在线阅读,更多相关《2022年Java面试题全集 .pdf(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、96、阐述 Servlet 和 CGI 的区别 ?答: Servlet 与 CGI 的区别在于Servlet 处于服务器进程中,它通过多线程方式运行其service()方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI 对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet。补充: Sun Microsystems 公司在 1996年发布 Servlet 技术就是为了和CGI 进行竞争, Servlet是一个特殊的Java程序,一个基于Java的 Web 应用通常包含一个或多个Servlet 类。 Servlet不能够自行创建并执行,它是在Servlet 容器
2、中运行的,容器将用户的请求传递给Servlet 程序,并将Servlet 的响应回传给用户。通常一个Servlet 会关联一个或多个JSP页面。以前CGI经常因为性能开销上的问题被诟病,然而Fast CGI 早就已经解决了CGI 效率上的问题,所以面试的时候大可不必信口开河的诟病CGI,事实上有很多你熟悉的网站都使用了CGI 技术。97、Servlet 接口中有哪些方法?答: Servlet 接口定义了5个方法,其中前三个方法与Servlet 生命周期相关:- void init(ServletConfig config) throws ServletException - void serv
3、ice(ServletRequest req, ServletResponse resp) throws ServletException, java.io.IOException - void destory() - java.lang.String getServletInfo() - ServletConfig getServletConfig() Web 容器加载Servlet 并将其实例化后,Servlet 生命周期开始,容器运行其init() 方法进行Servlet 的初始化;请求到达时调用Servlet 的 service()方法, service()方法会根据需要调用与请求对应
4、的doGet 或 doPost 等方法;当服务器关闭或项目被卸载时服务器会将Servlet 实例销毁,此时会调用Servlet 的 destroy()方法。98、转发( forward )和重定向( redirect)的区别?答: forward 是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL ,把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。redirect 就是服务器端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,因此从浏览器的地址栏中可以看到跳转后的链接地址,很
5、明显redirect 无法访问到服务器保护起来资源,但是可以从一个网站 redirect 到其他网站。forward 更加高效,所以在满足需要时尽量使用forward(通过调用RequestDispatcher 对象的 forward() 方法,该对象可以通过ServletRequest对象的getRequestDispatcher()方法获得),并且这样也有助于隐藏实际的链接;在有些情况下,比如名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 31 页 - - - - -
6、 - - - - 需要访问一个其它服务器上的资源,则必须使用重定向(通过HttpServletResponse 对象调用其 sendRedirect()方法实现)。99、JSP有哪些内置对象?作用分别是什么?答: JSP有 9 个内置对象:- request:封装客户端的请求,其中包含来自GET 或 POST 请求的参数;- response:封装服务器对客户端的响应;- pageContext:通过该对象可以获取其他对象;- session:封装用户会话的对象;- application :封装服务器运行环境的对象;- out:输出服务器响应的输出流对象;- config:Web 应用的配置
7、对象;- page:JSP页面本身(相当于Java程序中的this);- exception:封装页面抛出异常的对象。补充: 如果用 Servlet 来生成网页中的动态内容无疑是非常繁琐的工作,另一方面,所有的文本和 HTML 标签都是硬编码,即使做出微小的修改,都需要进行重新编译。JSP解决了Servlet 的这些问题,它是Servlet 很好的补充,可以专门用作为用户呈现视图(View ),而Servlet 作为控制器(Controller )专门负责处理用户请求并转发或重定向到某个页面。基于Java的 Web 开发很多都同时使用了Servlet 和 JSP。JSP页面其实是一个Servl
8、et,能够运行Servlet 的服务器( Servlet 容器)通常也是JSP容器,可以提供JSP页面的运行环境,Tomcat就是一个Servlet/JSP容器。第一次请求一个JSP页面时, Servlet/JSP 容器首先将JSP页面转换成一个JSP页面的实现类,这是一个实现了JspPage接口或其子接口HttpJspPage的 Java类。JspPage接口是 Servlet 的子接口,因此每个JSP页面都是一个Servlet。转换成功后,容器会编译 Servlet 类,之后容器加载和实例化Java字节码,并执行它通常对Servlet 所做的生命周期操作。对同一个JSP页面的后续请求,容器
9、会查看这个JSP页面是否被修改过,如果修改过就会重新转换并重新编译并执行。如果没有则执行内存中已经存在的Servlet 实例。我们可以看一段JSP代码对应的Java程序就知道一切了,而且9 个内置对象的神秘面纱也会被揭开。JSP页面: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 31 页 - - - - - - - - - base href=首页 * font-family:Arial; Hello, World!Current time is: 对应的 Java
10、代码:/* * Generated by the Jasper component of Apache Tomcat * Version: Apache Tomcat/7.0.52 * Generated at: 2014-10-13 13:28:38 UTC * Note: The last modified time of this file was set to * the last modified time of the source file after * generation to assist with modification tracking. */ package or
11、g.apache.jsp; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 31 页 - - - - - - - - - public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache
12、.jasper.runtime.JspSourceDependent private static final javax.servlet.jsp.JspFactory _jspxFactory = javax.servlet.jsp.JspFactory.getDefaultFactory(); private static java.util.Map _jspx_dependants; private javax.el.ExpressionFactory _el_expressionfactory; private org.apache.tomcat.InstanceManager _js
13、p_instancemanager; public java.util.Map getDependants() return _jspx_dependants; public void _jspInit() _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext().getExpressionFactory(); _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory
14、.getInstanceManager(getServletConfig(); public void _jspDestroy() public void _jspService( final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException / 内置 对象就是在 这里定义的final javax.servlet.jsp.Pa
15、geContext pageContext; javax.servlet.http.HttpSession session = null; final javax.servlet.ServletContext application; final javax.servlet.ServletConfig config; javax.servlet.jsp.JspWriterout = null; final java.lang.Object page = this; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
16、 - - - - - - 第 4 页,共 31 页 - - - - - - - - - javax.servlet.jsp.JspWriter _jspx_out = null; javax.servlet.jsp.PageContext _jspx_page_context = null; try response.setContentType(text/html;charset=UTF-8); pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192 , true); _jspx_
17、page_context = pageContext; application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); _jspx_out = out ; out .write(r); out .write(n); String path = request.getContextPath(); String basePath = request.getSch
18、eme() + :/+ request.getServerName() + : + request.getServerPort()+ path + /; / 以下代 码通过输 出流将 HTML 标签输 出到 浏览器中out .write(rn); out .write(rn); out .write(rn); out .write(rn); out .write( rn); out .write( rn); out .write( 首 页rn); out .write( rn); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - -
19、名师精心整理 - - - - - - - 第 5 页,共 31 页 - - - - - - - - - out .write( t* font-family: Arial; rn); out .write( rn); out .write( rn); out .write( rn); out .write( rn); out .write( Hello, World!rn); out .write( rn); out .write( Current time is: ); out .print(new java.util.Date().toString(); out .write(rn); o
20、ut .write( rn); out .write(rn); catch (java.lang.Throwable t) if (!(t instanceof javax.servlet.jsp.SkipPageException) out = _jspx_out; if (out != null &out .getBufferSize() != 0) try out .clearBuffer(); catch (java.io.IOException e) if (_jspx_page_context != null) _jspx_page_context.handlePageExcept
21、ion(t); else throw new ServletException(t); finally _jspxFactory.releasePageContext(_jspx_page_context); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 31 页 - - - - - - - - - 100、 get和 post请求的区别?答:get 请求用来从服务器上获得资源,而post是用来向服务器提交数据;get 将表单中数据按照name=value 的形式,添加
22、到action 所指向的URL 后面,并且两者使用?连接,而各个变量之间使用& 连接; post 是将表单中的数据放在HTTP 协议的请求头或消息体中,传递到action 所指向 URL ;get 传输的数据要受到URL 长度限制( 1024 字节);而post 可以传输大量的数据,上传文件通常要使用post方式;使用 get 时参数会显示在地址栏上,如果这些数据不是敏感数据,那么可以使用get;对于敏感数据还是应用使用post;get 使用 MIME 类型 application/x-www-form-urlencoded的 URL 编码(也叫百分号编码)文本的格式传递参数,保证被传送的参数
23、由遵循规范的文本组成,例如一个空格的编码是%20 。101、常用的Web 服务器有哪些?答: Unix 和 Linux 平台下使用最广泛的免费HTTP 服务器是Apache 服务器,而Windows 平台的服务器通常使用IIS 作为 Web 服务器。选择Web 服务器应考虑的因素有:性能、安全性、日志和统计、虚拟主机、代理服务器、缓冲服务和集成应用程序等。下面是对常见服务器的简介:- IIS:Microsoft 的 Web 服务器产品,全称是Internet Information Services 。IIS 是允许在公共Intranet 或 Internet 上发布信息的Web 服务器。 I
24、IS 是目前最流行的Web 服务器产品之一,很多著名的网站都是建立在IIS 的平台上。 IIS 提供了一个图形界面的管理工具,称为Internet服务管理器,可用于监视配置和控制Internet 服务。 IIS 是一种 Web 服务组件,其中包括Web服务器、 FTP 服务器、 NNTP 服务器和SMTP 服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。它提供ISAPI(Intranet Server API )作为扩展Web 服务器功能的编程接口;同时,它还提供一个Internet 数据库连接器,可以实现对数据库的
25、查询和更新。- Kangle :Kangle Web 服务器是一款跨平台、功能强大、安全稳定、易操作的高性能Web 服务器和反向代理服务器软件。此外,Kangle 也是一款专为做虚拟主机研发的Web 服务器。实现虚拟主机独立进程、独立身份运行。用户之间安全隔离,一个用户出问题不影响其他用户。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 31 页 - - - - - - - - - 支持 PHP、ASP、ASP.NET、 Java、Ruby 等多种动态开发语言。- Web
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年Java面试题全集 2022 Java 试题 全集

限制150内