Java Web 面试题2

1、Servlet 的生命周期,并说出 Servlet 与 CGI 的区别

Web 容器加载 Servlet 并将其实例化后,Servlet 生命周期开始,容器运行其 init 方法进行 Servlet 的初始化,请求到达时运行其 service 方法,service 方法自动派遣,运行请求的 doXXX 方法(doGet、doPost),当服务器决定将实例销毁的时候调用其 Destroy 方法。与 CGI 的区别在于,Servlet 处于服务器进程中,它通过多线程方式运行其 service 方法,一个实例可以运行多个请求,并且其实例一般不会销毁,而 CGI 对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于 Servlet。

2、forward 与 redirect 的区别

forward 是控制权的转向,是服务器请求资源,服务器直接请求目标地址的 URL,把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览器。浏览器不知道服务器发送的内容是哪儿来的,所以它的地址还是原来的地址。redirect 就是服务器端根据逻辑,发送一个状态码,告诉浏览器去请求一个新的地址,浏览器地址栏上显示的是新的请求地址。forward 更高效。有些情况下,如果需要使用其它服务器上的资源,则必须使用 redirect

3、JSP 中动态 include 与静态 include 的区别

动态 include 用 jsp:include 动作实现:<jsp:include page="test.jsjp" flush="true"/>,它总是检查所包含文件中的变化,适用于包含动态页面,并且可以带参数;静态 include 用 include 伪代码实现,它不会检查所含文件的变化,适用于包含静态页面:<%@ include file="test.html" %>

4、JSP 有哪些内置对象,作用是什么

request:同 Servlet 里的request

response:同 Servlet 里的response

session:同 request.getSession()

application:同 request.getServletContext

out:同 response.getWriter()

config:同 Servelt 的 init 方法里的 ServletConfig 参数

page:表示该页面产生的一个 Servlet 实例

exception:针对错误网页,未捕捉的除外

5、JSP 的常用指令

<%@ page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8" %>

<%@ include file="test.html" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/fmt" %>

6、JSP 有哪些动作,分别是什么

JSP 共有以下 6 种动作

jsp:include 在页面被请求时引用一个文件

jsp:useBean 寻找或实例化一个 JavaBean

jsp:setProperty 设置 JavaBean 的属性

jsjp:getProperty 输出某个 JavaBean 的属性

jsp:forward 转发

jsp:plugin 根据浏览器类型为 Java 插件生成 object 标记

7、GET 与 POST 的区别

form 中的 get 和 post 方法,在数据传输过程中分别对应了 http 协议中的  GET 与 POST 方法。

GET 是用来从服务器上获取数据,而 POST 是用来向服务器上传数据

GET 将表单中数据按 variable=value 的形式,添加到 action 所指向的 URL 后面,两者使用“?”连接,而多个变量之间使用“&”连接;POST 是将表单中的数据放在 form 的数据体中,按照变量和值相对应的方式,传递到 action 所指向的 URL

GET 是不安全的,因为在传输过程,数据被放在请求的 URL 中;POST 的所有操作对用户来说是不可见的

GET传输的数据量小,这主要是因为受 URL 长度限制;POST 可以传输大量的数据,所以上传文件只能使用 POST

GET 限制 form 表单的数据集必须为 ASCII 字符,而 POST 支持整个 ISO10646 字符集

GET 是 form 的默认方法

8、常用的 web 容器和开发工具

最常用的容器:tomcat、weblogic

开发工具:eclipse、jbuilder、ItelliJ IDEA

9、Web Application 的基本目录结构

webapps

application

jsp 页面

WEB-INF

classes

lib

web.xml

jsp 页面

META-INF

10、JSP 和 Servlet 有哪些相同点和不同点,它们之间的联系是什么

JSP 是 Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的视图表达。JSP 编译后是“Servlet 类”。Servlet 和 JSP 最主要的不同点在于,Servlet 的应用逻辑是在 Java 文件中,并且完全从表示层中的 HTML 里分离开来。而 JSP 的情况是 Java 和 HTML 可以组合成一个扩展名为 .jsp 的文件。JSP 侧重于视图,Servlet 主要用于控制逻辑

