- 浏览: 515980 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (672)
- 随便写写 (3)
- javascript (16)
- Java exam (58)
- JSP exam (25)
- Servlet exam (25)
- Struts exam (24)
- Spring exam (24)
- Hibernate exam (19)
- EJB exam (25)
- SOA exam (6)
- AJAX exam (25)
- Web开发 exam (25)
- 软件工程 exam (25)
- 项目管理 exam (25)
- .NET exam (23)
- ASP.NET exam (24)
- C# exam (24)
- C++ exam (25)
- C语言 exam (13)
- ASP exam (0)
- PHP exam (0)
- Ruby exam (0)
- Python exam (0)
- Delphi exam (0)
- Linux exam (0)
- UNIX exam (25)
- 数据库 exam (24)
- Oracle exam (25)
- SQL Server exam (20)
- MySQL exam (16)
- Mobile开发 exam (10)
- 嵌入式开发 exam (6)
- 网络安全 exam (0)
- 网络技术 exam (0)
- 综合技术 exam (0)
- HR面试 exam (0)
- 英语面试 exam (0)
- 外企面试 exam (0)
- 软件测试 exam (0)
- QTP exam (0)
- LoadRunner exam (0)
- 网友面经 exam (0)
- 应届生 exam (0)
- 面试指导 exam (0)
- IQ测试 exam (0)
- Flex exam (2)
- uml-ea (1)
最新评论
-
dxking100:
远光没有笔式题的说..
最新远光软件笔试题面试题内容(1) -
heming_way:
谢谢,正在复习软件工程考试呢,呵呵
《软件工程》选择题 -
梅玲达:
可以更详细点吗?
Hibernate中Criteria 和DetachedCriteria的作用是什么? -
buptjian:
学习下,试试看,谢谢啊~
Prototype如何实现页面局部定时刷新? -
bubblegum89:
这个。。。和我笔试时候做的 感觉完全不一样
最新远光软件笔试题面试题内容(3)
二.简述题(总分 40):
1.简述Servlet的生命周期(5分)
Web容器加载servlet,生命收起开始,通过调用servlet
的的init()方法进行servlet的初始化,通过调用service()方法实现,根据请求的不同调用不同的do***()方法,结束服务,web容器调用servlet的destroy()方法
一个servlet的生命周期由部署servlet的容器控制,当一个请求映射到一个servlet是,
容器执行下步骤:
1.加载servlet类
2.创建一个servlet类的实例
3.调用init初始化servlet实例,
2.调用service方法,传递一个请求和响应对象
容器要移除一个servlet,调用servlet的destroy方法结束该servlet
2.简述<jsp:forward>动作和response.sendRedirect()的异同(5分)
重定向分为两类。一类是客户端重定向,一类是服务器端重定向。客户端重定向可以通过设置特定的HTTP头,或者写javaScirpt脚本实现。
服务器端的重定向方式
服务器的重定向有两种方式,一种是HttpServletResponse的sendRedirect()方法,一个是使用RequestDispatcher的forward()方法。
HttpServletResponse.sendRedirect()方法
HttpServletResponse接口定义了可用于转向的sendRedirect方法,这个方法将响应定向到指定的,新的URL,location可以是一个绝对的URL,如response.sendRedirect(“http://java.sun.com”)也可以使用相对的URL location可以是一个绝对的URL,如response.sendRedirect(”http://java.sun.com”)也可以使用相对的URL。如果location以“/”开头,则容器认为相对于当前Web应用的根,否则,容器将解析为相对于当前请求的URL。这种重定向的方法,将导致客户端浏览器的请求URL跳转。从浏览器中的地址栏中可以看到新的URL地址,作用类似于上面设置HTTP响应头信息的实现。
RequestDispatcher.forward()方法
RequestDispatcher是一个Web资源的包装器,可以用来把当前request传递到该资源,或者把新的资源包括到当前响应中。RequestDispatcher接口中定义了两个方法,参见如下代码:
public interface RequestDispatcher {
void forward(ServletRequest request, ServletResponse response);
void include(ServletRequest request, ServletResponse response);
}
forward()方法将当前的request和response重定向到该RequestDispacher指定的资源。这在实际项目中大量使用,因为完成一个业务操作往往需要跨越多个步骤,每一步骤完成相应的处理后,转向到下一个步骤。比如,通常业务处理在Servlet中处理,处理的结果转向到一个JSP页面进行显示。这样看起来类似于Servlet链的功能,但是还有一些区别。一个RequestDispatcher对象可以把请求发送到任意一个服务器资源,而不仅仅是另外一个Servlet。 include()方法将把Request Dispatcher资源的输出包含到当前输出中。
注意,只有在尚未向客户端输出响应时才可以调用forward()方法,如果页面缓存不为空,在重定向前将自动清除缓存。否则将抛出一个IllegalStateException异常。
如何得到RequestDispatcher
有三种方法可以得到Request Dispatcher对象。
1.javax.servlet. ServletRequest的getRequestDispatcher(String path)方法,其中path可以是相对路径,但不能越出当前Servlet上下文。如果path以“/”开头,则解析为相对于当前上下文的根。
2.javax.servlet. ServletContext的getRequestDispatcher(String path)方法,其中path必须以“/”开头,路径相对于当前的Servlet上下文。可以调用ServletContext的getContext(String uripath)得到另一个Servlet上下文,并可以转向到外部上下文的一个服务器资源链接。
3.使用javax.servlet. ServletContext的getNamedDispatcher(String name)得到名为name的一个Web资源,包括Servlet和JSP页面。这个资源的名字在Web应用部署描述文件web.xml中指定。
这三种方法的使用有细微的差别。比如,下面是一个应用的配置文件web.xml:
<?xml version=”1.0″ ?>
<!DOCTYPE web-app PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN”
“http://java.sun.com/j2ee/dtds/web-app_2_2.dtd”>
<web-app>
<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>org. javaresearch.redirecttest.ServletOne</servlet-class>
</servlet>
<servlet>
<servlet-name>SecondServlet</servlet-name>
<servlet-class>org.javaresearch. redirecttest.ServletTwo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/servlet/firstservlet/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SecondServlet</servlet-name>
<url-pattern>/servlet/secondservlet/</url-pattern>
</servlet-mapping>
</web-app>
其中定义了两个Servlet,名字分别为FirstServlet和SecondServlet,对应的类分别为org.javaresearch. redirecttest.ServletOne和org. javaresearch.redirecttest.ServletTwo。可以在浏览器中通过类似于下面的链接访问:
http://localhost:8080/servlet/firstservlet/
使用1中方法,例如在firstservlet可以写入下面的代码:
RequestDispatcher rd = request.getRequestDispatcher(”secondservlet”);
rd.forward(request, response);
此时控制权将转向到第二个Servlet了。
使用2中的方法,可以从Servlet Context中得到RequestDispatcher代码如下:
RequestDispatcher rd = getServletContext().getRequest
Dispatcher(”/servlet/secondservlet”);
rd.forward(request, response);
使用3中的方法,从上面的web. xml配置文件可以看到定义了两个Servlet,名字分别为FirstServlet和SecondServlet,所以可以得到命名的Dispatcher:
RequestDispatcher rd = getServletContext().getNamedDispatcher(”SecondServlet”);
rd.forward(request, response);
这样也可以重定向到SecondServlet了。
JSP页面中的重定向
JSP在解析后编译为一个Servlet运行,所以在JSP中也可以使用上面的重定向代码,并且,JSP还提供了更便利的操作,如下:
<jsp:forward page= “nextpage.jsp”/>
JSP页面执行到这儿,将终止当前的处理,将控制权交由nextpage.jsp。
如何选择
RequestDispatcher.forward()方法和HttpServletResponse.sendRedirect()方法的区别是:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用Request Dispatcher.forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用HttpServletResponse.sendRequest()方法。
1.简述Servlet的生命周期(5分)
Web容器加载servlet,生命收起开始,通过调用servlet
的的init()方法进行servlet的初始化,通过调用service()方法实现,根据请求的不同调用不同的do***()方法,结束服务,web容器调用servlet的destroy()方法
一个servlet的生命周期由部署servlet的容器控制,当一个请求映射到一个servlet是,
容器执行下步骤:
1.加载servlet类
2.创建一个servlet类的实例
3.调用init初始化servlet实例,
2.调用service方法,传递一个请求和响应对象
容器要移除一个servlet,调用servlet的destroy方法结束该servlet
2.简述<jsp:forward>动作和response.sendRedirect()的异同(5分)
重定向分为两类。一类是客户端重定向,一类是服务器端重定向。客户端重定向可以通过设置特定的HTTP头,或者写javaScirpt脚本实现。
服务器端的重定向方式
服务器的重定向有两种方式,一种是HttpServletResponse的sendRedirect()方法,一个是使用RequestDispatcher的forward()方法。
HttpServletResponse.sendRedirect()方法
HttpServletResponse接口定义了可用于转向的sendRedirect方法,这个方法将响应定向到指定的,新的URL,location可以是一个绝对的URL,如response.sendRedirect(“http://java.sun.com”)也可以使用相对的URL location可以是一个绝对的URL,如response.sendRedirect(”http://java.sun.com”)也可以使用相对的URL。如果location以“/”开头,则容器认为相对于当前Web应用的根,否则,容器将解析为相对于当前请求的URL。这种重定向的方法,将导致客户端浏览器的请求URL跳转。从浏览器中的地址栏中可以看到新的URL地址,作用类似于上面设置HTTP响应头信息的实现。
RequestDispatcher.forward()方法
RequestDispatcher是一个Web资源的包装器,可以用来把当前request传递到该资源,或者把新的资源包括到当前响应中。RequestDispatcher接口中定义了两个方法,参见如下代码:
public interface RequestDispatcher {
void forward(ServletRequest request, ServletResponse response);
void include(ServletRequest request, ServletResponse response);
}
forward()方法将当前的request和response重定向到该RequestDispacher指定的资源。这在实际项目中大量使用,因为完成一个业务操作往往需要跨越多个步骤,每一步骤完成相应的处理后,转向到下一个步骤。比如,通常业务处理在Servlet中处理,处理的结果转向到一个JSP页面进行显示。这样看起来类似于Servlet链的功能,但是还有一些区别。一个RequestDispatcher对象可以把请求发送到任意一个服务器资源,而不仅仅是另外一个Servlet。 include()方法将把Request Dispatcher资源的输出包含到当前输出中。
注意,只有在尚未向客户端输出响应时才可以调用forward()方法,如果页面缓存不为空,在重定向前将自动清除缓存。否则将抛出一个IllegalStateException异常。
如何得到RequestDispatcher
有三种方法可以得到Request Dispatcher对象。
1.javax.servlet. ServletRequest的getRequestDispatcher(String path)方法,其中path可以是相对路径,但不能越出当前Servlet上下文。如果path以“/”开头,则解析为相对于当前上下文的根。
2.javax.servlet. ServletContext的getRequestDispatcher(String path)方法,其中path必须以“/”开头,路径相对于当前的Servlet上下文。可以调用ServletContext的getContext(String uripath)得到另一个Servlet上下文,并可以转向到外部上下文的一个服务器资源链接。
3.使用javax.servlet. ServletContext的getNamedDispatcher(String name)得到名为name的一个Web资源,包括Servlet和JSP页面。这个资源的名字在Web应用部署描述文件web.xml中指定。
这三种方法的使用有细微的差别。比如,下面是一个应用的配置文件web.xml:
<?xml version=”1.0″ ?>
<!DOCTYPE web-app PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN”
“http://java.sun.com/j2ee/dtds/web-app_2_2.dtd”>
<web-app>
<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>org. javaresearch.redirecttest.ServletOne</servlet-class>
</servlet>
<servlet>
<servlet-name>SecondServlet</servlet-name>
<servlet-class>org.javaresearch. redirecttest.ServletTwo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/servlet/firstservlet/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SecondServlet</servlet-name>
<url-pattern>/servlet/secondservlet/</url-pattern>
</servlet-mapping>
</web-app>
其中定义了两个Servlet,名字分别为FirstServlet和SecondServlet,对应的类分别为org.javaresearch. redirecttest.ServletOne和org. javaresearch.redirecttest.ServletTwo。可以在浏览器中通过类似于下面的链接访问:
http://localhost:8080/servlet/firstservlet/
使用1中方法,例如在firstservlet可以写入下面的代码:
RequestDispatcher rd = request.getRequestDispatcher(”secondservlet”);
rd.forward(request, response);
此时控制权将转向到第二个Servlet了。
使用2中的方法,可以从Servlet Context中得到RequestDispatcher代码如下:
RequestDispatcher rd = getServletContext().getRequest
Dispatcher(”/servlet/secondservlet”);
rd.forward(request, response);
使用3中的方法,从上面的web. xml配置文件可以看到定义了两个Servlet,名字分别为FirstServlet和SecondServlet,所以可以得到命名的Dispatcher:
RequestDispatcher rd = getServletContext().getNamedDispatcher(”SecondServlet”);
rd.forward(request, response);
这样也可以重定向到SecondServlet了。
JSP页面中的重定向
JSP在解析后编译为一个Servlet运行,所以在JSP中也可以使用上面的重定向代码,并且,JSP还提供了更便利的操作,如下:
<jsp:forward page= “nextpage.jsp”/>
JSP页面执行到这儿,将终止当前的处理,将控制权交由nextpage.jsp。
如何选择
RequestDispatcher.forward()方法和HttpServletResponse.sendRedirect()方法的区别是:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用Request Dispatcher.forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用HttpServletResponse.sendRequest()方法。
发表评论
-
什么是servlet链?
2010-08-12 16:33 743与UNIX和DOS命令中的管道类似,你也可以将多个servle ... -
forward与sendRedirect区别是什么?
2010-08-12 16:33 7801.RequestDispatcher.forward() ... -
Servlet如何得到客户端机器的信息?
2010-08-12 16:33 949Servlet可以使用getRemoteAddr()和getR ... -
Java Web开发面试题一套(2)
2010-08-12 16:33 149311.Jsp:forward 和sendredirect 都是 ... -
介绍一下javax.servlet.Servlet接口及其主要方法
2010-08-12 16:33 742Servlet接口的主要作用是提供Servlet生命周期的in ... -
Request对象的主要方法有哪些?
2010-08-12 16:33 692setAttribute(String name,Object ... -
某银行信息中心的J2EE笔试题
2010-08-12 16:33 7111.jsp中定义javabean的作用域可以在用户会话注销后仍 ... -
某个公司的面试测试题 两天时间完成
2010-08-12 16:33 374请在2日内完成该测试;提交完整的eclipse工程和数据库建表 ... -
Servlet都有哪些方法?主要作用是什么?
2010-08-12 16:33 931HttpServlet 类包含 init() ... -
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2010-08-12 16:33 1047HttpServlet的主要方法有 doGet, doPost ... -
一家美资企业的java servlet面试题
2010-08-12 16:33 515filter 的作用是什么?主要实现什么方法?doFilter ... -
JSP&Servlet技术面试题
2010-08-12 16:33 6181. 描述JSP和Servlet的区别、共同点、各自应用的范围 ... -
Servlet如何得到服务器的信息?
2010-08-12 16:33 593Servlet可以使用如下四种方法来得到server的name ... -
什么是servlet
2010-08-12 16:33 471servlet可以被认为是服务器端的applet。servle ... -
Java Web开发面试题一套(1)
2010-08-12 16:33 798选择题(没有注明多选,则为单选),每题2分1.下面哪个不是Fo ... -
描述JSP和Servlet的区别、共同点、各自应用的范围
2010-08-12 16:33 1834JSP在本质上就是SERVLET,但是两者的创建方式不一样.S ... -
Java Web开发面试题一套(5)
2010-08-12 16:33 5953.。用图形画出一个web. ... -
Java Web开发面试题一套(3)
2010-08-12 16:33 87021.销毁一个session对象, ... -
如何解决Java中的中文乱码问题?
2010-08-12 16:33 1073一、中文问题的来源计 ... -
某公司的Java JSP上机题
2010-08-12 16:33 7561 请按测试demo页面需要实现的功能自行设计数据表,数据库不 ...
相关推荐
Java开发校招面试题库是互联网学习求职神器牛客网针对广大求职者整理的一套面试资源,它包含的不仅是题目和答案,还有详细的解析,帮助求职者全面理解和掌握知识点,为应聘Java开发岗位的校招面试做好充分准备。...
出现几率最高和覆盖范围最广的一套经典Java面试题.docx 最新Java编程面试题全集(共50道题+答案).docx 遇到的一些Java面试题回顾.docx 50个C、C++面试题.pdf C++ 数据结构、算法笔试题.docx C++基础面试题.docx C++...
这是一套Java-web面试题及答案的书籍,它包含了Java-web面试的要点和答案,可以帮助你更好地准备Java面试。你可以在知乎专栏上找到最全的Java面试题及答案整理,这里有很多经典的Java程序员面试题以及答案,包含Java...
1. JVM(Java Virtual Machine)是Java运行时环境的核心组件,它负责解析并执行字节码,提供了...以上内容涵盖了Java基础、JVM、Web应用开发、EJB、UML关系、设计模式、框架以及SQL等多个Java笔试和面试的常见知识点。
本资料“【电子版】Java校招面试题库(附答案与解析)java篇.zip”提供了一套完整的Java面试题集,帮助应聘者更好地准备面试。 1. **Java基础知识** - 类与对象:理解面向对象编程的基本概念,如封装、继承、多态...
《疯狂Java EE面试题》是针对Java企业级应用开发领域的一本面试指南,它涵盖了大量经典面试题,旨在帮助求职者全面了解并掌握Java EE的相关技术。Java EE,即Java Platform, Enterprise Edition,是Java平台在企业级...
4. **数据库连接API**:Java提供了一套用于数据库连接的标准API——`java.sql`包,包括`Connection`、`Statement`、`ResultSet`等类,用于实现Java应用程序与数据库的交互。 5. **运算符与表达式**:Java支持多种...
4. **Web面试题二答案.pdf**:与第一部分相似,这部分可能更专注于Web开发的进阶话题,如JavaScript、AJAX、JSON、CSS、HTML5以及与服务器端交互的技术,如RESTful API设计。 5. **面试题集.pdf**:这个综合性的...
### Java经典面试题知识点概述 #### 一、面向对象编程基础 **面向对象分析(OOA)** 面向对象分析(OOA)是系统开发过程中的一个重要阶段,它在系统业务调查之后进行,目的是按照面向对象的思想来分析问题。与传统的...
### Java面试题概览 #### 1. Java类基础 - **`java.lang.Thread`:** 此类为线程提供了基本的功能支持。在Java中创建线程时可以直接继承此类或者实现`Runnable`接口。 - **`java.lang.Number`:** `Number`类是一个...
### JAVA程序员面试题5知识点详解 #### 一、JSP和Servlet的相同点与不同点及其联系 **相同点:** - **都是基于Java的技术**:JSP和Servlet都使用Java语言编写,运行在Java虚拟机(JVM)上。 - **处理HTTP请求**:...
这份"java与jsp面试试题"集合提供了一套全面的面试问题,帮助求职者和开发者准备相关职位的面试。以下是对这些知识点的详细说明: 1. **Java基础** - 类与对象:理解面向对象编程的基本概念,包括类的定义、对象的...
### JAVA面试题整理知识点 #### 一、Java基础知识 1. **Java基本数据类型** - Java的基本数据类型包括:byte、short、int、long、float、double、char、boolean。 - `String` 不是基本数据类型,它是引用类型。...
### Java面试题(SSH框架) #### 一、Hibernate工作原理及为什么使用? **原理:** 1. **读取并解析配置文件:** Hibernate首先会读取`hibernate.cfg.xml`配置文件,此文件中包含了数据库连接信息以及其它运行时...
### Java基础知识面试题知识点解析 #### 一、Java概述与编程定义 - **何为编程**:编程是指通过使用特定的编程语言来指导计算机完成指定任务的过程。这涉及到将解决问题的逻辑步骤转换成计算机可执行的指令集。 - ...
Java软件开发工程师面试题宝典是一本针对Java程序员面试准备的重要参考资料,涵盖了广泛的知识点,适合于Java爱好者和有志于从事Java开发的人员。以下将详细解释其中的关键概念和知识点: 1. **J2EE规范**:Java...
JAVA J2EE基础面试题汇总提供了对JAVA编程语言及其企业级应用框架的深入理解,以下是对给定文件中提到的知识点的详细解析: ### Java的历史背景 Java最初由Sun Microsystems在1995年推出,源于一个名为Green的项目...
### 2024年Java面试题之Spring Cloud面试题详解 #### 一、什么是微服务架构? 微服务架构是一种设计方法论,旨在将大型单体应用分解为一系列小型、可独立部署的服务单元(即微服务)。每个微服务专注于执行单一...
### 最全Java面试题汇总(一):详细解析与知识点扩展 #### 1. Java面试题概述 本文将对一份“最全Java面试题汇总”中的部分题目进行详细解析,并结合实际应用场景,深入探讨相关知识点。 #### 2. 题目101:变量...