JSP內置對象編程技巧
2024-09-05 00:19:02
供稿:網友
1.1 application
*在jsp中獲得application對象
如:getservletcontext().setattribute("counter",new mycount.counter());
如:<jsp:usebean scope="application" id="counter" class="mycounter.counter"/>
*在jsp中處理on application start和on session start事件的方法
使用httpsessionbindinglistener類.
添加session:
session.putvalue("bingdings.listener",new mylistener(getservletcontext());
定義mylistener類:
import javax.servlet.http.*;
import javax.servlet.*;
public class mylistener implements httpsessionbindinglistener{
servletcontext context;
public mylistener(servletcontext context){
this.context=context;
}
public void valuebound(httpsessionbindingevent event){
system.out.println("valuebound:someone just bound my listener to a session!");
}
public void valueunbound(httpsessionbindingevent event){
system.out.println("valueunbound:someone just unbound my listener!");
}
}
1.2 request
*獲取一個正在運行時的jsp/servlet文件的絕對url地址
stringf file=request.getrequesturl();
if(requet.getquerystring()!=null{
file+='?'+request.getquerystring();
}
url reconstructedurl=new url(request.getscheme(),request.getservername(),request.getserverport(),file);
out.println(reconstructedurl.tostring());
*獲取客戶端通過哪一個url訪問本頁面
string callpage=request.getheader("referer");
*獲取當前腳本在當疥文件系統中的真實路徑
request.getrealpath(request.getservletpath());
*判斷多個submit中的一個
<input type=submit name="sub" value="up">
<input type=submit name="sub" value="down">
在jsp中使用request.getparameter("sub");就可分辨
1.3 response
*網頁重定向之三方法
(1)response.sendredirect(url);
(2)<%response.setstatus(httpservletresponse.sc_moved_premanently);
string nowloc="/newpath/index.htm";
response.setheader("location",newloc);%>
(3)<jsp:forward page="/newpage.jsp"/>
注意上法只能在任何輸出還沒有發送到客戶端之前使用這種方法
*禁用緩存
<%response.setheader("cache-control","no-store");
response.setdateheader("expires",0);%>
1.4 session
*存活時間
<%session.setmaxinactiveinterval(300);%>
*注銷
session.invalidate();
1.5 exception
*在jsp頁面中處理servlet的錯誤
protected void senderrorredirect(httpservletrequest request,
httpservletresponse response,string errorpageurl,throwable e)
throws servletexception,ioexception{
request.setattibute("javax.servlet.jsp.jspexception",e);
getservletconfig().getservletcontext();
getrequestdispatcher(errorpageurl).forward(request,response);
}
public void dopost(httpservletrequest request,httpservletresponse response){
try{
//
}
catch(exception e){try{
senderrorredirect(request,response,"/jsp/errpage.jsp",e);
}catch(exception e){e.printstacktrace();}
}
}
*在jsp頁面中輸出錯誤的stacktrace
(1)
<%@ page iserrorpage="true%>
<%
out.println("<pre>");
printwriter pw=response.getwriter();
exception.printstacktrace(pw);
out.println("</pre>");
%>
(2)
<%@ page iserrorpage="true%>
<pre>
<%
exception.printstacktrace(new printwriter(out));
%>
</pre>
1.6 cookie
*設置cookie
<%
cookie mycookie=new cookie("aname","avalue");
response.addcookie(mycookie);
//mycookie.setmaxage(time);
%>
。