什么是URL,什么是URI,它们都由哪几个部分组成,URL和URI之间有什么关系?答:URL称为统一资源定位符,URL通常由4部分组成:协议名称、页面所在主机的DNS名、可选的端口号和资源的名称。URI称为统一资源标识符,是以特定语法标识一个资源的字符串。URI由模式和模式特有的部分组成,它们之间用冒号隔开,一般格式如下:schema:schema-specific-partURI是URL和URN的超集。动态web文档技术有哪些?服务器端动态文档技术的客户端动态文档技术有何不同?答:动态Web文档技术包括服务器端动态文档技术和客户端动态文档技术,前者包括CGI技术、服务器扩展技术和HTML页面中嵌入脚本技术。其中HTML页面中嵌入脚本技术包括ASP、PHP和JSP技术。最流行的客户端动态文档技术是在HTML页面中嵌入JavaScript脚本代码。使用JavaScript可以设计交互式页面。与服务器端动态文档不同,JavaScript脚本是在客户端执行的。动态web文档技术有哪些?服务器端动态文档技术的客户端动态文档技术有何不同?答:动态Web文档技术包括服务器端动态文档技术和客户端动态文档技术,前者包括CGI技术、服务器扩展技术和HTML页面中嵌入脚本技术。其中HTML页面中嵌入脚本技术包括ASP、PHP和JSP技术。最流行的客户端动态文档技术是在HTML页面中嵌入JavaScript脚本代码。使用JavaScript可以设计交互式页面。与服务器端动态文档不同,JavaScript脚本是在客户端执行的。什么是MVC设计模式?它有什么优点?答:MVC模式称为模型-视图-控制器模式。该模式将Web应用的组件分为模型、视图和控制器,每种组件完成各自的任务。优点:将业务逻辑和数据访问从表示层分离出来。简述实现MVC设计模式的一般步骤答:实现MVC模式的一般步骤:(1)定义JavaBeans表示数据;(2)使用Servlet处理请求;(3)填写JavaBeans对象数据;(4)将结果存储在作用域对象中;(5)将请求转发到JSP页面;(6)最后在JSP页面中从JavaBeans中取出数据。通过哪两种方法可以获得ServletConfig对象?答:使用响应对象(即HttpServletResponse接口)的encodeURL()方法或encodeRedirectURL()方法。HTTP请求结构由哪几部分组成?请求行由哪几部分组成?答:HTTP请求结构由请求行、请求头、空行和请求数据组成。请求行由方法名、请求资源的URI和使用的HTTP版本3部分组成。HTTP响应结构由哪几部分组成?状态行由哪几部分组成?答:HTTP响应结构由状态行、响应头和响应数据3部分组成。状态行由HTTP版本、状态码和简短描述3部分组成。GET请求和POST请求有什么异同?GET请求主要用来从服务器检索资源,请求读取一个web页面POST请求主要用来向服务器发送数据。使用RequestDispatcher的forward()转发请求和使用响应对象的sendRedirect()重定向有何异同?答:forward()方法转发请求是服务器端控制权的转向,客户端地址栏中不显示转发后的资源地址。sendRedirect()方法是服务器向浏览器发送302状态码,它使浏览器连接到新的位置,浏览器地址栏可看到地址的变化。使用重定向,资源不能位于WEB-INF目录中。在Servlet中如果需要获得一个页面的表单中的请求参数,又不知道参数名时如何做?答:可先通过请求对象的getParameterNames()方法得到Enumeration对象,然后在其上得到每个请求参数名,再通过getParameter()得到请求参数值。是否能够通过客户机的IP地址实现会话跟踪?答:不能。因为许多用户是通过代理服务器访问Internet的,此时服务器得到的是代理服务器的IP地址而不是实际用户的IP地址,因此这些用户的IP地址不唯一。如何理解会话失效与超时?如何通过程序设置最大失效时间?如何通过web应用程序部署描述文件设置最大超时时间?二者有什么区别?答:如果客户在指定时间内没有访问服务器,则该会话超时。对超时的会话对象,服务器使其失效。通过会话对象的setMaxInactiveInterval()方法设置会话最大超时时间。web.xml文件使用session-config元素的子元素session-timeout设置最大超时时间,如下所示。session-configsession-timeout20/session-timeout/session-config这里的最大超时时间是对整个应用程序的所有会话有效,session-timeout元素指定的时间单位是分钟。setMaxInactiveInterval()方法参数单位是秒。简述表达式语言的主要功能。答:表达式语言是JSP页面中使用的一种简洁的数据访问语言。它定义了运算符实现算术、关系等运算;可以对作用域变量、JavaBeans对象、集合的元素、请求参数、Cookie等进行简单的访问;还可以访问Java语言定义的函数(静态方法)。属性与集合的访问运算符的点(.)运算符与方括号([])运算符有什么不同?答:使用点(.)运算符可以访问Map对象一个键的值和bean对象的属性值。使用方括号([])运算符还可以List对象和数组对象的元素。简述Java数据库访问的两层和三层模式答:两层模型即客户机/服务器模型,在两层模型中应用程序直接通过JDBC驱动程序访问数据库。三层模型是浏览器/应用服务器/数据库服务器结构,在该结构中浏览器向应用服务器发出请求,应用服务器通过JDBC驱动程序访问数据库。简述传统的数据库连接的步骤,这种方法有什么缺点?答:传统的数据库连接的一般步骤是:(1)加载JDBC驱动程序。(2)建立连接对象。(3)创建语句对象,语句对象有3种:Statement、PreparedStatement和CallableStatement。(4)执行SQL语句得到结果集对象,调用ResultSet的有关方法就可以完成对数据库的操作。(5)关闭建立的各种对象。缺点是每次访问数据库都要建立连接对象,请求结束需关闭连接对象。这将耗费大量的时间,可能导致增大请求的响应时间。程序如果要连接Oracle数据库,请给出连接代码。数据库驱动程序名是什么?数据库JDBCURL串的内容是什么?答:连接Oracle数据库代码如下。Class.forName(oracle.jdbc.driver.OracleDriver);Stringdburl=jdbc:oracle:thin:@127.0.0.1:1521:ORCL;Connectionconn=Drivermanager.getConnection(dburl,scott,tiger);上述代码中,oracle.jdbc.driver.OracleDriver为JDBC驱动程序名,jdbc:oracle:thin:@127.0.0.1:1521:ORCL为JDBCURL。试说明使用数据源对象连接数据库的优点是什么?通过数据源对象如何获得连接对象?答:使用数据源是目前Web应用开发中建立数据库连接的首选方法。这种方法是事先建立如干连接对象,存放在连接池中。当应用程序需要一个连接对象时就从连接池中取出一个,使用完后再放回连接池。这样就可避免每次请求都创建连接对象,从而降低请求的响应时间,提高效率。使用数据源建立连接是通过JNDI技术实现的。这需要首先配置数据源(可以是局部数据源或全局数据源),然后在应用程序中通过Context对象查找数据源对象。假设已经配置了名为sampleDS的数据源,建立连接代码如下:Contextcontext=newInitialContext();DataSourcedataSource=context.lookup(java:comp/env/jdbc/sampleDS);ConnectiondbConnection=dataSource.getConnection();试说明什么是可滚动和可更新的结果集对象,如何得到可更新且可滚动的ResultSet对象?答:可滚动的ResultSet是指在结果集对象上不但可以向前访问结果集中的记录,还可以向后访问结果集中的记录。可更新的ResultSet是指不但可以访问结果集中的记录,还可以通过结果集对象更新数据库。要创建可滚动、可更新的ResultSet对象,必须使用Connection对象的带两个参数的createStatement()方法创建的Statement,第一个参数用下面两个常量之一:ResultSet.TYPE_SCROLL_SENSITIVEResultSet.TYPE_SCROLL_INSENSITIVE第二个参数使用下面常量:ResultSet.CONCUR_UPDATABLE