我公司某人才写的代码:
public static String getStr(String str,HttpServletRequest request){
String rel_Str="";
if(request.getParameter(str)!=null&&request.getParameter(str)!="")
rel_Str=request.getParameter(str);
else
{
// System.out.println(request.getAttribute(str));
if(request.getAttribute(str)!=null&&!request.getAttribute(str).equals(""))
rel_Str=(String) request.getAttribute(str).toString();
}
return rel_Str;
}
佩服佩服呀。
public static String getStr(String str,HttpServletRequest request){
String rel_Str="";
if(request.getParameter(str)!=null&&request.getParameter(str)!="")
rel_Str=request.getParameter(str);
else
{
// System.out.println(request.getAttribute(str));
if(request.getAttribute(str)!=null&&!request.getAttribute(str).equals(""))
rel_Str=(String) request.getAttribute(str).toString();
}
return rel_Str;
}
佩服佩服呀。
?? 这是什么 ?? 还用&& ?
rel_Str = (String) request.getAttribute(str).toString();除了这里有点冗余,没看出啥问题
!request.getAttribute(str).equals("")对字符串判断相等,一般用equals,但是对于""这种字符串,正常人是不会new一个空字符串出来的,而是会使用字面常量。而对于string的字面常量,是可以用==来进行判断的。因此,这里的判断大可用==,而不必非得用equals。tomcat的源码里面对getParameter的处理:public String getParameter(String name ) {
handleQueryParameters();
ArrayList<String> values = paramHashValues.get(name);
if (values != null) {
if(values.size() == 0) {
return "";//这里直接就返回了字面常量的空字符串
}
return values.get(0);
} else {
return null;
}
}
2:if(request.getAttribute(str)!=null&&!request.getAttribute(str).equals(""))
我觉的lz 的意思是这样的哈:
request.getParameter(str)返回字符串所以应用 “equals”
request.getAttribute(str)返回的是object所以应用“==”
UP
rel_Str=request.getParameter(str);
你确定str不要引号也可以: