Jsp常见问题.docx

上传人:b****9 文档编号:23345702 上传时间:2023-05-16 格式:DOCX 页数:13 大小:21.22KB
下载 相关 举报
Jsp常见问题.docx_第1页
第1页 / 共13页
Jsp常见问题.docx_第2页
第2页 / 共13页
Jsp常见问题.docx_第3页
第3页 / 共13页
Jsp常见问题.docx_第4页
第4页 / 共13页
Jsp常见问题.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

Jsp常见问题.docx

《Jsp常见问题.docx》由会员分享,可在线阅读,更多相关《Jsp常见问题.docx(13页珍藏版)》请在冰豆网上搜索。

Jsp常见问题.docx

Jsp常见问题

jsp常见问题

1、Servlet与JSP有什么区别?

Servlet和JSP完成的功能是相同的,都可以接收用户的请求,可以对用户进行响应,可以调用业务方法。

不同点在于JSP是在html或者xml中嵌入了Java代码或者JSP的标记,在制作页面方面具有优势,可以使用网页编辑工具来制作网页,然后嵌入Java或者JSP的标记。

Servlet是纯Java代码,通常用于控制,不用于输出。

在MVC模式中,JSP通常充当视图,Servlet通常充当控制器。

另外,JSP在运行的时候还要转换成类似于Servlet的Java代码。

2、Servelt通常有哪些方法

init方法,完成初始化

service方法,包括doGet和doPost,用于接收用户的请求,调用后台的JavaBean或者EJB,选择界面对用户响应。

destroy方法,用于释放资源

3、谈谈Servlet的生命周期

当接收到请求的时候,容器察看对应的Servlet对象是否存在,如果不存在,需要加载Servetl,实例化Servlet,调用init方法进行初始化。

如果已经存在,根据用户的请求创建request和response对象,把这两个对象作为参数调用Servlet对象的service方法,Servlet通过这个方法与用户进行交互,方法执行完之后,对请求的处理结束。

Servelt对象继续等待下一个请求。

当应用卸载的时候,调用destroy方法释放资源。

多个请求共享Servelt对象。

4、ServletAPI的两个主要包

javax.servlet.*;

javax.servlet.http.*;

5、编写Servlet需要继承的类是什么?

   HttpServlet

6、编写Servlet通常需要实现的两个方法是什么?

doGet方法和doPost方法

7、doGet方法和doPost方法中的两个参数是什么?

HttpServletRequest和HttpServletResponse,前者封装了与请求相关的信息,后者封装了与响应相关的信息。

要获取请求信息,从第一个参数获取,要对用户响应,通过第二个参数。

8、要获取用户信息,如何获取

request的getParameter方法和getParameterValues方法,前者用于获取单值表单元素的值,或者用于获取多值的情况,典型的复选框。

前者返回的是一个字符串,后者返回的是字符串数组。

如果参数指定的表单元素不存在,返回null。

9、要给用户响应信息,如何完成?

设置响应内容的类型:

response.setContentType(“text/html;charset=gb2312”);

获取输出流对象:

PrintWriterout=response.getWriter();

输出信息:

通过out的println方法

10、             在Servlet中选择接面对用户响应,如何实现

两种方式:

使用RequestDispatcher和response的sendRedirect方法

如果使用RequestDispatcher:

RequestDispatcherrd=request,getRequestDispatcher(“目标文件”);

rd.forward(request,response);

如果使用sendRedirect方法

   response.sendRedirect(“目标文件”);

11、             上面的两种方式有什么区别?

RequestDispatcher的forward方法相当于

forward>的作用。

类似于方法调用,当执行到这行代码的时候,通过forward方法转向执行目标文件,把request和response作为参数传递到下一个页面,这样当前页面(Servlet或者JSP)和目标页面共享了request,可以通过request对象传值。

response的sendRedirect方法相当于向客户端浏览器发送了一个消息,让浏览器重新请求目标文件,从用户的角度来说,相当于发送了两次请求,每次请求有独立的request和response对象,不能通过request在两个页面之间传值。

从地址栏看,前一种方式在地址栏中显示的第一个文件的路径,后一种方式显示的第二个文件的路径。

12、             在Servlet中如何获取Session对象,如何获取Cookie

使用request对象的getSession方法获取session,通过getCookies获取Cookie

13、             Servlet在哪个文件中进行配置?

在Web应用的WEB-INF下面的web.xml中进行配置。

14、             如何配置Servlet

包括两步:

Servlet的声明和Servlet访问方式的声明。

Servlet的声明:

servlet的名字(自己定义的)

servlet的完整类名

Servlet访问方式的声明

Servlet的名字(应该和声明的时候保持一致)

访问路径

15、             编译好的Servlet类放在什么位置?

放在Web应用WEB-INF下面的classes文件夹中。

16、             假设网站的IP地址为1.2.3.4,端口8878,应用的名字hello,servlet的访问方式/hello,现在要访问这个servlet,如何访问?

    http:

