Java面试深度解析:笔试题与Servlet生命周期

需积分: 9 0 下载量 159 浏览量 更新于2024-09-11 收藏 206KB PDF 举报
"Java面试及笔试题解析" Java面试中,常常会遇到各种技术问题,以下是一些常见的Java程序员面试笔试题以及相关知识点的详细解释: 1. JSP的常用指令: `<%@page language="java" contentType="text/html;charset=gb2312" session="true" buffer="64kb" autoFlush="true" isThreadSafe="true" info="text" errorPage="error.jsp" isErrorPage="true" isELIgnored="true" pageEncoding="gb2312" import="java.sql.*"%>` 这个指令包含了许多JSP页面的配置选项,如设置页面编码、启用Session、设置缓冲区大小、自动刷新、线程安全等。`isErrorPage`表示该页面是否处理错误,`isELIgnored`表示是否忽略EL(Expression Language)表达式。 2. doGet()和doPost()的调用时机: 在JSP中,当表单的`method`属性为`GET`时,服务器会调用Servlet的`doGet()`方法处理请求;如果`method`为`POST`,则调用`doPost()`方法。这两个方法是HTTP请求方法的映射,用于处理不同的HTTP请求类型。 3. Servlet的生命周期: Servlet的生命周期包括加载、初始化、服务和销毁四个阶段。Web容器在启动时加载Servlet,通过调用`init()`方法初始化Servlet。接着,每当有请求到达,`service()`方法会被调用,它会根据请求类型决定调用`doGet()`或`doPost()`。最后,Web容器关闭或卸载Servlet时,会调用`destroy()`方法。 4. 实现Servlet的单线程模式: 如果希望Servlet每次只处理一个请求,可以设置`isThreadSafe`属性为`false`,这样JSP编译后的Servlet将不支持多线程,确保同一时间只有一个请求被处理。 5. 页面间对象传递: - `request`:用于在一次请求内传递数据,从一个页面到另一个页面,但仅限于请求周期内。 - `session`:用于跨多个请求保存用户信息,适合存储会话级的数据。 - `application`:在整个Web应用程序范围内共享数据,适用于所有用户。 - `cookie`:客户端存储数据的方式,可以用来持久化用户信息,但有大小和数量限制。 6. JSP与Servlet的异同: - 相同点:两者都是构建动态Web应用的技术,都基于Java,都运行在服务器端。 - 不同点:JSP侧重于视图展示,方便编写HTML混合Java代码,而Servlet主要用于控制逻辑,处理请求和响应。JSP最终会被转换为Servlet并编译执行。 7. 会话跟踪技术: - `cookie`:在客户端存储数据,通过HTTP头发送回服务器。 - `url重写`:在URL后面附加查询参数来传递信息,适合防止CSRF攻击。 - `session`:服务器端存储用户会话信息,通过session ID在客户端和服务器之间建立关联。 - `隐藏域`:在HTML表单中使用隐藏字段存储数据,只在提交表单时发送。 8. JSP的四种范围: - `page`:作用范围仅限当前页面。 - `request`:作用范围覆盖整个请求,包括转发。 - `session`:作用范围覆盖整个会话。 - `application`:作用范围覆盖整个Web应用程序。 了解这些知识点对于Java开发者来说至关重要,它们涵盖了Web开发的核心概念和技术,有助于在面试中脱颖而出。