11、JSP 的四种数据共享范围

pageContext 是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Servlet 类(可以带有任何的 include 指令,没有 include 动作)表示。这既包括 Servlet 又包括被编译成 Servlet 的 JSP 页面

Request 是代码 web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 web 组件(由于 forward 指令和 include 动作的关系)

Session 是代表与用于某个 web 客户机的一个用户体验相关的对象和属性。一个 web 会话可以也经常或跨越多个客户机请求

Application 是代表与整个 web 应用程序相关的对象和属性。这实质上是跨越整个 web 应用程序,包括多个页面、请求和会话的一个全局作用域

12、对 MVC 的理解,MVC 有什么优缺点,结合Struts,说明在一个 Web 应用中如何去使用

基于 Java 的 Web 应用系统采用 MVC 架构模式,即 model(模型)、view(视图)、control(控制器)分离设计;这是目前 Web 应用服务系统的主流设计方向

MVC 设计模式:应用观察者模式的框架模式

model:处理业务逻辑的模块,每一种处理一个模块(模型,操作数据的业务处理层,并独立于表现层)

view:负责页面显示,显示 model 处理结果给用户,主要实现数据到页面转换过程(视图,通过客户端数据类型显示数据,并回显模型层的执行结果)

control:负责请求分发,把 form 数据传递给 model 处理,把处理结果的数据传递给 view 显示(控制器,视图层和模型层的桥梁,控制数据的流向,接受视图发出的事件,并重绘视图)

JSP + Servlet + JavaBean,以控制器为核心,JSP 只负责显示和收集数据,Servlet,连接视图和模型,将视图层数据发送给模型层,JavaBean,分为业务类和数据实体,业务类处理业务数据,数据实体承载数据,基本上大多数的项目都是使用这种 MVC 的实现模式

13、会话跟踪技术

Cookie、URL 重写、设置表单隐藏域

14、过滤器有哪些作用

验证客户是否来自可信网络

对客户提交的数据进行重新编码

过滤掉客户的某些不应该出现的词汇

验证用户是否可以登录

验证客户的浏览器是否支持当前的应用

记录系统日志

15、web.xml 的作用

用户配置 web 应用的信息,如 listener、filter、Servlet

16、常用的 JSTL 标签

<c:if>

<c:choose>、<c:when>、<c:otherwise>

<c:forEach>

<c:set>

17、中间件

中间件就是程序中可植入的,可重用的,与业务逻辑无关的各种组件

中间件是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效的开发和集成复杂的应用软件

中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。

举例:

RMI(Remote Method Invocation)远程调用

Load Balancing 负载均衡,将访问符合分散到各个服务器中

Treasparent Fail-over 透明的故障切换

Clustering 集群,用多个小的服务器代替大型机

Back-end-Integration 后端集成,用现有的、新开发的系统如何去集成遗留的系统

Transaction 事务(全局事务:分布式事务)(局部事务:在同一数据库连接内的事务)

Dynamic Redeployment 动态重新部署,在不停止原系统的情况下,部署新的系统

System Managerment 系统管理

Threading 多线程处理

Message-oriented Middleware 面向消息的中间件(异步的调用编程)

Component Life Cycle 组件的生命周期管理

Resource pooling 资源池

Security 安全

Caching 缓存

18、如何输出某种编码的字符串

String str = new String("testABC".getBytes("iso-8859-1"), "utf-8");

19、J2EE 是技术还是平台还是框架

J2EE 本身是一个标准,一个为企业分布式应用开发提供的标准平台

J2EE 也是一个框架,包括 JDBC、JNDI、RMI、JMS、EJB、JTA 等技术

20、什么是 ORM

对象关系映射(Object-Relational Mapping)是一种为了解决面向对象与面向关系数据库存在的互不匹配的技术,简单说,ORM 是通过使用描述对象和数据库之间映射的元数据,将 Java 程序中的对象自动持久化到关系数据库中,本质上就是将数据从一种形式转换到另一种形式

