1.1 aplikasi
*Dapatkan objek aplikasi di jsp seperti: getServletContext().setAttribute("counter",new mycount.Counter());
Misalnya: <jsp:useBean scope="application" id="counter" class="mycounter.Counter"/>
*Metode penanganan event On Application Start dan On Session Start di jsp menggunakan kelas HttpSessionBindingListener.
Tambahkan sesi:
session.putValue("bingdings.listener",new MyListener(getServletContext());
Tentukan kelas MyListener:
impor javax.servlet.http.*;
import javax.servlet.*;
kelas publik MyListener mengimplementasikan HttpSessionBindingListener{
Konteks ServletContext;
publik MyListener(konteks ServletContext){
this.konteks=konteks;
}
public void valueBound(acara HttpSessionBindingEvent){
System.out.println("valuebound:seseorang baru saja mengikat pendengar saya ke suatu sesi!");
}
public void valueTidak Terikat(acara HttpSessionBindingEvent){
System.out.println("valueunbound:seseorang baru saja melepaskan ikatan pendengar saya!");
}
}
1.2 permintaan
*Dapatkan alamat URL absolut dari file jsp/servlet yang sedang berjalan
Stringf file=permintaan.getRequestURL();
if(requet.getQueryString()!=null{
file+='?'+request.getqueryString();
}
URL direkonstruksiURL=URL baru(request.getScheme(),request.getServerName(),request.getServerPort(),file);
out.println(reconstructedURL.toString());
*Dapatkan url yang digunakan klien untuk mengakses halaman ini
String callPage=request.getHeader("Referer");
*Dapatkan jalur sebenarnya dari skrip saat ini di sistem file lokal
permintaan.getRealPath(permintaan.getServletPath());
*Tentukan salah satu dari beberapa kiriman
<tipe input=kirim nama="sub" value="naik">
<tipe input=kirim nama="sub" value="turun">
Gunakan request.getParameter("sub"); di jsp untuk membedakan
respons 1.3
*Tiga metode pengalihan halaman web
(1)respons.sendRedirect(url);
(2)<%response.setStatus(HttpServletResponse.SC_MOVED_PREMANENTLY);
String sekarangloc="/newpath/index.htm";
respon.setHeader("Lokasi",lokasi baru);%>
(3)<jsp:halaman depan="/halaman baru.jsp"/>
Perhatikan bahwa metode di atas hanya dapat digunakan sebelum keluaran apa pun dikirim ke klien.
*Nonaktifkan cache
<%response.setHeader("Kontrol Cache","tidak ada penyimpanan");
respon.setDateHeader("Kedaluwarsa",0);%>
1,4 sesi
*waktu bertahan hidup
<%sesi.setMaxInactiveInterval(300);%>
*Keluar
sesi.invalidate();
1,5 pengecualian
*Menangani kesalahan Servlet di halaman jsp
dilindungi batal sendErrorRedirect(permintaan HttpServletRequest,
Respons HttpServletResponse, String errorPageURL, Dapat Dilempar e)
melempar ServletException,IOException{
request.setAttibute("javax.servlet.jsp.jspException",e);
getServletConfig().getServletContext();
getRequestDispatcher(errorPageURL).forward(permintaan,respons);
}
public void doPost(Permintaan HttpServletRequest, respons HttpServletResponse){
mencoba{
//
}
catch(Pengecualian e){coba{
sendErrorRedirect(permintaan,respons,"/jsp/ErrPage.jsp",e);
}menangkap(Pengecualian e){e.printStackTrace();}
}
}
* Output error stacktrace di halaman jsp
(1)
<%@ halaman isErrorPage="benar%>
<%
keluar.println("<pre>");
printWriter pw=response.getWriter();
pengecualian.printStackTrace(pw);
keluar.println("</pre>");
%>
(2)
<%@ halaman isErrorPage="benar%>
<pra>
<%
pengecualian.printStackTrace(PrintWriter baru(keluar));
%>
</pre>
1.6 Kue
*Setel cookie
<%
Cookie mycookie=Cookie baru("aName","aValue");
respon.addCookie(cookie saya);
//mycookie.setMaxAge(waktu);
%>