Servlet API3.0から導入された@WebServletを使用する。 以下の例では、URL”/hello”へGETリクエストが送信された場合、HelloServlet#doGetが起動される。
@WebServlet(urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
}
BeanValidationを用いてバリデーションを行う。
バリデーションを行うには、入れ物となるBeanを作成しアノテーションを付与する。
public class Member {
private String name;
@NotEmpty(message = "名前は必須項目です。")
@Size(max = 64, message = "名前は1〜64文字で入力してください。")
public String getNameName() {
return familyName;
}
}
バリデーションを実行するには、対象となるBeanインスタンスが必要である。 HttpServletRequestのパラメータからBeanを生成する。 ユーティリティクラスがあるので、それを利用する。
Member member = SimpleBeanUtil.create(req.getParameterMap(), Member.class);
やっていることは単なる値の移送である。
Beanのインスタンスが生成できたら、バリデーションを実行し、 そのインスタンスが妥当であるか確認する。
ValidationResult<Member> result = ValidationExecutor.validate(member);
if (result.isError()) {
// エラー時の処理...
}
ValidationExecutorは、BeanValidationを使用する際に必要となる定形処理を行う。 最終的にはjavax.validation.Validator実装を使用し、
- javax.validation.Validator#validate(T object, Class<?>… groups)
を呼び出してバリデーションを行っている。
内容は各自でソースコード確認すること。
JSP等にフォワードする場合は、SerlvetAPIを使用する。
req.getRequestDispatcher("/path/to/forward.jsp")
.forward(req, resp);