Сервлет: Обработка многих необязательных параметров - PullRequest
4 голосов
/ 14 июня 2011

Просто интересно, есть ли более элегантный или стандартный способ обработки необязательных параметров или нужно ли проверять, все ли они равны нулю. У меня есть 10+ необязательных параметров, так что это несколько уродливо.

В идеале я бы хотел что-то вроде команды bash: getopts.

public class MapImageServlet extends HttpServlet {
    ... constructor and other methods ...
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // OPTIONAL PARAMETERS
        if(request.getParameter("boarderSize") != null){
            double boarderSize = Double.valueOf(request.getParameter("boarderSize");
        }

        if(request.getParameter("boarderThickness") != null){
            double boarderThickness = Double.valueOf(request.getParameter("boarderThickness");
        }

        if(request.getParameter("boarderColor") != null){
            double boarderColor = Double.valueOf(request.getParameter("boarderColor");
        }
        ... do stuff with the parameters ...
    }
    ... other methods ...
}

Ответы [ 4 ]

2 голосов
/ 14 июня 2011

Напишите такую ​​утилиту, как это

public class MapImageServlet extends HttpServlet {
//... constructor and other methods ...
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    // OPTIONAL PARAMETERS
     boarderSize = ParamUtil.getDoubleValue(request,"boarderSize", defaultValue);

     boarderThickness = ParamUtil.getDoubleValue(request, "boarderThickness", defaultValue);

     boarderColor = ParamUtil.getDoubleValue(request,"boarderColor" , defaultValue);
     //... do stuff with the parameters ...
}

}
public class ParamUtil
{
public static double getDoubleValue(ServletRequest request, String paramName, double defaultValue)
{
     if(request.getParameter(paramName) != null){
        return Double.valueOf(request.getParameter(paramName));
    } else{
        return defaultValue;
    }
}
}
2 голосов
/ 14 июня 2011

Разве вы не ищете: ServletRequest # getParameterMap ?

0 голосов
/ 14 июня 2011

Если вы разрабатываете это с нуля, я предлагаю вам использовать такую ​​среду, как Spring MVC или Struts.Эти структуры захватывают входные данные и предоставляют вам готовый к использованию bean-компонент со всеми данными формы.

0 голосов
/ 14 июня 2011

Обычно я использовал Apache beanutils для извлечения информации из карты параметров запроса. BeanUtils предоставляет приятный интерфейс, который скрывает всю эту информацию от вас ...

MyJavaBean mjb = new MyJavaBean();
BeanUtils.copyProperties(mjb, request.getParameterMap());

.... 
// do stuff with mjb properties
logger.debug(mjb.getBorderThickness());
logger.debug(mjb.getBorderSize());
// etc

Немного дополнительной работы по настройке javabean, но простой в использовании в будущем.

...