面试题 JAVA 面试题 JAVA
需积分: 0 128 浏览量
更新于2010-03-01
收藏 220KB DOC 举报
Java是企业级应用开发的重要语言,特别是在Web开发领域,Servlet和JSP是核心组件。面试时,面试官常会考察应聘者对这些技术的理解和掌握程度。以下是对这些知识点的详细解释:
1. **Servlet包的区别**:
- `javax.servlet.*`:这是Servlet API的基础包,包含了Servlet和Filter的基本接口和类,比如`Servlet`, `ServletConfig`, `ServletContainerInitializer`等。
- `javax.servlet.http.*`:这个包扩展了基础包,提供了HTTP相关的类,如`HttpServletRequest`, `HttpServletResponse`, `HttpSession`等,专门处理HTTP请求和响应。
2. **Servlet中的核心类及其特点**:
- `ServletContext`:它代表了Servlet容器,可以用来存储全局变量,提供应用级别的共享数据。`setAttribute()`用于设置全局变量,`getAttribute()`用于获取。
- `ServletConfig`:每个Servlet的配置信息对象,通过`getInitParameter()`获取初始化参数。
- `HttpServletRequest`:封装了HTTP请求的所有信息,如`getParameterValue()`用于获取单个请求参数,`getParameterValues()`获取多个同名参数,`getSession()`获取或创建Session。
- `HttpServletResponse`:负责生成HTTP响应,`getOutputStream()`获取输出流,`sendRedirect()`用于重定向,`forward()`用于请求转发。
- `HttpSession`:用户在多个页面间共享数据的机制,`setAttribute()`设置属性,`getAttribute()`获取属性。
3. **Servlet的体系结构**:
- Servlet体系由`Servlet`, `GenericServlet`和`HttpServlet`构成。`Servlet`是最基本的接口,`GenericServlet`实现了`Servlet`接口,适用于任何协议,但通常不直接使用。`HttpServlet`继承`GenericServlet`,并针对HTTP协议做了具体实现。
4. **创建自定义Servlet**:
自定义Servlet通常继承`HttpServlet`,并覆盖`doGet()`或`doPost()`方法来处理HTTP GET和POST请求。
5. **Servlet生命周期**:
- 初始化(Init):Servlet首次被调用时,容器会调用`init()`方法。
- 服务(Service):`doGet()`或`doPost()`方法在此阶段执行,处理客户端请求。
- 销毁(Destroy):当Servlet不再需要时,容器调用`destroy()`方法释放资源。
6. **JSP与Servlet的关系**:
- JSP本质上就是一个Servlet,JSP文件在服务器端会被转换为Servlet类并编译。
7. **JSP的脚本元素、指令和动作**:
- 脚本元素:`<%...%>`用于Java代码块,`<%=...%>`用于输出表达式,`<%!...%>`声明字段、方法和类。
- 指令:`<%@page...%>`设置页面属性,`<%@include...%>`包含其他文件,`<%@taglib...%>`引入自定义标签库。
- 动作:`<jsp:useBean>`创建和引用Bean,`<jsp:setProperty>`设置Bean属性,`<jsp:forward>`转发请求,`<jsp:include>`动态包含页面。
8. **JSP内置对象及其功能**:
- `request`:与`HttpServletRequest`相同,获取请求信息。
- `response`:与`HttpServletResponse`相同,设置响应。
- `out`:`PrintWriter`对象,输出HTML文本。
- `pageContext`:访问所有内置对象,如`session`, `request`, `application`等。
- `session`:管理用户会话状态。
- `application`:`ServletContext`对象,全局共享数据。
- `config`:`ServletConfig`对象,获取Servlet初始化参数。
- `page`:表示生成该JSP页面的Servlet实例。
- `exception`:如果`isErrorPage="true"`,则表示异常对象。
9. **JSP分页实现**:
- 分页通常需要知道总行数、每页显示行数和当前页数。通过SQL查询,根据当前页数和每页行数定位数据范围。例如,SQL Server和Oracle都有各自的分页语法,这里展示了SQL Server的分页查询方式。
以上是Java Web面试中常见的Servlet和JSP相关知识点,理解和掌握这些内容对于Java开发者来说至关重要,因为它们是构建Web应用程序的基础。在实际开发中,还需要考虑性能优化、安全性、可维护性等因素,这需要在实践中不断积累和提升。