//1.2.3.4:

8878/hello/hello

17、             谈谈Servlet过滤器的作用?

    Servlet是特殊的Servlet,能够对特定的请求路径进行过滤,在访问这个路径之前,先执行过滤器,过滤器进行预处理,过滤器决定是否继续执行后续的文件。

典型的应用,可以把用户验证的代码写在过滤器中,然后把过滤的路径配制成需要验证的文件的路径。

18、             谈谈Servlet监听器的作用

Servlet监听器对特定的事件进行监听,当产生这些事件的时候,会执行监听器的代码。

可以对应用的加载、卸载,对session的初始化、销毁,对session中值变化等事件进行监听

查看文章

jsp常见问题2007年05月13日星期日17:

331、如何混合使用Jsp和SSI#include?

在JSP中可以使用如下方式包含纯HTML:

--#includefile="data.inc"-->

但是如果data.inc中包含JSPCODE,我们可以使用:

<%@includefile="data.inc"%>

2、如何执行一个线程安全的JSP?

只需增加如下指令

<%@pageisThreadSafe="false"%>

3、JSP如何处理HTMLFORM中的数据?

通过内置的request对象即可,如下:

<%

Stringitem=request.getParameter("item");

inthowMany=newInteger(request.getParameter("units")).intValue();

%>

4、在JSP如何包含一个静态文件?

静态包含如下:

<%@includefile="copyright.html"%>

动态包含如下:

includepage="copyright.html"flush="true"/>

5、在JSP中如何使用注释?

主要有四中方法:

1。

<%--与--%>

2。

//

3。

/***//**与**/

4。

--与-->

6、在JSP中如何执行浏览重定向?

使用如下方式即可:

response.sendRedirect("

也能物理地改变HTTPHEADER属性,如下:

<%

response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);

StringnewLocn="/newpath/index.html";

response.setHeader("Location",newLocn);

%>

7、如何防止在JSP或SERVLET中的输出不被BROWSER保存在CACHE中?

把如下脚本加入到JSP文件的开始即可:

<%

response.setHeader("Cache-Control","no-store");//HTTP1.1

response.setHeader("Pragma","no-cache");//HTTP1.0

response.setDateHeader("Expires",0);//preventscachingattheproxyserver

%>

8、在JSP中如何设置COOKIE?

COOKIE是作为HTTPHEADER的一部分被发送的,如下方法即可设置:

<%

Cookiemycookie=newCookie("aName","aValue");

response.addCookie(mycookie);

%>

9、在JSP中如何删除一个COOKIE?

<%

CookiekillMyCookie=newCookie("mycookie",null);

killMyCookie.setMaxAge(0);

killMyCookie.setPath("/");

response.addCookie(killMyCookie);

%>

10、在一个JSP的请求处理中如何停止JSP的执行

如下例:

<%

if(request.getParameter("wen")!

=null)...{

//dosomething

}else...{

return;

}

%>

11、在JSP中如何定义方法

你可以定义方法,但是你不能直接访问JSP的内置对象,而是通过参数的方法传递。

如下:

<%!

publicStringhowBadFrom(HttpServletRequestreq)...{

HttpSessionses=req.getSession();

...

returnreq.getRemoteHost();

}

%>

<%

out.print("ingeneral,laoleeisnotbaddie");

%>

<%=howBadFrom(request)%>

12、如果BROWSER已关闭了COOKIES,在JSP中我如何打开SESSION来跟踪

使用URL重写即可,如下:

hello1.jsp

<%@pagesession="true"%>

<%

Integernum=newInteger(100);

session.putValue("num",num);

Stringurl=response.encodeURL("hello2.jsp");

%>

''>hello2.jsp

hello2.jsp

<%@pagesession="true"%>

<%

Integeri=(Integer)session.getValue("num");

out.println("Numvalueinsessionis"+i.intValue());

%>

13、在JSP中能发送EMAIL吗

可以使用SUN的专用包:

.smtp包。

如下脚本使用SmtpClient类发送EMAIL。

<%@pageimport=".smtp.SmtpClient,java.io.*"%>

<%

Stringfrom="ybwen@";

Stringto="hewenjun@,lei@";

