JavaWeb面试题

1、什么是Servlet

 

答:可以从两个方面去看Servlet

 

a、API:有一个接口servlet,它是servlet规范中定义的用来处理客户端请求的程序需要实现的顶级接口。

 

b、组件:服务器端用来处理客户端请求的组件,需要在web.xml文件中进行配置。

2、Servlet的生命周期,并说出Servlet和CGI的区别?

 

答:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。

 

     这个生存期由javax.servlet.servlet接口中的init、service、destroy方法表达。

 

    web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现

 

    根据请求的不同调用不同的do**()方法。结束服务,web容器调用servlet的destroy()方法。

 

区别:

 

Servlet处于服务器进程中,它通过多线程运行service()方法,一个实例可以服务于多个请求,并且实例一般不会被销毁;而

 

CGI对每个请求都产生一个新的进程,服务完成后就销毁,所有效率低于Servlet

3、Servlet API中forware()和redirect()的区别?

 

答:

 

a、浏览器显示

 

    重定向会改变URL地址,请求转发不会改变URL地址。

 

b、资源共享

 

    重定向不可以资源共享,请求转发可以。

 

c、功能

 

   重定向可以用URL绝对路径访问其他Web服务器的资源,而请求转发只能在一个Web应用程序内进行资源转发,即服务器内部的一种操作。

 

d、效率

 

   重定向效率低,相当于再一次请求;请求转发效率相对较高,跳转仅发生在服务器端。

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

 

答:默认情况是调用doGet()方法,JSP页面中的Form表单的method属性设置为post的时候,调用的为doPost()方法;为get的时候,调用deGet()方法。

 

 

5、request.getParameter()和request.getAttribute()的区别?

 

答:

 

a、request.getParameter()获取的类型是String;

 

   request.getAttribute()获取的类型是Object

 

b、request.getPrameter()获取的是POST/GET传递的参数值和URL中的参数;

 

    request.getAttribute()获取的是对象容器中的数据值/对象

 

c、request.setAttribute()和request.getAttribute()可以发送、接收对象;

 

   request.getParamter()只能接收字符串,官方不开放request.setParamter()(也就是没有这个方法)

 

   setAttribute()和getAttribute()的传参原理:

 

   setAttribute()是应用服务器把这个对象放在该页面所对应的一块内存中去,当你的页面服务器重定向到另外一个页面时,

 

   应用服务器会把这块内存拷贝到另一个页面所对应的那块内存中。这个就可以通过getAttribute()获取到相应的参数值或者对象。

 

 

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

 

答:JSP一共有以下6中基本动作

 

 JSP:include       (当页面被请求的时候引入一个文件)

 

 JSP:forward      (将请求转到另一个页面)

 

 JSP:useBean     (获得JavaBean的一个实例)

 

 JSP:setProperty (设置JavaBean的属性)

 

 JSP:getProperty (获得JavaBean的属性)

 

 JSP:plugin         (根据浏览器类型为Java插件生成object或者embed两种标记)

 

 

 

7、JSP常用指令有哪些?

 

答:page、include、taglib

 

a、page指令:定义页面的一些属性,常用属性:

 

contentType="text/html;charset=utf-8";    向浏览器端输出数据的编码

 

pageEncoding="utf-8";                            JSP编译成java文件时所用的编码

 

session="true"                                        是否自动创建session

 

b、include指令:引入一个静态的JSP页面

 

c、taglib指令:引入一个标签库

 

 

 

8、JSP中动态include和静态include的区别?

 

答 : a、静态include:语法:<%@ include file="文件名" %>,相当于复制,编辑时将对应的文件包含进来,当内容变化时,不会再一次对其编译,不易维护。

 

       b、动态include:语法:<jsp:include page="文件名">,能够自动检查被包含文件,当客户端对JSP文件进行请求时,会重新将对应的文件包含进来,进行实时的更新。

 

 

 

9、页面间对象传递的方法?

 

答:request、session、application、cookie等。

 

 

 

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

 

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

 

 

 

