admin 管理员组

文章数量: 887059


2024年1月16日发(作者:datetimepicker空)

javaEE阶段常见面试题题锦

1、Servlet执行时一般实现哪几个方法?

doGet(HttpServletRequest

response)

doPost(HttpServletRequest

response)

init()

destroy()

2、说出Servlet的生命周期?

Servlet运行在Servlet容器中,其生命周期由容器来管理。Servlet的生命周期通过t接口中的init()、service()和destroy()方法来表示。

Servlet的生命周期包含了下面4个阶段:

(1)加载和实例化

Servlet容器负责加载和实例化Servlet。当Servlet容器启动时,或者在容器检测到需要这个Servlet来响应第一个请求时,创建Servlet实例。

(2)初始化

在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象。初始化的目的是为了让Servlet对象在处理客户端请求前完成一些初始化的工作,如建立数据库的连接,获取配置信息等。对于每一个Servlet实例,init()方法只被调用一次。在初始化期间,Servlet实例可以使用容器为它准备的ServletConfig对象从Web应用程序的配置信息(在中配置)中获取初始化的参数信息。在初始化期间,如果发生错误,Servlet实例可以抛出ServletException异常来通知容器。

(3)请求处理

Servlet容器调用Servlet的service()方法对请求进行处理。要注意的是,在service()方法调用之前,init()方法必须成功执行。在request,HttpServletResponse

request,HttpServletResponse

service()方法中,Servlet实例通过ServletRequest对象得到客户端的相关信息和请求信息,在对请求进行处理后,调用ServletResponse对象的方法设置响应信息。在service()方法执行期间,如果发生错误,Servlet实例可以抛出ServletException异常。

(4)服务终止

当容器检测到一个Servlet实例应该从服务中被移除的时候,容器就会调用实例的destroy()方法,以便让该实例可以释放它所使用的资源,保存数据到持久存储设备中。当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收。如果再次需要这个Servlet处理请求,Servlet容器会创建一个新的Servlet实例。

在整个Servlet的生命周期过程中,创建Servlet实例、调用实例的init()和destroy()方法都只进行一次,当初始化完成后,Servlet容器会将该实例保存在内存中,通过调用它的service()方法,为接收到的请求服务

3、请描述Session与Cookie的异同之处

具体来说cookie机制采用的是在客户端保持状态的方案。存储在客户端,可以设定时间限制,若不设定时间则不会消亡。它是在用户端的会话状态的存贮机制,他需要用户打开客户端的cookie支持。

而session机制采用的是一种在客户端与服务器之间保持状态的解决方案。存储在服务端,必须有时间限定,若不设置,在一段时间后自动消亡。

4、什么情况下调用doGet()和doPost()?

1)、Form表单的method方法如果是post的话当表单提交的时候就要调用doPost,其他的访问方式比如链接访问,表单里method为get表单提交时候调用doGet。

2)、地址栏里直接提交都默认用get方法提交。

3)、这两种方法有本质的区别,get传递参数附加在url后,大小个数有严格限制且只能是字符串(255)。post的参数传递不通过

url,使用数据包传递,所以可以很大,也可以传递二进制数据,如文件的上传。

5、java web的四种作用域

page 是代表与一个页面相关的对象和属性。一个页面由一个编译好的Java servlet 类.这既包括servlet 又包括被编译成servlet 的JSP页面。当前页面有效。

request代表与Web客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个Web组件。比如forward指令就可以使请求跨越多个页面。同一请求内有效。session 是代表与用于某个Web客户机的一个用户体验相关的对象和属性。一个Web会话可以也经常会跨越多个客户机请求。一次会话(session)通常持续于用户打开浏览器后的一系列访问中。从用户登录到用户退出之间有效。

application 是代表与整个Web应用程序相关的对象和属性。这实质上是跨越整个Web应用程序,包括多个页面、请求和会话的一个全局作用域。从服务器启动到服务器关闭之间有效。

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

1)、Jsp是页面技术,但是编译后的文件就是servlet文件。

2)、Servlet是服务器端的小程序,主要是用来处理请求的。

3)、Jsp有自己的标签。

4)、JSP侧重于视图,Servlet主要用于控制逻辑

7、JSP的内置对象?

1)、request 代表请求

2)、response 响应对象

3)、out 输出对象

4)、page 代表当前页面

5)、application 应用程序对象

6)、pageCotext 页面上下文

7)、config 配置对象

8)、session 会话

9)、exception 异常

8、说一下常用的jsp标准动作

Jsp:useBean动作,主要功能是用来实例化一个bean对象

