当前位置: 代码迷 >> JavaScript >> jsp常会面试题(4)
  详细解决方案

jsp常会面试题(4)

热度:611   发布时间:2012-07-31 12:33:46.0
jsp常见面试题(4)

jsp常见面试题(4)

JSP企业面试题整理(1)
图示三层架构,并说明其特点,如何实现,每层实现什么功能?(企业笔试题)

       在两层应用中,应用程序直接同数据库进行对话。三层结构在用户接口代码和数据库中间加入了一个附加的逻辑层,通常这个层叫做“商务逻辑层”。在“商务逻辑层”,如果第一层和第二层在不同的计算机上,通常该层利用的技术是EJB(Enterprise JavaBean)技术、CORBA(Common Object Request Broker Architecture)技术和DCOM技术(Distributed Component Object Model,分布式组件对象模型)。在Java企业应用领域中,表示逻辑层通常可以是HTML、Applet和JSP,商务逻辑层一般利用EJB来实现

Java包含哪三个版本,每个版本有什么功能,各个版本的应用领域?

        SUN以J2EE为核心推出SUN-ONE(SUN Open Network Environment)战略,该战略包括三个部分:J2SE(Java 2 Standard Edition,Java 2标准版)、J2ME(Java 2 Micro Edition,Java 2微型版)和J2EE。

         J2SE主要:用于创建典型的桌面与工作站应用的Java平台。从配置上来说,只要安装JDK(Java Development Kit),就建立了一个J2SE开发和运行平台。

        J2ME主要用于创建嵌入式应用程序(如PDA、仪表),J2ME开发平台需要J2SE平台的支持。开发领域包括:高端的信息家电,比如:电视机顶盒,网络电视和网络可视电话等,低端的信息家电,比如手机,寻呼机和PDA等。

        J2EE的任务是提供一个平台独立的、便携式、多用户、安全以及标准的企业级平台,服务器端部署用Java技术来完成。J2EE主要用于创建可扩展的企业应用,包括13种核心技术规范

1-3 名词解释:EJB JNDI RMI。(企业笔试题)

        EJB(Enterprise Java Bean,企业级JavaBean)J2EE体系的最核心技术是EJB,提供了一个框架来开发分布式商务逻辑,显著地简化了具有可伸缩性和高度复杂的企业级应用的开发

        JNDI(Java Naming and Directory Interface,Java命名和目录接口)JNDI用于名字和目录服务,提供了一致的接口来存取和操作企业级的资源,如DNS(Domain Name Service)和本地文件系统等

     RMI(Remote Method Invocation,远程方法调用)RMI是在远程对象上调用一些方法,使用了连续的方式在客户端和服务器端传递数据,RMI是EJB技术基础

JSP企业面试题整理(2)
2-1 简述Java语言的核心机制。

Java语言包含三种核心机制:Java 虚拟机、垃圾收集机制和代码安全检测。

1、Java 虚拟机(Java Virtual Machine,JVM)

在一台计算机上由软件或硬件模拟的计算机。Java虚拟机读取并处理经编译过的平台无关的字节码class文件。

2、垃圾收集机制(Garbage collection)

在C/C++ 等语言中,由程序员负责回收无用内存。Java语言解除了程序员回收无用内存空间的责任。它提供一种系统级线程跟踪存储空间的分配情况。并在JVM的空闲时,检查并释放那些可被释放的存储器空间。垃圾收集在Java程序运行过程中自动进行,程序员无法精确控制和干预。

3、代码安全性检测(Code Security)

Java执行代码的时候,由JVM对运行的代码进行安全性检测,当进行一些非法操作的时候,比如修改一些系统设置的时候,JVM会发出警告。

2-2 比较基本数据类型和引用数据类型的区别。

Java 语言共有八种基本数据类型:四种整数类型(byte、short、int、long),两种浮点数类型(float、double),一种字符类型(char),一种布尔类型(boolean)。

Java语言中除8种基本数据类型以外的数据类型称为引用类型,也叫做复合数据类型。在程序中声明的引用类型变量只是为该对象起的一个名字,或者说是对该对象的引用,变量的值是对象在内存空间中的存储地址而不是对象本身,这就是称之为引用类型的原因

2-4 构造函数有什么作用?简述重载构造函数的好处。

构造函数也叫构造方法,是Java类中的一种特殊方法,其功能是创建其所属类型的一个新的对象。声明构造方法的语法规则如下:

< modifiers> <class_name>([< argu_list>]) {

[< statements>]

}

从中可以看到,构造方法与普通方法在声明上的区别是,构造方法没有返回值类型、构造方法必须取和所属类相同的名字。