21、Hibernate 的 5 个核心接口

Configuration:配置 Hibernate,根据其启动 Hibernate,创建 SessionFactory 对象

SessionFactory:初始化 Hibernate,充当数据存储源的代理,创建 session 对象,SessionFactory 是线程安全的,意味着它的同一个实例可以被应用的多个线程共享,是重量级、二级缓存

Session:负责保存、更新、删除、加载和查询对象,是线程不安全的,避免多个线程共享一个 session,是轻量级、一级缓存

Query 和 Criteria:执行数据库的查询

22、Hibernate 是如何处理事务的

Hibernate 的事务实际上是底层的 JDBC Transaction 的封装或者是 JTA Transaction 的封装,默认情况下使用 JDBC Transaction

23、Connection 类中有哪几个事务处理方法

setAutoCommit(boolean autoCommint):设置是否自动提交事务,默认为自动提交

commint():提交事务

rollback():回滚事务

24、JDBC 中访问数据库的步骤、Statement 和 PreparedStatement 的区别

Java 中访问数据库的步骤如下

1)注册驱动

2)建立连接

3)创建 Statement

4)执行 sql 语句

5)处理结果集(若 sql 语句为查询语句)

6)关闭连接

Statement、PreparedStatement 区别

1) 创建时的区别:

Statement stm = con.createStatement();

PreparedStatement pstm = con.prepareStatement(sql);

执行的时候:

stm.execute(sql);

pstm.execute();

2) PreparedStatement 一旦绑定了 SQL,此 pstm 就不能执行其它的 SQL,即只能执行一条 SQL 命令;Statement 可以执行多条 SQL 命令。

3) 对于执行同构的 SQL(只有参数值不同,其它SQL 结构都相同),用 PreparedStatement 的执行效率比较高,支持预编译,可以执行批量处理任务;对于异构的SQL 语句,Statement 的执行效率较高。

4) 代码的可读性和可维护性;(例如一个insert 的 SQL 语句,stm 在 SQL 中需要用字符形式写入传递的参数,pstm 提供方法传递参数,并且过滤掉SQL 中的特俗字符“ ’”,“-”)。

5) PreparedStatement 提高了安全性,防止了SQL 注入,但 Statement 不能实现,只能做判断和过滤。

25、Hibernate 中 Java 对象的三种状态,对象分别如何进入某种状态

1)临时状态(transient)

特征:

不处于 Session 缓存中

数据库中没有对象记录

Java 对象如果进入临时状态:

通过 new 语句创建一个对象时

当调用 session 的 delete() 方法,从 session 缓存删除一个对象时

2)持久化状态(persisted)

特征:

处于 session 缓存中

数据库中有对象记录

session 在特定时刻会保持二者同步

Java 对象如何进入持久化状态

session 的 save() 从临时状态到持久化状态

session 的 load(), get() 方法返回的对象

session 的 find() 返回的 list 集合中存放的对象

session 的 update(), saveOrUpdate() 使游离态到持久化状态

3)游离状态(detached)

特征:

不再位于 session 缓存中

游离对象由持久化状态转变而来,数据库中可能还有对应记录

Java 对象如何从持久化状态到游离状态

session 的 close() 方法

session 的 evict() 方法,从缓存中删除一个对象。 提高性能,少用。

26、JDBC 相对于 Hibernate 的优势

JDBC 效率高、直接操作数据库比较灵活

27、Hibernate 如何延时加载

当 Hibernate 在查询数据的时候,数据并没有存在内存中,当程序真正对数据进行操作时,对象才存在内存中,就实现了延时加载。节省了服务器的内存开销,从而提高了服务器的性能

28、session.load() 与 session.get() 的区别

都可以根据指定的实体类和 id 从数据库读取记录,并返回与之对应的实体对象

如果没有发现符合条件的记录,get 方法返回 null,而 load 方法会抛出一个 ObjectNotFundException

29、cookie 机制与 session 机制的区别

