导航

web 面试题、简单题、复习题

Posted on 2017-02-20 20:03  _eve  阅读(519)  评论(0编辑  收藏  举报

1. 概述MVC体系结构,各个部分都有那些技术来实现?

M即model(模型,bean(domain)层)由javabean或EJB实现;V即view(视图,显示层)由jsp实现;C即controller(控制器)由servlet实现。

2. 简述Session与cookie的区别?

session是在服务器端保存用户信息,cookie是在客户端保存信息; session中保存的是对象,cookie中保存的是字符串; session对象随会话结束而结束,最大存活时间30分钟,不易实现长期存活操作也没有意义;cookie可以设置长期保存在客户端; session因为在服务器端没人更改固比较安全;cookie在本地硬盘,别人可以分析你的cookie中信息固不安全;所以cookie通常用于保存不重要的用户信息,session保存重要的。 Session技术把用户的数据写到用户独占的session中;Cookie是把用户的数据写给用户的浏览器。

3. jsp有哪些内置对象?作用分别是什么?

JSP共有以下9种基本内置对象(rrppasoce): request: 用户端请求,此请求会包含来自GET/POST请求的参数 response: 网页传回用户端的回应 pageContext: 网页的属性是在这里管理 ,提供了对JSP页面内所有的对象及名字空间的访问,是页面中所有功能的集大成者。 session: 与请求有关的会话期 application:是ServletContext类的实例,application对象实现了用户间数据的共享,可存放全局变量。 out: 用来传送回应的输出 config: servlet的构架部件 ;在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象) page: JSP网页本身,类似类中的this指针,是java.lang.Object类实例 exception: 针对错误网页,未捕捉的异常。

4. JDBC中的PreparedStatement相比Statement的好处

1)、相对比较安全,可以防止sql注入 2)、有预编译功能,相同操作批量数据效率较高

5. JSP中动态INCLUDE与静态INCLUDE的区别? 动态INCLUDE:用jsp:include动作实现 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数;动态include的结构是两者独立,直到输出时才合并( 看看jsp生成的java文件(servlet)就可以知道了),所以动态include的jsp文件独立性很强,是一个单独的jsp文件,需要使用的对象,页面设置,都必须有自己创建,当然,还好它和include它的页面的request范围是一致的。 静态INCLUDE:用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>;静态include的结果是把其他jsp引入当前jsp,两者合为一体,所以静态include纯粹是把代码写在外面的一种共享方法,所有的变量都是可以和include它的主文件共享,两者高度紧密结合,不能有变量同名的冲突.而页面设置也可以借用主文件的。

6. 说一说Servlet的生命周期?

Servlet生命周期分为三个阶段: 1).初始化阶段;调用init()方法。 2).响应客户请求阶段;调用service()方法。 3).终止阶段;调用destroy()方法。

7. java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?

有以下两种方法: 1).通过继承一个Thread类,然后继承它的run()方法来实现; 2).通过实现一个Runnable接口,实现它的run()方法来实现。 用synchronized关键字来修饰同步方法。

8. forward 和redirect的区别?

forward即转发和redirect即重定向的最大区别就是前者的地址不变;因为forward只发送一次request请求。 相比之下,forward性能更高;forward能够存储request Scope(request域)的Attribute而Redirect却不行;.forward需要在Servlet中通过一个Dispatcher(分配器)来实现,而redirect直接可以用request调用相应的方法;redirect能够防止某些情况下客户端Refresh造成的一些未知后果(例如连续删除)。 forward与 include共亨Request范围内的对象,而redirect则不行,即:如果一个javabean被声明为request范围的话,则被 forward到的资源也可以访问这个javabean,而redriect则不行;forward与include基本上都是转发到context内部的资源,而redirect可以重定向到外部的资源,如: req.sendRedriect("http://www.mocuai.com");

9. 事务的特性有哪些?

有以下四个特性(ACID):原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)

10. request.getAttribute() 和 request.getParameter() 有何区别?

(1)HttpServletRequest类有setAttribute()方法,而没有setParameter()方法 (2)request.getParameter()方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据(获取用户填写后提交的表单信息),request.getParameter()方法返回String类型的数据;getAttribute() 客户端提交的(客户未直接参与填写);request.setAttribute()和getAttribute()方法传递的数据只会存在于Web容器内部,在具有转发关系的Web组件之间共享。这两个方法能够设置Object类型的共享数据。

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

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

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

J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。 调用:客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。 释放:当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接 作用:数据连接池是把数据库连接放到中间服务器上,比如tomcat上,那么相当于每次你操作数据库的时候就不需要再"连接"到数据库再进行相关操作,而是直接操作服务器上的"连接池"。

13.abstract class和interface有什么区别?

1).抽象类可以有构造方法,接口中不能有构造方法。 2).抽象类中可以有普通成员变量,接口中没有普通成员变量 3.)抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。 4). 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。 5). 抽象类中可以包含静态方法,接口中不能包含静态方法 6). 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。 7). 一个类可以实现多个接口,但只能继承一个抽象类。

14.Jsp中如何让客户端不缓存页面?

1. 使用java提供的方法,在jsp或者servlet中都可以 <% response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires", 0); %> 2. jsp上使用HTML标记,如下面: 15.得到Class的三个方法是什么? 类名.class; 实例.getclass; Class.forName(全类名);