11、 详细描述MVC

 

答:基于java的web应用系统采用MVC设计模型,即用Model(模型)、View(视图)和Controller(控制)分离设计,这是目前web应用服务系统的主流设置方向。

 

     Model:处理业务逻辑的模块。

 

     View:负责页面显示,显示Model的处理结果给用户,主要实现数据到页面的转换过程。

 

     Controller:负责每个请求的分发,把Form数据传递给Model进行处理,处理完成后,把处理结果返回给相应的View显示给用户。

 

 

 

12、MVC各个部分都有哪些技术实现?如何实现?

 

答:MVC是Model-View-Controller的简写。Model代表应用的业务逻辑(通过JavaBean、EJB组件实现),View是引用的表示面(由JSP产生),Controller是提供应用的处理过程机制

 

(一般是一个Servelt),通过这种设计模型把应用逻辑、处理过程和显示逻辑分成不同的组件来实现。这些组件可以交互和重用。

 

 

 

13、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso-8859-1等,如何输出一个某种编码的字符串?

 

答:下面这个例子是将iso-8859-1转换成utf-8编码方式。

 

复制代码

public String Translate(String str)

{

  String s="";

  try{

         s=newString(str.getBytes("iso-8859-1"),"UTF-8");

         s=str.trim();

  }catch(Exception e){

       System.err.println(e.getMessage());

   }

  return s;

}

复制代码

 

 

14、get和post的区别?

 

a、get是用来从服务器上获取数据,而post是用来向服务器传递数据;

 

b、get将表单中数据按照variable=value的形式,添加到action所指向的URL后面,并且两者用"?"连接,变量之间用"&"连接;

 

而post是将表单中的数据放在form的数据体中,按照变量与值对应的方式,传递到action所指定的URL。

 

c、get是不安全的,因为在传输过程中,数据是被放在请求的URL中;而post的所有操作对用户来说都是不可见的。

 

d、get传输的数据量小,这主要应为受url长度限制;而post可以传输大量的数据,所有上传文件只能用post提交。

 

e、get限制form表单的数据集必须为ASCII字符;而post支持整个IS010646字符集。

 

f、get是form表单的默认方法。

 

 

 

15、javascript常用的方面?

 

答:数据校验、页面特殊效果等。

 

 

 

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

 

答:容器:Tomcat、Weblogic

 

    工具:Eclipse、Jbuilder

 

 

 

17、JSP的四种范围?

 

答:a、page是代表一个页面相关的对象和属性。一个页面由一个编译好的java servlet类(可以带有include指令,但不可以带有include动作)表示。这既包括servlet又包括编译成servlet的jsp页面。

 

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

 

     c、session是代表与用于某个web客户机的一个用户体验相关的对象和属性。一个web回话也可以经常跨域多个客户机请求。

 

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

 

 

 

18、应用服务器有哪些?

 

答:BEA Weblogic Server、IBM WebSphere Application Server、Oracle9iApplication Server、JBoss、Tomcat。

 

 

 

19、几种回话跟踪技术?

 

答:cookie、url重写、hidden表单隐藏域、session

 

 

 

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

答:

 

public void init(ServletConfigconfig){}

 

public ServletConfig getServeltConfig(){}

 

public String ServletInfo(){}

 

public void service(HttpServletRequestrequest,HttpServletResponse response){} public void destroy(){}

21、简述HttpSession的作用、使用方法,可用代码说明。

 

答:HttpSession中可以跟踪并存储用户信息,把值设置到属性中,有两个方法:setAttribute("变量/对象","变量/对象");getAttribute("变量/对象");例如:在一个方法中用session.setAttribute("username",username);在session中设置一个属性名为username的变量或者对象,然后可以在同一个session范围内使用session.getAttribute("username");来得到username属性或者对象。

 

 

 

22、J2EE是什么?

 

