加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 教程 > 正文

JSP内置对象编程窍门

发布时间:2023-06-03 13:31:05 所属栏目:教程 来源:
导读:JSP内置对象编程技巧

1.1 application

*在jsp中获得application对象

如:getservletcontext().setattribute("counter",new mycount.counter());

如:<jsp:usebean scope="application" id="counter"
JSP内置对象编程技巧
 
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);
 
%>
 

 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!