在定义Java类时可以根据需要定义一个或多个构造方法,通常在构造方法中进行一些初始化工作。

2-5 简述super、static和final的功能和作用。

如果子类中发生了方法重写,那么子类对象能调用父类中重写前的方法,Java语言允许在子类中使用关键字super来引用父类的方法。

在Java类中声明属性和方法时,可使用关键字static做为修饰符。static标记的变量或方法由整个类共享,如访问控制权限允许,可不必创建该类对象而直接用类名加‘.’调用。

在Java中声明类、属性和方法时,可使用关键字final来修饰。final所标记的成分具有“终态”的特征,其具体规定如下:

l         final标记的类不能被继承。

l         final标记的方法不能被子类重写。

l         final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次。

2-6 集合元素:集合、散列表和枚举的特点和作用。

常用的集合元素有:向量(Vector)、枚举(Enumeration)、散列表(Hashtable)和属性(Properties)等

向量(Vector)不要求每个元素的类型相同,向量中可以混合多种数据类型。向量可以在增加元素时动态增大。

向量提供了集合内容的顺序访问,散列表可以对集合内容进行随机访问,散列表提供的主要方法及其说明为。

l         用put(Object key,Object value)加进关键字/数值对

l         用get(Object key)取得一个关键字的值

枚举也可以存放许多元素。一般用来存储其他集合的返回值。

2-7 关键字throw和throws的区别?(企业笔试题)

可以利用throw关键字自己抛出异常。

Throws一般在定义函数的时候使用,表明函数被调用的时候要抛出异常。

2-8 Java实现线程有几种方式,各有什么优点?

创建线程有两种方式:使用Runnable接口和继承Thread类。使用Runnable接口的实现类来提供线程体,这是创建线程的基本方式。还可以采用直接继承Thread类、重写其中的run()方法并以之作为线程体的方式创建线程,

两种创建线程方式的有两方面的区别。

l         使用Runnable接口创建线程时可以将CPU,代码和数据分开,形成清晰的模型。线程体run()方法所在的类还可以从其他类继承一些有用的属性或方法,并有利于保持程序风格的一致性。

l         直接继承Thread类创建线程时,Thread子类无法再从其他类继承。但这种情况编写简单,run()方法的当前对象就是线程对象,可直接操纵。

JSP企业面试题整理(3)

4-1. 有几种方法实现页面的跳转,如何实现?

jsp:forward操作指令用于把当前的JSP页面转发到另一个页面上。基本语法为:“<jsp:forward page="test2.jsp"/>”,使用该功能时,浏览器的地址栏中地址不会发生任何变化。

对于response对象,最常用到的是sendRedirect()方法,可以使用这个方法将当前客户端的请求转到其它页面去。相应的代码格式为:“response.sendRedirect("URL地址");

4-2 synchronized关键字有什么功能?

,一般会在函数前面加上synchronized关键字,功能是当前一个用户在执行该方法的时候,其他的用户必须等待,直到该用户完成操作

4-3. out对象有什么功能,out.print和document.write有什么区别?

out对象是javax.servlet.jsp.JspWriter类的一个子类的对象,它的作用是把信息回送到客户端的浏览器中。在out对象中,最常用的方法就是print()和println()。在使用print()或println()方法时,由于客户端是浏览器,因此向客户端输出时,可以使用HTML中的一些标记,例如:“out.println("<h1>Hello,JSP</h1>");

out.print是JSP代码, 被服务器解释执行。

Document.write是JavaScript代码,被客户端浏览器解释执行。

4-4. 如何获得获得客户端的IP地址?

利用request对象可以获得客户提交的信息,比如:JSP文件目录、客户端的地址、以及服务器的端口等、

<BR>获取客户的IP地址:

       <% String IP=request.getRemoteAddr();

      out.println(IP);%>

4-5. application对象有什么特点?和session对象有什么联系和区别?

站点所有的用户公用一个application对象,当站点服务器开启的时候,application就被创建,直到网站关闭。

可以使用Session 对象存储用户登录网站时候的信息。当用户在页面之间跳转时,存储在Session对象中的变量不会被清除

联系是:数据都存储在服务器端,而且都可以保留一段时间。

区别是:每个用户有一个session,但是application是共有的。

4-6. 程序如何向浏览器写入Cookie集合,如何从浏览器端读取Cookie集合。

Cookie对象是由Web服务器端产生后被保存到浏览器中的信息。Cookie对象可以用来保存一些小量的信息在浏览器中。目前主流的浏览器(Internet Explorer和Netscape Navigator)都支持Cookie。