答:J2EE现在叫做JavaEE:是(Java platform,Enterprice Edition 企业版)的简称。企业版本开发和部署服务器应用程序。

 

     J2EE是Sun公司提出的多层(multi-tiered)、分布式(distributed)、基于组件(component-base)的企业级应用模型(Enterprice Application Model)。

 

     在这样一个应用系统中,可按照功能划分不同的组件,这些组件又可在不同的计算机上,并且处理不同的层次(tier)中。所属层次包括客户层(client tier)、web层和组件、business层和组件、企业信息系统(EIS)层。

 

 

 

23、J2EE是技术、平台还是框架?

 

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

 

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

 

 

 

24、cookie和session的作用、区别、应用范围。

 

答:a、cookie数据保存在客户端,session数据保存在服务端。

 

    b、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,相当重要的数据,应该使用session保存到服务端。

 

    c、session会在一定时间内保持在服务器上,但是会占用内存资源,当访问的用户过多,会加重服务器的负载,考虑到减轻服务器的压力,可以将不重要的数据放在cookie中持久的保存。

 

    d、单个cookie保存的数据不能超过4k,很多浏览器都限制站点最多保存20个cookie。

 

 

 

25、JSTL是什么?优点有哪些?

 

答:JSTL(JSPStandard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,由四个定制标记库(core、format、xml、sql)和一对通用标记库验证器(ScriptFreeTLV和PermittedTaglibsTLV)组成。优点有:

 

a、在应用程序服务器之间提供了一致的接口,最大程度的提高了web应用在各应用服务器之间的移植。

 

b、简化了JSP和web应用程序的开发。

 

c、以一种统一的方式减少了JSP中scriptlet代码数据,可以达到没有任何scriptlet代码的代码。在我们公司的项目中是不允许任何scriptlet出现在JSP中。

 

d、允许JSP设计工具与web应用程序开发的进一步集成。相信不久就会有支持JSTL的IDE开发工具出现。

 

 

 

26、J2EE的优越性主要表现在那些方面?

 

答:a、J2EE基于Java技术,与平台无关。

 

     b、J2EE提供了一个优秀的企业级应用程序框架,对快速高质量的开发系统打下了基础。

 

     c、J2EE提供相当专业的通用软件服务。

 

    d、J2EE拥有开放标准,许多大型公司实现了该规范支持的应用服务器。如:BEA、IBM、Oracle等。

 

 

 

27、JSP页面是如何被执行的?JSP执行效率比Servlet低吗?

 

答:当客户端向一个JSP页面发出请求时,Web Container将JSP转换成Servlet的源代码(只是第一次请求时),然后编译转化后的Servlet并加载到内存中执行,执行的结果Response到客户端。

 

JSP只在第一次执行的时候会转化为Servlet,以后的每次执行Web容器都是直接执行编译后的Servlet,所有JSP和Servlet只有第一次执行的时候不一样,JSP慢一点,以后的执行都是相同的。

 

 

 

28、JSP如何处理运行时异常(run-time)exception?

 

答:可是使用页面的errorPaga属性捕捉没有处理的运行时异常,然后自动转向到一个错误处理页面,代码如下:

 

<%@page errorPage="错误页面URL"%>

如果在页面请求时出现运行时异常时,以上代码会将代码转向到错误页面,在错误页面里面,可以通过以下代码定义这个页面是错误处理页面:

 

<%@pageisErrorPage="true"%>

这样描述错误信息的Throwable对象就可以在错误页面里面访问到。

 

 

 

29、如果JSP表单元素的值为空,如何避免null出现在页面上?

 

答:可以写一个简单的函数对空值进行处理,判断值是否为空,如果为空就返回空字符串。实例代码如下:

<%!

  String blanknull(String e)

 {

     return (e==null)?"":s;

 } 

%>

<%

  <input type="text" name="username"value="<%=blanknull(username)%>"

%>

 

 

30、JSP的缺点?

 

答:a、大多数的Servlet引擎不支持connection pooling。

 

     b、Servlet引擎没有标准。

 

     c、JSP与其他脚本语言的交互。

 

     d、不易对Java程序进行调试。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值