さぁぶれっとを作ろう (5)
今度は webapps/servlets-examples/WEB-INF/classes/RequestInfoExample.java を Scala で書き直してみる。
import javax.servlet._ import javax.servlet.http._ class RequestInfo extends HttpServlet { override def doGet(req: HttpServletRequest, res: HttpServletResponse) { val title = "Request Information" val content = <html> <head><title>{title}</title></head> <body> <h1>{title}</h1> <dl> <dt>Method</dt><dd>{req.getMethod()}</dd> <dt>Request URI</dt><dd>{req.getRequestURI()}</dd> <dt>Protocol</dt><dd>{req.getProtocol()}</dd> <dt>PathInfo</dt><dd>{req.getPathInfo()}</dd> <dt>Query String</dt><dd>{req.getQueryString()}</dd> <dt>Remote Address</dt><dd>{req.getRemoteAddr()}</dd> </dl> </body> </html> res.setContentType("text/html; charset=utf-8") res.getWriter.print(content) } }
あとは HelloWorld と同じように web.xml を書いて、http://localhost:8080/sandbox/RequestInfo にブラウザでアクセスすれば、Tomcat へのリクエスト情報が確認できる。おけおけ。URI の後ろに ?hogehoge と付け足せば Query String が hogehoge となるし、/hogehoge と付け足せば、PathInfo が、
あれ 404 ?
あ、そーか、~/Sandbox/java/servlet/WEB-INF/classes/RequestInfo.class に対応するのは、http://localhost:8080/sandbox/RequestInfo であって、http://localhost:8080/sandbox/RequestInfo/hogehoge なんつー URI は知らん、ということね。もとの servlet-example はどーしてんのかなぁ、と見てみたら、単に web.xml の url-pattern にワイルドカードを使うだけみたい。
そんなわけで、web.xml はこうなる。前回までの servlet についても書いてあるんだけど省略。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>RequestInfo</servlet-name> <servlet-class>RequestInfo</servlet-class> </servlet> <servlet-mapping> <servlet-name>RequestInfo</servlet-name> <url-pattern>/RequestInfo/*</url-pattern> </servlet-mapping> </web-app>
つか、このパターンで /sandbox/RequestInfo もマップされるのね。