Jsp:setProperty动作,主要是用来给bean对象中的某些属性或单个属性赋值Jsp:getProperty动作,主要用来显示bean对象中的属性值

Jsp:forward动作,主要用来进行页面跳转,属于请求转发模式

Jsp:include动作,主要用来导入页面,属于页面的动态导入

Jsp:param动作,主要是在forward跳转或页面include导入时进行参数值传递的Jsp:plugin动作,主要是引入插件

9、JSP中动态INCLUDE与静态INCLUDE的区别?

动态导入:先编译后包含

静态导入:先包含后编译

10、forward 和redirect的区别?

forward: 1)此行为是服务器端行为。

2)地址栏仍为原来的页面显示URL

3)多个页面共用request对象

4)只能在同一工程内跳转

5)forward下面的代码不在编译。

redirect: 1)此行为是客户端行为

2)地址栏显示新页面URL

3)多个页面不共用requst对象

4)可以在不同工程中跳转

5)redirect下面的代码也编译,编译后才跳转

11、在web开发中我们经常使用iso8859-1,我们如何实现编码的转化?

使用request对象racterEncoding("utf-8");

使用response对象 racterEncoding("utf-8");

tentType("text/html;charset=utf-8"); 通过流进行转换:

String name = "highcom工程有限公司";

name = new String(es("ios8859-1"),"utf-8");

12、JDBC中,Statement ,PreparedStatement的区别是什么?

Statement 接口提供了执行语句和获取结果的基本方法。

PreparedStatement 接口添加了处理IN 参数的方法。可以进行预编译,提高速度。

13、说出数据连接池的工作机制是什么?

J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。(通过参数可以决定最大连接数是多少,服务器启动的时候建立多少连接,池中需要维持多少空闲连接等。)当使用的连接调用完成后,就可以讲连接close,这个时候池驱动程序将此连接放回连接池并且标记为空闲,其他调用就可以使用这个连接。

14、j2ee常用的设计模式?简单介绍一个你常用到的设计模式

Java中的23种设计模式:

Factory(工厂模式),Builder(建造模式),Factory Method(工厂方法模式),Prototype(原始模型模式),Singleton(单例模式),Facade(门面模式),Adapter(适配器模式),Bridge

(桥梁模式),Composite(合成模式),Decorator(装饰模式),Flyweight(享元模式),Proxy (代理模式),Command(命令模式),Interpreter(解释器模式),V isitor(访问者模式),Iterator(迭代子模式),Mediator(调停者模式),Memento(备忘录模式),Observer(观察者模式),State(状态模式),Strategy(策略模式),Template Method(模板方法模式),Chain Of Responsibleity(责任链模式)

工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法

针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。

15、EJB与JA V A BEAN的区别?

EJB的英文全称是企业级的JavaBean

两者是完全不同的

JavaBean是一个组件,而EJB就是一个组建框架

JavaBean面向的是业务逻辑和表示层的显示,通过编写一个JavaBean,可以将业务逻辑的事件和事务都放在其中,然后通过它的变量属性将所需要的内容在表示层传递显示。

EJB主要分为会话bean,实体bean,消息驱动bean。是部署在服务器上的可执行组建或商业对象。EJB有一个部署描述符,通过这个部署描述符可以对EJB的属性进行描述。EJB不和表示层交互。

16、说一下常用的JSTL?

我们通常使用标签去替换jsp页面中的代码段和java表达式,常用的有EL表达式,forEach标签,if标签,choose标签,set标签,out标签等,这些都是jstl(jsp标准标签库)中核心库的标签,其uri是/doc/,/jsp/jstl/core,除此还有一些其他的标签库,如

函数,sql,xml等,不过我们常用的就是core,而且现在多使用框架编程,struts框架有其自带的标签库,对我们来说最重要的是使用标签的习惯和意识。

17、简单描述一下MVC的流程

在MVC模型中,M代表model,模型层;V代表view,视图层;C代表controller,控制层。首先由浏览器browser发送请求到达控制器(controller),在控制器中可以选择接下来的操作,如果不需要对数据进行操作或与数据进行交互,可直有控制器选择相应视图,响应会浏览器。如果需要对数据进行操作或与DB进行交互,可由控制器

(C)选择需要的model,在model层中进行数据操作和与DB的交互,将操作后的数据返回给控制器(C),在由控制器选择相应的视图,将其相应会浏览器。

18、谈一下对ajax的了解?

1)、javaScript脚本

2)、必须有XmlHttpRequest对象

3)、DOM对象

4)、回调函数。

5)、返回数据类型可以是字符串或XML

6)、主要的框架:DWR,jQuery,Ext等


本文标签: 模式 方法 请求 对象 页面