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

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动作实现 <jsp:include page="included.jsp" flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数;动态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.JSPServlet有哪些相同点和不同点他们之间的联系是什么

   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标记,如下面:

<HEAD>

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">

<META HTTP-EQUIV="Expires" CONTENT="0">

</HEAD>

 

15.得到Class的三个方法是什么?

类名.class;  实例.getclass; Class.forName(全类名);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值