Edited at

Java Servletでリクエストパラメータの存在確認

More than 3 years have passed since last update.

Servletのリクエストパラメータの存在確認のメモです。

指定したキーのパラメータが存在しなければエラーを返す、というFWを使えば用意されてそうな機能を実現するスニペットです。

keysのキーが存在しなければretにエラーメッセージを返します。

Java1.5以上で動作です。

詳しく知らないのですが、

Java8だともっと簡単できるんじゃないかとか思っています。

String [] keys = {"u","email"};

String ret = checkKeys(request,keys);

リクエストの内容をまわして存在しないキーをみつける処理

    /**

* キー一覧を渡して存在しないキーがあればListにいれてかえす。
* @param req
* @param keys
* @return
*/

public static List<String> getNotExistKeys(HttpServletRequest req,String keys[]){

List<String> notExistKeys = new ArrayList<String>();
boolean notExit;
for(int i=0;i<keys.length;i++){
notExit = true;

Enumeration<String> parameterNames = req.getParameterNames();
while (parameterNames.hasMoreElements()) {

String paramName = parameterNames.nextElement();
if (keys[i].equals(paramName)){
String paramValues = req.getParameter(paramName);
if (!paramValues.isEmpty()) notExit = false;
}
}
if (notExit == true) notExistKeys.add(keys[i]);
}

return notExistKeys;
}

存在しないキーがあればメッセージをかえす。

    /**

* checkKeys
* @param req
* @param keys
* @return
*/

public static String checkKeys(HttpServletRequest req,String keys[]){
List<String> emptyParams = getNotExistKeys(req,keys);
String callback = req.getParameter("callback");

if (emptyParams.size()>0){
return emptyParams.toString()+"が存在しません。";
}else{
return "OK";
}

}