JSP面试经典

来源:互联网 发布:圆方家居设计软件3.0 编辑:程序博客网 时间:2024/05/16 17:11

1. 如何执行一个线程安全的JSP?
只需增加如下指令
<%@ page isThreadSafe="false" %>

2.在JSP如何包含一个静态文件?
静态包含如下:<%@ include file="copyright.html" %>
动态包含如下:<jsp:include page="copyright.html" flush="true"/>

3.如何防止在JSP或SERVLET中的输出不被BROWSER保存在CACHE中?
把如下脚本加入到JSP文件的开始即可:
<%
response.setHeader("Cache-Control","no-store"); //HTTP 1.1
response.setHeader("Pragma","no-cache"); //HTTP 1.0
response.setDateHeader ("Expires", 0); //prevents caching at the proxy

server
%>

4、在JSP中如何设置COOKIE?
COOKIE是作为HTTP HEADER的一部分被发送的,如下方法即可设置:
<%
Cookie mycookie = new Cookie("aName","aValue");
response.addCookie(mycookie);
%>

5、在JSP中如何删除一个COOKIE?
<%
Cookie killMyCookie = new Cookie("mycookie", null);
killMyCookie.setMaxAge(0);
killMyCookie.setPath("/");
response.addCookie(killMyCookie);
%>

6、在一个JSP的请求处理中如何停止JSP的执行
如下例:
<%
if (request.getParameter("wen") != null) {
// do something
} else {
return;
}
%>

7、在JSP中如何定义方法
你可以定义方法,但是你不能直接访问JSP的内置对象,而是通过参数的方法传

递。如下:
<%!
public String howBadFrom(HttpServletRequest req) {
HttpSession ses = req.getSession();
...
return req.getRemoteHost();
}
%>
<%
out.print("in general,lao lee is not baddie ");
%>
<%= howBadFrom(request) %>

8、如果BROWSER已关闭了COOKIES,在JSP中我如何打开SESSION来跟踪
使用URL重写即可,如下:
hello1.jsp
<%@ page session="true" %>
<%
Integer num = new Integer(100);
session.putValue("num",num);
String url =response.encodeURL("hello2.jsp");
%>
<a href=<%=url%>>hello2.jsp</a>

hello2.jsp
<%@ page session="true" %>
<%
Integer i= (Integer )session.getValue("num");
out.println("Num value in session is "+i.intValue());
%>

9、在JSP中能发送EMAIL吗
可以使用SUN的专用包:sun.net.smtp包。如下脚本使用SmtpClient类发送EMAIL


<%@ page import="sun.net.smtp.SmtpClient, java.io.*" %>
<%
String from="ybwen@sina.com";
String to="hewenjun@yeah.net, lei@who.com.cn";
try{
SmtpClient client = new SmtpClient("mail.xxxxx.xxx");
client.from(from);
client.to(to);
PrintStream message = client.startMessage();
message.println("To: " + to);
message.println("Subject: Sending email from JSP!");
message.println("This was sent from a JSP page!");
message.println();
message.println("Cool! :-)");
message.println();
message.println("Good Boy");
message.println("Im in genius.com");
message.println();
client.closeServer();
}
catch (IOException e){
System.out.println("ERROR SENDING EMAIL:"+e);
}
%>

10、当我使用一个结果集时,如何防止字段为"null"的字域显示在我的HTML输入

文本域中?
可以定义一个简单的函数来达到目的,如下:
<%!
String blanknull(String s) {
return (s == null) ? "" : s;
}
%>

然后在JSP的FORM中,可以这样使用
<input type="text" name="shoesize" value="<%=blanknull(shoesize)%>">

11、如何中SERVLET或JSP下载一个文件(如:binary,text,executable)?
现提供两个解决方案:
A:使用HTTP,
B:在Servlet中,通过设置ContentType和使用java.io包的Stream等类可作到.

例如:
response.setContentType("application/x-msword");
然后想输出缓冲中写一些东东即可。

12、使用useBean标志初始化BEAN时如何接受初始化参数
使用如下两标签即可:
<jsp:getProperty name="wenBean" property="someProperty"/>
<jsp:setProperty name="wenBean" property="someProperty"

value="someValue"/>

13、使用JSP如何获得客户浏览器的信息?
使用request.getHeader(String)即可

14、能象调用子程序一样调用JSP吗?
当然可以,用<jsp:include page="relativeURL" flush="true"/>

15、当我重编译我的JSP使用的一个类后,为什么JVM继续使用我的老CLASS?

<%@include file="abc.jsp"%>与<jsp:include page="abc.jsp"/>之间的差别?
前一个为静态包含,而后一个为动态包含

16、JSP的缺点?
1。对JAVA程序进行调试没有好东东
2。因大多数的servlet引擎不支持connection pooling
3。Servlet引擎没有标准
4。JSP与其它脚本语言的交互

17、JSP能进行递归调用吗?
当然可以,如对form的提交给本页

18、如何实现JSP的国际化?
为各种版本提供resource bundles属性文件即可

19、在JSP中如何写文本文件?
使用PrintWriter对象,如:
<%@ page import="java.io.*" %>
<%
String str = "print me";
String nameOfTextFile = "/usr/anil/imp.txt";
try {
PrintWriter pw = new PrintWriter(new FileOutputStream

(nameOfTextFile));
pw.println(str);
pw.close();
} catch(IOException e) {
out.println(e.getMessage());
}
%>

20、如何在JSP中包括绝对路径文件?
使用URLConnection即可。

21、在servlets和JSP之间能共享session对象吗?
当然可以,
HttpSession session = request.getSession(true);
session.putValue("variable","value");


22
、当我使用<jsp:forward>时,在浏览器的地址栏没有改变? 
 
使用response.sendRedirect("newURL")


23
、如何转换JSP 0.9版本的文件到JSP1.1? 
 
可使用sed/awk即可


24
、使用JSP能设置HTML FORM中输入域的焦点,不用JavaScript? 
 
没办法


25

、使用JSP连接到数据库连接缓冲池的最好方法是什么? 
 1.
使用JDBC20中带有此服务的Driver 
 2.
使用提供有此服务的Application server 
 3.
自己写64、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
    Jsp是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。
26、四种会话跟踪技术
    会话作用域ServletsJSP 页面描述
    page否是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面
    request是是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)
    session是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求
    application是是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域

原创粉丝点击