java web 面试题

来源:互联网 发布:远程网络教育学费 编辑:程序博客网 时间:2024/06/05 02:33

常见问题

1、如何显示目录列表:
我们在本机测试程序时,一般都习惯在浏览器中就能遍历到某个目录下都有哪些文件,这就需要web服务器支持目录列表:
打开文件conf/web.xml,找到以下代码:
1
2
<param-name>listings</param-name>
<param-value>false</param-value>
将其中的false改成true

2、配置error-page:(指定处理错误的页面)
打开文件D:\demo\WEB-INF\web.xml:
在<web-app>…</web-app>中间加入:
1
2
3
4
<error-page>
<error-code>404</error-code>
<location>/NotFound.jsp</location>
</error-page>
(错误代码为404的错误导向到NotFound.jsp)
1
2
3
4
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
(当系统发生500错误即服务器内部错误时,跳转到错误处理页面error.jsp)
1
2
3
4
<error-page>
<exception-type>java.lang.NullException</exception-type>
<location>/error.jsp</location>
</error-page>
(当系统发生java.lang.NullException(即空指针异常)时,跳转到错误处理页面error.jsp)
提醒:
以上页面都需要做大一点(>=2kB),否则不起作用。
原因:tomcat把这样的页面字节限制在不少于多少字节。

3、jsp页面出现乱码如何解决?
在页头加上:
1
2
3
<%@pagecontentType=“text/
html
;charset=gb2312″%>

4、jsp中两种包含页面的方式?
第一种:动作标签;例如:
1
<jsp:includepage="/index.html"/>
第二种:指令标签;例如:
1
<%@includefile="relativeURL"%>

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


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

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

解释JSP语法之前,先建立一个显示日期与时间的简单网页并且将它储存成sample.jsp:
1
2
3
4
5
6
7
8
9
10
<html>
<head>
<title>FirstPage</title>
</head>
<body>
<H3>Todayis:
<%=newjava.util.Date()%>
</H3>
</body>
</html>.
将这个档案与你所有的HTML与JSP网页放在你JSWDK安装目录下的网页目录里. 你可以在http://localhost:8080/sample.jsp下载此页.当你第一次参观这个网页时,网站服务器会将JSP翻译成Javaservlet程序代码,那你就会看到的日期与时间.。


6.servlet的理解
1.servlet是在服务器上运行的小程序。
2.Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:
客户端发送请求至服务器端;
服务器将请求信息发送至Servlet
Servlet生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求
服务器将响应返回给客户端
Servlet看起来像是通常的Java程序。Servlet导入特定的属于Java ServletAPI的包。因为是对象字节码,可动态地从网络加载,可以说Servlet对Server就如同Applet对Client一样,但是,由于Servlet运行于Server中,它们并不需要一个图形用户界面。从这个角度讲,Servlet也被称为FacelessObject。
一个servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。虽然servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序。
3.Servlet=Server+Applet,表示小服务程序。
4.生命周期
   
加载和实例化Servlet。这项操作一般是动态执行的。然而,Server通常会提供一个管理的选项,用于在Server启动时强制装载和初始化特定的Servlet。
Server创建一个Servlet的实例
一个客户端的请求到达Server
Server调用Servlet的init()方法(可配置为Server创建servlet实例时调用,在web.xml中<servlet>标签下配置<load-on-startup>标签,配置的值为整型,值越小servlet的启动优先级越高)
Server创建一个请求对象,处理客户端请求
Server创建一个响应对象,响应客户端请求
Server激活Servlet的service()方法,传递请求和响应对象作为参数
service()方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息
service()方法使用响应对象的方法,将响应传回Server,最终到达客户端。service()方法可能激活其它方法以处理请求,如doGet()或doPost()或程序员自己开发的新的方法。
对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service()方法,将这两个对象作为参数传递给它。如此重复以上的循环,但无需再次调用init()方法。一般Servlet只初始化一次(只有一个对象),当Server不再需要Servlet时(一般当Server关闭时),Server调用Servlet的Destroy()方法。
5.工作模式
客户端发送请求至服务器
服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器
服务器将响应返回客户端
7.JSP的编译器指引与指令组件
编译器指示 <%@ 编译器指示 %>    两个主要的指引是 page与include
声明 <%! 声明 %>    记住要在变量声明的后面加上分号,就跟任何有效的Java叙述的形式一样: <%! int i=0; %>。
表达式 <%= 表达式 %>    JSP运算是属于 <%= ?%> 卷标里,并不包含分号,加引号字符串的无用部分。
<%= i %>
<%= "Hello" %> 。

程序代码段/小型指令 <% 程序代码片段 %>
小型指令文件可以是原始的HTML或XML,其内部的程序代码片段可以让你建立有条件的执行程序代码,或者只是一些使用另一块程序代码的东西。举例来说,下列的程序代码结合了表达式与小型指令文件,在H1,H2,H3,以及H4卷标里显示字符串"Hello"。小型指令文件不限于一行的原始程序代码 :
<% for (int i=1; i<=4; i++) { %>
<H<%=i%>>Hello</H<%=i%>>
<% } %>。

注释 <%-- 注释 --%>
8.JSP如何处理运行时异常(run-time)exceptions?

可以使用页面的errorPage属性捕获没有处理的运行时异常,然后自动转向到一个错误处理页面,代码如下:
<%@ page errorPage=”error.jsp” %>
如果在页面请求时出现运行时异常是,以上代码会把页面转向到JSP页面error.jsp,在error.jsp里面,可以通过以下代码定义这个页面是错误处理页:

<%@ page isErrorPage=”true” %>

这样描述错误信息的Throwable对象就可以在error.jsp页面里面访问到。
9.如果jsp表单元素的值为空,如何避免null出现在页面上?

可以写一个简单的函数对空值进行处理,判断值是否为空,如果是空就返回空字符串。实例代码如下:
<%!
String blanknull(String s){
return (s == null) ? “” : s;
}
%>
在你的JSP里面,可以使用以上函数输出文本框或者其他页面元素的值,实例代码如下:
<input type=”text” name=”shoesize” value=”<%=blanknull(shoesize)% >” >

10.如何避免JSP页面自动生成session对象?为什么要这么做?

在默认情况下,在对一个JSP页面发出请求时,如果session还没有建立,JSP页面会自动为请求建立一个session对象,但是session是比较消耗资源的,如果没必要保持和使用session,就不应该创建session, 例如一些只是用来宣传产品的网站,往往没必要使用session来保存信息,可以使用jsp页面指令session=”false”来避免JSP页面为每个请求都自动创建session.实例代码如下:

<%@ page session=”false”>
11.在servlets和JSP之间能共享session对象吗?

当然可以,
HttpSession session = request.getSession(true);
session.putValue(”variable”,”value”);
0 0