只是想知道是否有更优雅或标准的方法来处理可选参数,或者是否必须检查每个参数是否为空。我有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 ...
}
答案 0 :(得分:2)
您不是在寻找:ServletRequest#getParameterMap吗?
答案 1 :(得分:2)
写一个像这样的实用程序
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 :(得分:0)
通常,我使用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但稍微容易使用的一些额外工作。
答案 3 :(得分:0)
如果您从头开始开发这个,我建议您使用Spring MVC或Struts等框架。这些框架捕获输入并为您提供包含所有表单数据的即用型bean。