Sping 中包的方法WebUtils.getParametersStartingWith(request,String);
2015-02-02 14:35
309 查看
在工作中会遇到,页面参数变化提交参数到后台去查询,现在可以不用改后台代码 ,直接改前天的代码就可以实现 WebUtils.getParametersStasrtingWith(request,String)
举个例子,比如页面上有 表单提交:
<input type="text" name="search_name"value="aileen">
<input type="text" name="search_age"value="12">
<input type="text" name=”search_school"value="而我却">
HttpServletRequest request
//得到所有提交字段中search_的字段
filterMap = WebUtils.getParametersStartingWith(request, "search_");
for (String key : filterMap.keySet()){
//去掉一些特殊字符
if (StringUtils.isNotBlank(filterMap.get(key).toString())){
filterMap.put(key, filterMap.get(key).toString().trim().replace("@", "").replace("!", "").replace("?", "").replace("#", "").replace("'", "").replace("=", "").replace("\\", ""));
}
}
就可以得到页面传过来的参数数组,可以拼接sql 查询{还可以在这些数组的后面添加search_channelNo_like 这样的关键字去查询)
这个是Hibernate操作数据库 根据对象中的字段后缀 就可以去创建sql
/**
* 根据map条件创建Criterion[],辅助函数
* @param filterMap
* @return
*/
@SuppressWarnings("unchecked")
public Criterion[] getDefaultCriterion(Map<String, Object> filterMap) {
Object[] c = {};
String propertyType = null;
if (!MapUtils.isEmpty(filterMap)) {
for (Map.Entry<String, Object> entry : filterMap.entrySet()) {
try {
propertyType = BeanUtils.getPropertyType(this.entityClass, entry.getKey()).getName();
} catch (NoSuchFieldException e) {
logger.error("查询信息错误", e);
throw new HibernateException(e.getMessage());
}
if (entry.getValue() instanceof Map) {
Map<String, Object> map = (Map<String, Object>) entry.getValue();
if (map.containsKey("like")) {
if (propertyType.equals("java.lang.String")) {
c = ArrayUtils.add(c, Restrictions.like(entry.getKey(), (String) map.get("like"), MatchMode.ANYWHERE));
} else {
throw new HibernateException("the property type is error");
}
}
if (map.containsKey("in")) {
if (map.get("in") instanceof Object[]) {
c = ArrayUtils.add(c, Restrictions.in(entry.getKey(), (Object[]) map.get("in")));
} else {
throw new HibernateException("the property type is error");
}
}
if (map.containsKey("ge")) {
c = ArrayUtils.add(c, Restrictions.ge(entry.getKey(), map.get("ge")));
}
if (map.containsKey("le")) {
c = ArrayUtils.add(c, Restrictions.le(entry.getKey(), map.get("le")));
}
if (map.containsKey("gt")) {
c = ArrayUtils.add(c, Restrictions.gt(entry.getKey(), map.get("gt")));
}
if (map.containsKey("lt")) {
c = ArrayUtils.add(c, Restrictions.lt(entry.getKey(), map.get("lt")));
}
if (map.containsKey("between")) {
if (map.get("between") instanceof Object[]) {
Object[] s = (Object[]) map.get("between");
if (s[0] == null || s[1] == null) {
throw new HibernateException("between method must be two parameters");
}
c = ArrayUtils.add(c, Restrictions.between(entry.getKey(), s[0], s[1]));
} else {
throw new HibernateException("the property type is error");
}
}
} else {
c = ArrayUtils.add(c, Restrictions.eq(entry.getKey(), entry.getValue()));
}
}
}
Criterion[] result = new Criterion[c.length];
for (int i = 0; i < c.length; i++) {
result[i] = (Criterion) c[i];
}
return result;
}
举个例子,比如页面上有 表单提交:
<input type="text" name="search_name"value="aileen">
<input type="text" name="search_age"value="12">
<input type="text" name=”search_school"value="而我却">
HttpServletRequest request
//得到所有提交字段中search_的字段
filterMap = WebUtils.getParametersStartingWith(request, "search_");
for (String key : filterMap.keySet()){
//去掉一些特殊字符
if (StringUtils.isNotBlank(filterMap.get(key).toString())){
filterMap.put(key, filterMap.get(key).toString().trim().replace("@", "").replace("!", "").replace("?", "").replace("#", "").replace("'", "").replace("=", "").replace("\\", ""));
}
}
就可以得到页面传过来的参数数组,可以拼接sql 查询{还可以在这些数组的后面添加search_channelNo_like 这样的关键字去查询)
这个是Hibernate操作数据库 根据对象中的字段后缀 就可以去创建sql
/**
* 根据map条件创建Criterion[],辅助函数
* @param filterMap
* @return
*/
@SuppressWarnings("unchecked")
public Criterion[] getDefaultCriterion(Map<String, Object> filterMap) {
Object[] c = {};
String propertyType = null;
if (!MapUtils.isEmpty(filterMap)) {
for (Map.Entry<String, Object> entry : filterMap.entrySet()) {
try {
propertyType = BeanUtils.getPropertyType(this.entityClass, entry.getKey()).getName();
} catch (NoSuchFieldException e) {
logger.error("查询信息错误", e);
throw new HibernateException(e.getMessage());
}
if (entry.getValue() instanceof Map) {
Map<String, Object> map = (Map<String, Object>) entry.getValue();
if (map.containsKey("like")) {
if (propertyType.equals("java.lang.String")) {
c = ArrayUtils.add(c, Restrictions.like(entry.getKey(), (String) map.get("like"), MatchMode.ANYWHERE));
} else {
throw new HibernateException("the property type is error");
}
}
if (map.containsKey("in")) {
if (map.get("in") instanceof Object[]) {
c = ArrayUtils.add(c, Restrictions.in(entry.getKey(), (Object[]) map.get("in")));
} else {
throw new HibernateException("the property type is error");
}
}
if (map.containsKey("ge")) {
c = ArrayUtils.add(c, Restrictions.ge(entry.getKey(), map.get("ge")));
}
if (map.containsKey("le")) {
c = ArrayUtils.add(c, Restrictions.le(entry.getKey(), map.get("le")));
}
if (map.containsKey("gt")) {
c = ArrayUtils.add(c, Restrictions.gt(entry.getKey(), map.get("gt")));
}
if (map.containsKey("lt")) {
c = ArrayUtils.add(c, Restrictions.lt(entry.getKey(), map.get("lt")));
}
if (map.containsKey("between")) {
if (map.get("between") instanceof Object[]) {
Object[] s = (Object[]) map.get("between");
if (s[0] == null || s[1] == null) {
throw new HibernateException("between method must be two parameters");
}
c = ArrayUtils.add(c, Restrictions.between(entry.getKey(), s[0], s[1]));
} else {
throw new HibernateException("the property type is error");
}
}
} else {
c = ArrayUtils.add(c, Restrictions.eq(entry.getKey(), entry.getValue()));
}
}
}
Criterion[] result = new Criterion[c.length];
for (int i = 0; i < c.length; i++) {
result[i] = (Criterion) c[i];
}
return result;
}
相关文章推荐
- Spring包的方法WebUtils.getParametersStartingWith(request,String)
- Spring包的方法WebUtils.getParametersStartingWith(request,String)
- WebUtils.getParametersStartingWith
- 在servlet中GET请求可以通过HttpServletRequest的getRequestURL方法和getQueryString()得到完整的请求路径和请求所有参数列表,POST的需要getPa
- Assertion failure in -[AFHTTPRequestSerializer requestWithMethod:URLString:parameters:error:]
- 解决getQueryString乱码 代替request.getParameter("...")的方法
- Request.QueryString获取get方法提交的数据
- iOS开发Assertion failure in -[AFJSONRequestSerializer requestWithMethod:URLString:parameters:error:]
- 在servlet中GET请求可以通过HttpServletRequest的getRequestURL方法和getQueryString()得到完整的请求路径和请求所有参数列表,POST的需要getPa
- CS0120: 非静态的字段、方法或属性“System.Web.UI.Page.Request.get”要求对象引用的解决办法
- 有关GetPrivateProfileString的使用方法
- 使用 GetRequestStream 方法返回流
- Request.QueryString如果接到空值,则返空字符方法
- 下面的代码示例使用 BeginGetRequestStream 方法对流实例发出异步请求。
- 利用jsp中request对象getParameterValues(String name)方法同时删除多个checkbox的值
- 解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的方法
- In Websphere Application Server 6.1 , request.getQueryString() return null.
- Get number from string with regular expression in java
- request.getPathInfo() 方法的作用
- InternalServerError时 HttpWebRequest 的 GetResponse 方法处理策略