案例名称:写入Cookie

程序名称:4-25.jsp

<%@ page contentType="text/html;charset=GBK" %>

<%

   String strName = "Zhourunfa";

   Cookie c = new Cookie("Name1", strName);

   response.addCookie(c);

%>

案例名称:读出Cookie

程序名称:4-26.jsp

<%@ page contentType="text/html;charset=GBK" %>

<HTML><BODY>

<%

       Cookie cookies[] = request.getCookies();

   for(int i=0; i<cookies.length; i++) {

       if(cookies[i].getName().equals("Name1"))

                          out.print(cookies[i].getValue());

   }

%>

JSP企业面试题整理(4)
5-1. 简述Servlet和JSP的关系。

JSP是以另外一种方式实现的Servlet,Servlet是JSP的早期版本,在JSP中,更加注重页面的表现,而在Servlet中则更注重业务逻辑的实现。

因此,当编写的页面显示效果比较复杂时,首选是JSP。或者在开发过程中,HTML代码经常发生变化,而Java代码则相对比较固定时,可以选择JSP。而我们在处理业务逻辑时,首选则是Servlet。

同时,JSP只能处理浏览器的请求,而Servlet则可以处理一个客户端的应用程序请求。因此,Servlet加强了Web服务器的功能。

5-2. 简述Servlet的生命周期。(企业笔试题)

Servlet运行机制和Applet类似,Servlet是载服务器端运行的,但是Applet是在客户端运行的。Servlet是javax.servlet包中HttpServlet类的子类,由服务器完成该子类的创建和初始化。

Servlet的生命周期主要由3个过程组成。

1、init()方法:服务器初始化Servlet。

2、service()方法:初始化完毕,Servlet对象调用该方法相应客户的请求。

3、destroy()方法:调用该方法消灭Servlet对象。

其中,init()方法只在Servlet第一次被请求加载的时候被调用一次,当有客户再请求Servlet服务时,Web服务器将启动一个新的线程,在该线程中,调用service方法相应客户的请求。

5-3. 简述HttpSession接口的功能和使用方法。(企业笔试题)

这是一个java.servelt.http包中的接口,它封装了会话的概念。定义为:“public interface HttpSession”,可以使用HttpServletRequest对象的getSession()方法来得到这种类型的对象,语法为:“HttpSession session = request.getSession();”。

5-5. 编写一个HTML文件,利用Servelt的doPost方法实现Form表单内容的读取。(上机完成)(企业笔试题)

案例名称:使用doGet和doPost方法

程序名称:j5_02.htm

<HTML>

       <BODY>

       <FORM ACTION="/doget" METHOD="get">

       请输入姓名:

       <INPUT TYPE="TEXT" NAME="myname"><br>

       您的兴趣:

       <SELECT NAME="love">

       <OPTION value="Sleep">Sleep</OPTION>

       <OPTION value="Dance">Dance</OPTION>

       <OPTION value="Travel">Travel</OPTION>

       </SELECT><br>

       <INPUT TYPE="SUBMIT" NAME="mysubmit"><br>

       <INPUT TYPE="RESET" VALUE="重新来过"><br>

       </FORM>

       </BODY>

</HTML>

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class j5_03 extends HttpServlet

{

       //重写doPost方法

       public void doPost(HttpServletRequest req, HttpServletResponse res)

             throws ServletException, IOException

       {

                //首先设置头信息

                res.setContentType("text/html");

                //用 writer方法返回响应数据

                PrintWriter out = res.getWriter();

                out.println("<html><head></head><body>");

                out.println("name: " + req.getParameter("myname"));

                out.println("<br>");

                out.println("love: " + req.getParameter("love"));

                out.println("</body></html>");

                out.close();

       }

       public void doGet(HttpServletRequest req, HttpServletResponse res)

                throws ServletException,IOException{

                doPost(req,res);

       }

}

6-1 什么是组件?使用组件有什么优点?

现在软件开发都已经转向了基于组件的开发,目前具备代表性的组件技术有微软的COM、COM+,有Sun的JavaBean和EJB(Enterprise Java Bean),另外还有CORBA(Common Object Request Broker Architecture,公共对象请求代理结构)

JavaBean规范将“软件组件”的概念引入到Java编程的领域。组件是自包含的、可重用的软件单元;而JavaBean组件,则可以使用可视的应用程序开发工具,可视地将它们编写到Java程序中。JavaBean规范为Java开发人员提供了一种“组件化”其Java类的方法

6-2 编写JavaBean的时候,要注意哪些?

