1.1 アプリケーション
*次のような JSP でアプリケーション オブジェクトを取得します: getServletContext().setAttribute("counter",new mycount.Counter());
例: <jsp:useBeanscope="application" id="counter" class="mycounter.Counter"/>
※jspでのOn Application StartイベントとOn Session Startイベントの処理メソッドはHttpSessionBindingListenerクラスを使用します。
セッションを追加します:
session.putValue("bingdings.listener",new MyListener(getServletContext());
MyListener クラスを定義します。
インポート javax.servlet.http.*;
javax.servlet.* をインポートします。
public class MyListener は HttpSessionBindingListener{ を実装します
ServletContext コンテキスト。
public MyListener(ServletContext context){
this.context=コンテキスト;
}
public void valueBound(HttpSessionBindingEvent イベント){
System.out.println("valuebound:誰かが私のリスナーをセッションにバインドしました!");
}
public void valueUnbound(HttpSessionBindingEvent イベント){
System.out.println("valueunbound:誰かが私のリスナーのバインドを解除したところです!");
}
1.2
リクエスト
*実行中のjsp/サーブレットファイルの絶対URLアドレスを取得します。
Stringf file=request.getRequestURL();
if(requet.getQueryString()!=null{
ファイル+='?'+request.getqueryString();
}
URL再構築URL=新しいURL(request.getScheme(),request.getServerName(),request.getServerPort(),file);
out.println(reconstructedURL.toString());
*クライアントがこのページにアクセスする際に経由するURLを取得します
文字列 callPage=request.getHeader("リファラー");
*ローカル ファイル システム内の現在のスクリプトの実際のパスを取得します。
request.getRealPath(request.getServletPath());
※複数の応募の中から1つを決定
<input type=submit name="sub" value="up">
<input type=submit name="sub" value="down">
JSP で request.getParameter("sub") を使用して
1.3 の応答
を区別します。
* Web ページのリダイレクトの 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("キャッシュ制御","ストアなし");
response.setDateHeader("Expires",0);%>
1.4 セッション
*生存時間
<%session.setMaxInactiveInterval(300);%>
*ログアウト
session.invalidate();
1.5 例外
*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(例外 e){try{
sendErrorRedirect(request,response,"/jsp/ErrPage.jsp",e);
}catch(例外 e){e.printStackTrace();}
}
}
* JSPページにエラースタックトレースを出力
(1)
<%@ ページ isErrorPage="true%>
<%
out.println("<前>");
printWriter pw=response.getWriter();
例外.printStackTrace(pw);
out.println("</pre>");
%>
(2)
<%@ ページ isErrorPage="true%>
<前>
<%
Exception.printStackTrace(new PrintWriter(out));
%>
</pre>
1.6 クッキー
*クッキーを設定する
<%
Cookie mycookie=new Cookie("aName","aValue");
応答.addCookie(mycookie);
//mycookie.setMaxAge(time);
%>