首页 > 开发 > JSP > 正文

初学者入门:通过问答方式来认识学习JSP

2020-02-05 13:50:54
字体:
来源:转载
供稿:网友
1、如何混合使用jsp和ssi #include? 
在jsp中可以使用如下方式包含纯html: 
<!--#include file="data.inc"--> 
但是如果data.inc中包含jsp code ,我们可以使用: 
<%@include file="data.inc"%> 


2、如何执行一个线程安全的jsp? 
只需增加如下指令 
<%@ page isthreadsafe="false" %> 


3、jsp如何处理html form中的数据? 
通过内置的request对象即可,如下: 
<% 
string item = request.getparameter("item"); 
int howmany = new integer(request.getparameter("units")).intvalue(); 
%> 


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


5、在jsp中如何使用注释? 
主要有四中方法: 
1。<%-- 与 --%> 
2。// 
3。/**与**/ 
4。<!--与--> 


6、在jsp中如何执行浏览重定向? 
使用如下方式即可:response.sendredirect("http://ybwen.home.chinaren.com/index.html"); 
也能物理地改变http header属性,如下: 
<% 
response.setstatus(httpservletresponse.sc_moved_permanently); 
string newlocn="/newpath/index.html"; 
response.setheader("location",newlocn); 
%> 


7、如何防止在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 
%> 


8、在jsp中如何设置cookie? 
cookie是作为http header的一部分被发送的,如下方法即可设置: 
<% 
cookie mycookie = new cookie("aname","avalue"); 
response.addcookie(mycookie); 
%> 


9、在jsp中如何删除一个cookie? 
<% 
cookie killmycookie = new cookie("mycookie", null); 
killmycookie.setmaxage(0); 
killmycookie.setpath("/"); 
response.addcookie(killmycookie); 
%> 


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

%> 


11、在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) %> 


12、如果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()); 
%> 


13、在jsp中能发送email吗 
可以使用sun的专用包:sun.net.smtp包。如下脚本使用smtpclient类发送email。 
<%@ page import="sun.net.smtp.smtpclient, java.io.*" %> 
<% 
string from="[email protected]"; 
string to="[email protected][email protected]"; 
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); 

%> 


14、在servlet中我能调用一个jsp错误页吗 
当然没问题,如下展示了如何在一个servlet控制逻辑单元内调用一个jsp错误页面。 
protected void senderrorredirect(httpservletrequest request, 
httpservletresponse response, string errorpageurl, 
throwable e) 
throws servletexception, ioexception { 
request.setattribute ("javax.servlet.jsp.jspexception", e); 
getservletconfig().getservletcontext(). 
getrequestdispatcher(errorpageurl).forward(request, 
response); 


public void dopost(httpservletrequest request,httpservletresponse response) { 
try { 
// do something 
} catch (exception ex) { 
try { 
senderrorredirect(request,response,"/jsp/myerrorpage.jsp",ex); 
} catch (exception e) { 
e.printstacktrace(); 





15、jsp和applet如何通讯 
jsp如何与ejb sessionbean通讯 
下面的代码段作了很好的示范 
<%@ page import="javax.naming.*, javax.rmi.portableremoteobject, 
foo.accounthome, foo.account" %> 
<%! 
//定义一个对sessionbeanhome接口实例的全局引用 
accounthome acchome=null; 

public void jspinit() { 
//获得home接口实例 
initialcontext cntxt = new initialcontext( ); 
object ref= cntxt.lookup("java:comp/env/ejb/accountejb"); 
acchome = (accounthome)portableremoteobject.narrow(ref,accounthome.class); 

%> 
<% 
//实例化sessionbean 
account acct = acchome.create(); 
//调用远程方法 
acct.dowhatever(...); 
// 如此等等 
%> 


16、当我使用一个结果集时,如何防止字段为"null"的字域显示在我的html输入文本域中? 
可以定义一个简单的函数来达到目的,如下: 
<%! 
string blanknull(string s) { 
return (s == null) ? "" : s; 

%> 

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


17、如何中servlet或jsp下载一个文件(如:binary,text,executable)? 
现提供两个解决方案: 
a:使用http, 
b:在servlet中,通过设置contenttype和使用java.io包的stream等类可作到.例如: 
response.setcontenttype("application/x-msword"); 
然后想输出缓冲中写一些东东即可。 

18、使用usebean标志初始化bean时如何接受初始化参数 
使用如下两标签即可: 
<jsp:getproperty name="wenbean" property="someproperty"/> 
<jsp:setproperty name="wenbean" property="someproperty" value="somevalue"/> 

19、使用jsp如何获得客户浏览器的信息? 
使用request.getheader(string)即可 


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


21、当我重编译我的jsp使用的一个类后,为什么jvm继续使用我的老class? 


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


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


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


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

25、在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()); 

%> 


26、如何在jsp中包括绝对路径文件? 
使用urlconnection即可。 


27、在servlets和jsp之间能共享session对象吗? 
当然可以, 
httpsession session = 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、当我使用<jsp:forward>时,在浏览器的地址栏没有改变? 
使用response.sendredirect("newurl") 


34、如何转换jsp 0.9版本的文件到jsp1.1? 
可使用sed/awk即可 


35、使用jsp能设置html form中输入域的焦点,不用javascript? 
没办法 


36、使用jsp连接到数据库连接缓冲池的最好方法是什么? 
1。使用jdbc2。0中带有此服务的driver 
2.使用提供有此服务的application server 
3.自己写
  • 本文来源于网页设计爱好者web开发社区http://www.html.org.cn收集整理,欢迎访问。
  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表