1.1 приложение
* Получите объект приложения в jsp, например: getServletContext().setAttribute("counter",new mycount.Counter());
Например: <jsp:useBeanscope="application" id="counter" class="mycounter.Counter"/>
*Метод обработки событий «При запуске приложения» и «При запуске сеанса» в jsp использует класс HttpSessionBindingListener.
Добавить сеанс:
session.putValue("bingdings.listener",new MyListener(getServletContext());
Определите класс MyListener:
импортировать javax.servlet.http.*;
импортировать javax.servlet.*;
публичный класс MyListener реализует HttpSessionBindingListener{
Контекст ServletContext;
public MyListener (контекст ServletContext) {
this.context=контекст;
}
public void valueBound (событие HttpSessionBindingEvent) {
System.out.println("valuebound: кто-то только что привязал моего слушателя к сеансу!");
}
public void valueUnbound (событие HttpSessionBindingEvent) {
System.out.println("valueunbound:кто-то только что отвязал мой слушатель!");
}
}
1.2 запрос
*Получите абсолютный URL-адрес работающего файла jsp/сервлета.
Stringf file=request.getRequestURL();
если (requet.getQueryString()! = null {
file+='?'+request.getqueryString();
}
Восстановленный URLURL=новый URL(request.getScheme(),request.getServerName(),request.getServerPort(),file);
out.println(reconstructedURL.toString());
*Получить URL-адрес, по которому клиент получает доступ к этой странице.
String callPage=request.getHeader("Referer");
*Получить реальный путь текущего скрипта в локальной файловой системе.
request.getRealPath(request.getServletPath());
*Определите одно из нескольких представлений
<input type=submit name="sub" value="up">
<input type=submit name="sub" value="down">
Используйте request.getParameter("sub"); в jsp, чтобы отличить
ответ 1.3.
*Три метода перенаправления веб-страницы
(1)response.sendRedirect(url);
(2)<%response.setStatus(HttpServletResponse.SC_MOVED_PREMANENTLY);
Строка nowloc="/newpath/index.htm";
response.setHeader("Местоположение",newloc);%>
(3)<jsp:forward page="/newpage.jsp"/>
Обратите внимание, что описанный выше метод можно использовать только до того, как какой-либо вывод будет отправлен клиенту.
*Отключить кеширование
<%response.setHeader("Cache-Control","no-store");
response.setDateHeader("Expires",0);%>
сессия 1.4
*время выживания
<%session.setMaxInactiveInterval(300);%>
*Выйти
исключение
session.invalidate();
*Обработка ошибок сервлетов на страницах JSP.
protected void sendErrorRedirect (запрос HttpServletRequest,
Ответ HttpServletResponse, строка errorPageURL, Throwable e)
выдает ServletException,IOException{
request.setAttibute("javax.servlet.jsp.jspException",e);
getServletConfig().getServletContext();
getRequestDispatcher(errorPageURL).forward(запрос,ответ);
}
public void doPost (запрос HttpServletRequest, ответ HttpServletResponse) {
пытаться{
//
}
catch (Исключение е) {попробуйте {
sendErrorRedirect(запрос,ответ,"/jsp/ErrPage.jsp",e);
}catch(Исключение е){e.printStackTrace();}
}
}
* Вывод стека ошибок на странице jsp.
(1)
<%@ страница isErrorPage="true%>
<%
out.println("<pre>");
printWriter pw=response.getWriter();
исключение.printStackTrace(pw);
out.println("</pre>");
%>
(2)
<%@ страница isErrorPage="true%>
<предварительно>
<%
исключение.printStackTrace(новый PrintWriter(out));
%>
</pre>
1.6 Файлы cookie
*Установить файлы cookie
<%
Файл cookie mycookie=новый файл cookie («aName», «aValue»);
ответ.addCookie(mycookie);
//mycookie.setMaxAge(время);
%>