1、如果类的成员变量的名字是xxx,那么为了更改或获取成员变量的值,在类中使用两个方法:

getXxx(),用来获取属性xxx。

setXxx(),用来修改属性xxx。

2、对于boolean类型的成员变量,允许使用is代替get和set。

3、类中方法的访问属性必须是public的。

4、类中如果有构造方法,那么这个构造方法也是public的,并且是无参数的。

6-3 简述JSP的设计模式。(企业笔试题)

JSP设计模式包括两个:(1)Model1,JSP+JavaBean设计模式。(2)Model2,MVC设计模式。

在这种模式中,JSP页面独自响应请求并将处理结果返回客户,所有的数据库操作通过JavaBean来实现。大量地使用这种模式,常会导致在JSP页面中嵌入大量的Java代码,当需要处理的商业逻辑非常复杂时,这种情况就会变得很糟糕。大量的Java代码使得JSP页面变得非常臃肿。前端的页面设计人员稍有不慎,就有可能破坏关系到商业逻辑的代码。

“MVC”模式即是:“Model-View-Controller”模式。在这种模式中,通过JSP技术来表现页面,通过Servlet技术来完成大量的事务处理工作,实现用户的商业逻辑。

在这种模式中,Servlet用来处理请求的事务,充当了控制器(Controller即“C”)的角色,Servlet负责响应客户对业务逻辑的请求并根据用户的请求行为,决定将哪个JSP页面发送给客户。JSP页面处于表现层,也就是视图(View即“V”)的角色。JavaBean则负责数据的处理,也就是模型(Model即“M”)的角色。

JSP企业面试题整理(5)
7-2 图示JDBC的工作原理,并列举常用的对象。(企业笔试题)


建立是建立与数据库之间的连接,也就是创建一个Connection的实例。DriverManager类的getConnection()方法将建立数据库的连接:

Statement对象用于将SQL语句发送到数据库中。存在3种Statement对象:(1)Statement;(2)PreparedStatement(从Statement继承而来);(3)CallableStatement(从PreparedStatement继承而来)。

ResultSet包含符合SQL语句执行结果所有行,并且它通过一套get方法提供了对这些行中数据的访问

7-3 如图7-16,要求:查找 “张三”选择所有课程的名称,写出SQL语句。(企业笔试题)

SELECT c.cname FROM sc a, student b, course c

WHERE a.cno=c.cno

AND a.sno=b.sno and b.sname ='张三'

7-4 下面的代码段是否正确?请说明。(企业笔试题)

       pst = conn.prepareStatement("INSERT INTO grade(学号) VALUES (?)");

       for (int i = 101; i < 111; i++) {

                pst.setInt(1, i);

                pst.addBatch();

}

pst.execute ();

}

错,pst.executeBatch();

7-5 简述事务的基本概念,如何在JDBC中实现事务?

事务是一些事件的集合,执行一条SQL语句可以理解成一个事件。事务中包含多个事件,如果每一个事件都能执行成功的时候,事务才执行,如果有任何一个事件不能成功执行,事务的其他事件也不被执行

boolean defaultCommit = conn.getAutoCommit();

conn.setAutoCommit(false);

try {

       stmt.executeUpdate(strSQL1);

       stmt.executeUpdate(strSQL2);

       conn.commit();

}

catch (Exception e) {

       conn.rollback();

       e.printStackTrace();

}

finally {

       if (stmt != null) {

                stmt.close();

       }

       if (conn != null) {

                conn.close();

       }

}

conn.setAutoCommit(defaultCommit);

7-6 结果集类型和结果集并发性各有几种情况,有什么作用。

决定这个Statement对象创建的ResultSet对象是否可以滚动,还可以指定结果集是否对数据库中的修改敏感。使用ResultSet类中的int常量来表示结果集类型,结果集类型有3种:

l         ResultSet.TYPE_FORWORD_ONLY:指定ResultSet对象是不可滚动,这是默认值。

l         ResultSet.TYPE_SCOLL_INSENSITIVE:指定ResultSet对象是可滚动的,但是对数据库中修改不敏感。

l         ResultSet.TYPE_SCOLL_SENSITIVE:指定ResultSet对象是可滚动的,而且对数据库的修改敏感。

结果集的并发性(Concurrency)决定ResultSet对象是否可以修改数据库中的行。可以使用ResultSet类中定义的int常量来指定结果集的并发性。

l         ResultSet.CONCUR_READ_ONLY,指定ResultSet对象不能修改数据库,默认值。

ResultSet.CONCUR_UPDATABLE,指定ResultSet对象可以修改数据库。


  相关解决方案