try...{

SmtpClientclient=newSmtpClient("mail.xxxxx.xxx");

client.from(from);

client.to(to);

PrintStreammessage=client.startMessage();

message.println("To:

"+to);

message.println("Subject:

SendingemailfromJSP!

");

message.println("ThiswassentfromaJSPpage!

");

message.println();

message.println("Cool!

:

-)");

message.println();

message.println("GoodBoy");

message.println("I''min");

message.println();

client.closeServer();

}

catch(IOExceptione)...{

System.out.println("ERRORSENDINGEMAIL:

"+e);

}

%>

14、在SERVLET中我能调用一个JSP错误页吗

当然没问题,如下展示了如何在一个SERVLET控制逻辑单元内调用一个JSP错误页面。

protectedvoidsendErrorRedirect(HttpServletRequestrequest,

HttpServletResponseresponse,StringerrorPageURL,

Throwablee)

throwsServletException,IOException...{

request.setAttribute("javax.servlet.jsp.jspException",e);

getServletConfig().getServletContext().

getRequestDispatcher(errorPageURL).forward(request,

response);

}

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)...{

try...{

//dosomething

}catch(Exceptionex)...{

try...{

sendErrorRedirect(request,response,"/jsp/MyErrorPage.jsp",ex);

}catch(Exceptione)...{

e.printStackTrace();

}

}

}

15、JSP和APPLET如何通讯

JSP如何与EJBSessionBean通讯

下面的代码段作了很好的示范

<%@pageimport="javax.naming.*,javax.rmi.PortableRemoteObject,

foo.AccountHome,foo.Account"%>

<%!

//定义一个对SessionBeanHome接口实例的全局引用

AccountHomeaccHome=null;

publicvoidjspInit()...{

//获得Home接口实例

InitialContextcntxt=newInitialContext();

Objectref=cntxt.lookup("java:

comp/env/ejb/AccountEJB");

accHome=(AccountHome)PortableRemoteObject.narrow(ref,AccountHome.class);

}

%>

<%

//实例化SessionBean

Accountacct=accHome.create();

//调用远程方法

acct.doWhatever(...);

//如此等等

%>

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

可以定义一个简单的函数来达到目的,如下:

<%!

Stringblanknull(Strings)...{

return(s==null)?

"":

s;

}

%>

然后在JSP的FORM中,可以这样使用

">

17、如何中SERVLET或JSP下载一个文件(如:

binary,text,executable)?

现提供两个解决方案:

A:

使用HTTP,

B:

在Servlet中,通过设置ContentType和使用java.io包的Stream等类可作到.例如:

response.setContentType("application/x-msword");

然后想输出缓冲中写一些东东即可。

18、使用useBean标志初始化BEAN时如何接受初始化参数

使用如下两标签即可:

getPropertyname="wenBean"property="someProperty"/>

setPropertyname="wenBean"property="someProperty"value="someValue"/>

19、使用JSP如何获得客户浏览器的信息?

使用request.getHeader(String)即可

20、能象调用子程序一样调用JSP吗?

当然可以,用

includepage="relativeURL"flush="true"/>

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

<%@includefile="abc.jsp"%>与

includepage="abc.jsp"/>之间的差别?

前一个为静态包含,而后一个为动态包含

22、JSP的缺点?

1。

对JAVA程序进行调试没有好东东

2。

因大多数的servlet引擎不支持connectionpooling

3。

Servlet引擎没有标准

4。

JSP与其它脚本语言的交互

23、JSP能进行递归调用吗?

当然可以,如对form的提交给本页

34、如何实现JSP的国际化?

为各种版本提供resourcebundles属性文件即可

25、在JSP中如何写文本文件?

使用PrintWriter对象,如:

<%@pageimport="java.io.*"%>

<%

Stringstr="printme";

StringnameOfTextFile="/usr/anil/imp.txt";

try...{

PrintWriterpw=newPrintWriter(newFileOutputStream(nameOfTextFile));

pw.println(str);

pw.close();

}catch(IOExceptione)...{

out.println(e.getMessage());

}

%>

26、如何在JSP中包括绝对路径文件?

使用URLConnection即可。

27、在servlets和JSP之间能共享session对象吗?

当然可以,

HttpSessionsession=request.getSession(true);

session.putValue("variable","value");

28、javascript的变量能复制到JSP的SESSION中吗?

29、如何设置cookie在某一时间后过期?

用Cookie.setMaxAge(int)

30、如何获得当前的sessions数?

可以使用HttpSessionBindingListeners来跟踪

31、能设置一些代码在我所有的JSP文件之上运行?

如果可以,能共享吗?

当然可以,可以为你的JSP文件定义一个别名:

/jsp/=ybwen.genius.myPreprocessingServlet,而以/jsp/为前缀的文件可以使用

32、对一个JSP页,如果多个客户端同时请求它,同步可能吗?

在jsp:

useBean语法中使用beanName有何好处?

beanName使用Beans.instantiate()初始化Bean

33、当我使用

forward>时,在浏览器的地址栏没有改变?

使用response.sendRedirect("newURL")

34、如何转换JSP0.9版本的文件到JSP1.1?

可使用sed/awk即可

35、使用JSP能设置HTMLFORM中输入域的焦点,不用javascript?

没办法

36、使用JSP连接到数据库连接缓冲池的最好方法是什么?

1。

使用JDBC2。

0中带有此服务的Driver

2.使用提供有此服务的Applicationserver

3.自己写

本文来自CSDN博客,转载请标明出处:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1