"这是一份关于JSP、Servlet和Oracle面试题的资料,涵盖了JSP执行过程、Servlet生命周期、JSP与Servlet的异同以及Oracle默认用户的知识点。"
在Java Web开发中,JSP(JavaServer Pages)和Servlet是两个关键概念,它们在构建动态网站方面起着重要作用。在面试中,了解这些技术的工作原理和生命周期是至关重要的。
1. JSP的执行过程:
- 当客户端(浏览器)发起HTTP请求时,请求被发送到服务器。
- JSP容器(如Tomcat)接收到请求后,将JSP文件转换为Servlet的源代码(.java文件)。
- 这个源代码随后被编译为字节码(.class文件),并加载到Java虚拟机(JVM)的内存中。
- JSP容器执行编译后的Servlet,处理请求,并通过HTTP响应将结果返回给客户端。
2. Servlet的生命周期:
- 当Web容器启动或者首次接收到对Servlet的请求时,它会加载Servlet类并调用`init()`方法进行初始化。
- 接下来,对于每个客户端请求,容器会调用Servlet的`service()`方法。`service()`会根据请求类型(GET、POST等)选择合适的`doGet()`或`doPost()`等方法来处理请求。
- 客户端接收响应后,当Web容器决定卸载Servlet或者服务器关闭时,会调用Servlet的`destroy()`方法,释放Servlet占用的资源。
3. JSP与Servlet的相似性和差异性:
- 相似点:两者都是Java Web开发的一部分,都能处理HTTP请求。
- 差异性:JSP更侧重于视图展示,允许在HTML中嵌入Java代码,而Servlet主要负责控制逻辑。JSP在编译时会被转化为Servlet,但其设计目的是为了分离表现层和业务逻辑。
4. JSP中的`forward`和`sendRedirect`:
- `forward()`是服务器端转发,URL不会改变,适合同一应用内部的跳转,且请求状态可以保留。
- `sendRedirect()`是客户端重定向,URL会显示实际跳转的地址,适用于跨应用跳转,新请求会丢失原始请求的一些信息。
5. JSP中的`include`:
- 静态`include`(<%@include file="..."%>)在编译JSP时完成,被包含页面的改动需要重新编译主页面。
- 动态`include`(<jsp:include page="..."/>)在每次请求时执行,被包含页面的改动不需要重新编译主页面,且可以传递请求参数。
6. Oracle数据库的默认用户:
- Oracle数据库在安装时会创建几个默认用户,如SYS、SYSTEM和SCOTT。
- SYS是具有最高权限的系统管理员,初始密码通常为“change_on_install”,它拥有所有数据字典的访问权。
- SYSTEM用户也有较高权限,用于数据库管理和维护,而SCOTT是一个示例用户,通常用于教学目的。
这些面试题涵盖了基本的Java Web技术和Oracle数据库管理,是评估开发者基础技能的重要参考。理解和掌握这些知识点对于在IT行业中从事Java Web开发和数据库管理工作至关重要。