SJC-WC 関連のメモ [exam]
SJC-WC 関連の雑多なメモ。
web.xml の url-pattern 指定方法
- "/something"
- "*.do"
- "/*"
もし、servlet-mapping に *.do と XXX/* が定義されている場合は URL の左側からみてパターンに一致したものを採用するらしい。XXX/sample.do の場合、 XXX/* にマッチングする。
ステータス/エラー/リダイレクト
全て javax.servlet.http.HttpServletResponse のメソッド。- ステータス : setStatus(int)
- エラー : sendError(int)
- リダイレクト
- setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY) と setHeader("Location", String); の組み合わせ
- sendRedirect(String)
入出力関連
- 入力
- バイナリ : javax.servlet.ServletInputStream javax.servlet.ServletRequest.getInputStream()
- テキスト : java.io.BufferedReader javax.servlet.ServletRequest.getReader()
- 出力
- バイナリ : javax.servlet.ServletOutputStream javax.servlet.ServletResponse.getOutputStream()
- テキスト : java.io.PrintWriter javax.servlet.ServletResponse.getWriter()
URL 書き換えを行うメソッド
どちらも javax.servlet.http.HttpServletResponse のメソッド。- encodeURL
- encodeRedirectURL
タグハンドラでの出力
- クラシックタグハンドラ : javax.servlet.jsp.tagext.TagSupport.pageContext で PageContext を取得し PageContext.getOut() すると javax.servlet.jsp.JspWriter を取得できる。 getOut() 自体は PageContext の親クラスの javax.servlet.jsp.JspContext が提供
- シンプルタグハンドラ : javax.servlet.jsp.tagext.SimpleTagSupport.getJspContext() で JspContext を取得し getOut() すると javax.servlet.jsp.JspWriter を取得できる。
タグハンドラでの body の扱い
-
クラシックタグハンドラ(BodyTag) : javax.servlet.jsp.tagext.BodyTag.setBodyContent(BodyContent b)
- シンプルタグハンドラ : javax.servlet.jsp.tagext.SimpleTag.setJspBody(JspFragment jspBody)
アドレスやポートの取得
全て javax.servlet.ServletRequest のメソッド。- サーバのホスト名 : getServerName()
- サーバのポート : getServerPort()
- クライアントのドメイン名 : getRemoteHost()
- クライアントのアドレス : getRemoteAddr()
coockie 関連
- HttpServletResponse.addCookie(Cookie cookie)
- Cookie.setMaxAge(sec)
- Cookie[] HttpServletRequest.getCookies()
Enumeration / String[] を返すもの
- Enumeration javax.servlet.ServletRequest.getParameterNames()
- Enumeration javax.servlet.http.HttpServletRequest.getHeaderNames()
- Enumeration javax.servlet.http.HttpServletRequest.getHeaders(String)
- String[] javax.servlet.ServletRequest.getParameterValues(name)
その他
- session 関係は encodeXXX 以外は request
- EVAL_BODY_BUFFERED は BodyTag