模糊查询中输入通配符的问题:
比如说在搜索框中输入'%'、'_'、'/'时会出错,因为这些特殊符号在sql语句查询的时候是有他特定的意义的,所有这里要对前台传过来的keyword搜索内容进行排除通配符处理,我是在工具类中写了一个方法代码如下:
/** * 根据搜索特殊字符串 * @param id * @return 取不到返回null */ public static String specialStr(String str){ Integer index=str.indexOf("%"); Integer index1=str.indexOf("_"); Integer index2=str.indexOf("\\"); StringBuffer stringBuffer = new StringBuffer(str); if(index!=-1) { stringBuffer.insert(index, "\\"); } if(index1!=-1) { stringBuffer.insert(index1, "\\"); } if(index2!=-1) { stringBuffer.insert(index2, "\\"); } return stringBuffer.toString(); }
然后在controller层导入该工具类,使用specialStr方法就ok了,代码如下:
String keyword = request.getParameter("keyword"); String keyword1 = ""; if (!"".equals(keyword) && keyword != null) { keyword1 = CommonUtils.specialStr(request.getParameter("keyword"));// 排除%等通配符
}最后将keyword1作为搜索内容带到数据库中查询就行了。