谁来帮我看看 Filter过滤器的问题 我在Filter中得到了当前的提交的URL,我想在后面加一个参数、并且跳转,我试了很多方法都不可以。请名师指点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 HttpRequestWrapper 覆盖 getParameterNames() 这类的方法,多添加一个你的 参数进去。 写错了 HttpServletRequestWrapper . Servlet 标准库 中的,可以找个 源码看看 。 首先谢谢这个大哥啊,可是我去看了,HttpServletRequestWrapper 累得方法基本和HttpServletRequest的方法基本相同。没有覆盖参数的方法啊。谢谢大哥给提供一段完整的代码吧 要让他完全正常工作还需要覆盖很多方法并提供自定义类,还得防止被修改,因为 parameters 是只读的。package net.vicp.infoman.commons;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;public class RequestWrapper extends HttpServletRequestWrapper { private final Param[] params; public static class Param { private final String name; private final String[] values; public Param(String name, String[] values) { this.name = name; this.values = values; } public String encodeURL() { if (!isValid()) return new String(); StringBuffer pairs = new StringBuffer(); for (int i = 0; i < values.length; i++) { // if value contains '%' ,'?' or Chinese Characters , // please ESCAPE them first. if (values[i] != null && values[i].trim().length() > 0) pairs.append('?').append(name).append('=') .append(values[i]); } return pairs.toString(); } public boolean isValid() {// test if this entry is not empty or null. if (name == null || name.trim().length() == 0) return false; if (values == null || values.length == 0) return false; for (int i = 0; i < values.length; i++) { if (values[i] != null && values[i].trim().length() > 0) return true; } return false; } } public RequestWrapper(HttpServletRequest request, Param[] params) { super(request); this.params = params; } @Override public String getQueryString() { String url = super.getQueryString(); if (params == null || params.length == 0) return url; if (url == null) url = ""; StringBuffer q = new StringBuffer(); for (int i = 0; i < this.params.length; i++) { if (!params[i].isValid()) continue; q.append(params[i].encodeURL()); } if (url.indexOf('?') == -1) q.setCharAt(0, '?'); return url + q; } @SuppressWarnings("unchecked") @Override public String getParameter(String field) { Map<String, String> params = super.getParameterMap(); if (params.containsKey(field)) return params.get(field); return getInternalValue(field); } @SuppressWarnings("unchecked") @Override public String[] getParameterValues(String field) { Map<String, String[]> oem = super.getParameterMap(); if (oem.containsKey(field)) return (String[]) oem.get(field); return getInternalValues(field); } private String getInternalValue(String field) { if (params == null)// not exists. return null; for (int i = 0; i < params.length; i++) { if (field.equals(params[i].name)) { if (params[i].isValid()) return params[i].values[0]; // values exists. return ""; // exists ,but no values. } } return null; } private String[] getInternalValues(String field) { if (params == null) return null; for (int i = 0; i < params.length; i++) { if (field.equals(params[i].name)) return params[i].values; } return null; }} main方法的问题 关于println的输出问题.恳请高手解答,小菜跪求. 在哪可以找到Java中native方法的源码? Java sql调用后存储格式问题请高手帮忙看看 请问怎样在java中实现图片的自动对齐 请教各位朋友!谢谢!! 菜问题,拿分呀!!狂昏!关于Collection 一个简单的问题,望有人帮一下!!! 我想写一个Java applet,用什么开发工具较好? javadoc.jar和sources.jar是干什么用的啊新人求解[附图] 初学者的困惑 java中的疑惑-组件不显示的问题!
import javax.servlet.http.HttpServletRequestWrapper;public class RequestWrapper extends HttpServletRequestWrapper {
private final Param[] params; public static class Param {
private final String name; private final String[] values; public Param(String name, String[] values) {
this.name = name;
this.values = values;
} public String encodeURL() {
if (!isValid())
return new String(); StringBuffer pairs = new StringBuffer();
for (int i = 0; i < values.length; i++) {
// if value contains '%' ,'?' or Chinese Characters ,
// please ESCAPE them first.
if (values[i] != null && values[i].trim().length() > 0)
pairs.append('?').append(name).append('=')
.append(values[i]);
} return pairs.toString();
} public boolean isValid() {// test if this entry is not empty or null.
if (name == null || name.trim().length() == 0)
return false; if (values == null || values.length == 0)
return false; for (int i = 0; i < values.length; i++) {
if (values[i] != null && values[i].trim().length() > 0)
return true;
} return false;
} } public RequestWrapper(HttpServletRequest request, Param[] params) {
super(request);
this.params = params;
} @Override
public String getQueryString() {
String url = super.getQueryString(); if (params == null || params.length == 0)
return url; if (url == null)
url = ""; StringBuffer q = new StringBuffer(); for (int i = 0; i < this.params.length; i++) {
if (!params[i].isValid())
continue;
q.append(params[i].encodeURL());
} if (url.indexOf('?') == -1)
q.setCharAt(0, '?'); return url + q;
} @SuppressWarnings("unchecked")
@Override
public String getParameter(String field) {
Map<String, String> params = super.getParameterMap();
if (params.containsKey(field))
return params.get(field); return getInternalValue(field);
} @SuppressWarnings("unchecked")
@Override
public String[] getParameterValues(String field) {
Map<String, String[]> oem = super.getParameterMap();
if (oem.containsKey(field))
return (String[]) oem.get(field); return getInternalValues(field);
} private String getInternalValue(String field) {
if (params == null)// not exists.
return null; for (int i = 0; i < params.length; i++) {
if (field.equals(params[i].name)) {
if (params[i].isValid())
return params[i].values[0]; // values exists.
return ""; // exists ,but no values.
}
} return null;
} private String[] getInternalValues(String field) {
if (params == null)
return null; for (int i = 0; i < params.length; i++) {
if (field.equals(params[i].name))
return params[i].values;
} return null;
}}