cookie 机制采用的是在客户端保持状态的方案,而 session 机制采用的是在服务器端保持状态的方案。由于服务器端保持状态的方案也需要在客户端保存一个标识,所有,session 机制可能需要借助于 cookie 机制来达到保存标识的目的

转发495303098的,供参考学习

原文地址:https://www.cnblogs.com/luobailin/p/9259687.html

时间: 2024-11-10 14:08:46

Java Web 面试题2的相关文章

超实用的Java web面试题

Java web面试题想要更多面试题和学习资料的可以私聊联系我,大家一起交流学习! 1.Tomcat的优化经验答:去掉对web.xml的监视,把jsp提前编辑成Servlet.有富余物理内存的情况,加大tomcat使用的jvm的内存 2.HTTP请求的GET与POST方式的区别答:servlet有良好的生存期的定义,包括加载和实例化.初始化.处理请求以及服务结束.这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达.3.解释一下什么是ser

Java Web面试题整理(思维导图)

1,动态网站技术有哪些? 2,一般的Web架构是指BS 还是CS,BS架构是什么咚咚? 3,Web应用程序的流程,即把一个URL串输入地址栏后发生写什么? 4,说一说Servlet生命周期? 5,在Web应用中,客户端向服务器请求数据的方式通常有啥? 6,讲一讲你对重定向与请求转发的认识? 7,ServletConfig对象有何作用,在Servlet中如何使用? 8,关于ServletContext对象你了解多少? 9,你知道HttpServletRequest,HTTPServletRespo

java web 面试题

JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象. 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父

[转]JAVA WEB 面试题

原文:http://blog.csdn.net/liuxiaogangqq/article/details/8124793 1.jsp和servlet的区别.共同点.各自应用的范围?? JSP是Servlet技术的扩展,本质上就是Servlet的简易方式.JSP编译后是"类servlet".Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来.而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件.

Java毕业设计----基于Java web的在线试题库管理系统

联系qq:2835777178 有兴趣者可先看代码运行视频再决定 部分论文: 目录 1 前 言 1 1.1 在线试题库管理系统现状 1 1.2 在线试题库管理系统的意义 2 2 系统的开发环境及技术简介 2 2.1 Eclipse简介 4 2.2 JSP简介 4 2.3 TOMCAT简介 4 2.4 MYSQL简介 4 3 系统可行性分析 5 3.1可行性分析 5 3.1.1经济可行性 5 3.1.2技术可行性 5 3.1.3操作可行性 5 4系统设计 6 4.1设计思想 6 4.2系统总体功能

java面试题全集(中)--Java Web和Web Service相关面试题

这部分主要是与Java Web和Web Service相关的面试题. 96.阐述Servlet和CGI的区别? 答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service()方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet. 补充:Sun Microsystems公司在1996年发布Servlet技术就是为了和CGI进行竞争,Servlet是一个特殊的Java程

Java笔试题之《Java web部分》

Java web部分 1.Tomcat的优化经验      答:去掉对web.xml的监视,把jsp提前编辑成Servlet.      有富余物理内存的情况,加大tomcat使用的jvm的内存 2.HTTP请求的GET与POST方式的区别      答:servlet有良好的生存期的定义,包括加载和实例化.初始化.处理请求以及服务结束.这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达. 3.解释一下什么是servlet;      答

java常见面试题

从网上转的一些java基础知识面试题: 1.String是最基本的数据类型吗? 基本数据类型包括byte.int.char.long.float.double.boolean和short. java.lang.String类是final类型的,因此不可以继承这个类.不能修改这个类.为了提高效率节省空间,我们应该用StringBuffer类 2.int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置类型).Int是java的原始数据类型,Integer是j

java基础知识面试题(41-95)

41.日期和时间:- 如何取得年月日.小时分钟秒?- 如何取得从1970年1月1日0时0分0秒到现在的毫秒数?- 如何取得某月的最后一天?- 如何格式化日期?答:问题1:创建java.util.Calendar 实例,调用其get()方法传入不同的参数即可获得参数所对应的值.Java 8中可以使用java.time.LocalDateTimel来获取,代码如下所示. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 public class D