首页 > 开发 > JSP > 正文

JSP常用问答

2020-02-05 13:57:20
字体:
来源:转载
供稿:网友

jsp常用问答

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.自己写

 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表