(p136) 入力チェックと値の変換
サーブレットに渡される入力パラメータは文字列である。
それでサーブレットよっては数値・日付等への型変換が必要になる。
また、正しい値が送られてきているかチェックをする必要がある。
ブラウザ(.jsp)から西暦で4桁の年を入力すると、干支を返すサーブレット(.java)
が紹介されている。
まずは、入力チェックのないプログラム。
eto.jsp
<%@page contentType="text/html; charset=Windows-31J"%>
<html>
<body>
<h2>干支計算</h2>
生まれた年を入力してください。
<form action="../input/EtoServlet">
西暦<input type="text" name="year">年
<input type="submit" value="計算">
</form>
</body>
</html>
EtoServlet.java
package chapter10;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.http.*;
public class EtoServlet extends HttpServlet {
final static String[] ETOS = new String[] { /* *1 */
"子(ね)","丑(うし)","寅(とら)",
"卯(う)","辰(たつ)","巳(み)",
"午(うま)","未(ひつじ)","申(さる)",
"酉(とり)","戌(いぬ)","亥(い)",
};
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException {
String yearStr = request.getParameter("year"); /* *2 */
int year = Integer.parseInt(yearStr); /* *3 */
int index = (year + 8) % 12; /* *4 */
String etoText = ETOS[index];
response.setContentType("text/plain; charset=Windows-31J");
PrintWriter out = response.getWriter();
out.println("あなたの干支:" + etoText);
}
}
/* *2 オブジェクト変数( request )が指し示すメモリ上のオブジェクトに格納
されている値を、オブジェクトが持つ getParameter()メソッドで取り出し、
それを String 型のオブジェクトとして改めてメモリ上に生成し、
オブジェクト変数(yearStr) で記憶させている。 */
/* *3 なぜ8を足しているのかわからない。定石なのだろうか? */
情報処理 再チャレンジ ブログ ホーム へ
サーブレットに渡される入力パラメータは文字列である。
それでサーブレットよっては数値・日付等への型変換が必要になる。
また、正しい値が送られてきているかチェックをする必要がある。
ブラウザ(.jsp)から西暦で4桁の年を入力すると、干支を返すサーブレット(.java)
が紹介されている。
まずは、入力チェックのないプログラム。
eto.jsp
<%@page contentType="text/html; charset=Windows-31J"%>
<html>
<body>
<h2>干支計算</h2>
生まれた年を入力してください。
<form action="../input/EtoServlet">
西暦<input type="text" name="year">年
<input type="submit" value="計算">
</form>
</body>
</html>
EtoServlet.java
package chapter10;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.http.*;
public class EtoServlet extends HttpServlet {
final static String[] ETOS = new String[] { /* *1 */
"子(ね)","丑(うし)","寅(とら)",
"卯(う)","辰(たつ)","巳(み)",
"午(うま)","未(ひつじ)","申(さる)",
"酉(とり)","戌(いぬ)","亥(い)",
};
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException {
String yearStr = request.getParameter("year"); /* *2 */
int year = Integer.parseInt(yearStr); /* *3 */
int index = (year + 8) % 12; /* *4 */
String etoText = ETOS[index];
response.setContentType("text/plain; charset=Windows-31J");
PrintWriter out = response.getWriter();
out.println("あなたの干支:" + etoText);
}
}
/* *1 String 型のオブジェクトの入れ物をメモリ上に確保し、そこに入る
オブジェクトを定数として管理する為の、ETOS[ ] 配列を宣言している。 */
オブジェクトを定数として管理する為の、ETOS[ ] 配列を宣言している。 */
/* *2 オブジェクト変数( request )が指し示すメモリ上のオブジェクトに格納
されている値を、オブジェクトが持つ getParameter()メソッドで取り出し、
それを String 型のオブジェクトとして改めてメモリ上に生成し、
オブジェクト変数(yearStr) で記憶させている。 */
/* *3 なぜ8を足しているのかわからない。定石なのだろうか? */
情報処理 再チャレンジ ブログ ホーム へ
0 件のコメント:
コメントを投稿