截取url中的参数(高手支招、在线等待中。。)

dennis0705 2011-07-05 11:12:59
写一个接收URL的Action、需要截取参数中的值、应该怎么截取比较好()
比如http://10.10.10.10/order/el_Code.do?Mobile=13000000000&ID=13&Content=%BA%C3&Time=20110704164045
截取Content中的值(值是经过URLEncoder.encode("", "GBK");加密的)、

用request.getParameter("Content")获取的是"??",获取不到“%BA%C3”这个值

URLDecoder.decode(request.getParameter("Content"), "GBK")这样直接解码也是"??"

如果直接URLDecoder.decode("%BA%C3", "GBK");是可以解码的、

我该怎么截取Content中的值呢???


...全文
392 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
dennis0705 2011-07-06
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 yangting_lisa 的回复:]
引用 16 楼 dennis0705 的回复:

引用 13 楼 yangting_lisa 的回复:
request.getParameter("Content")前面加上这句代码request.setCharacterEncoding("GBK");
lz试试

试了不可以


那你试试下面的方法:
方法一:
String name=new String(request.……
[/Quote]

我倒、竟然是这样解决的、
String name=new String(request.getParameter("Content").getBytes( "iso8859-1"));
谢谢上面朋友的思路、我看过发送端的源码、是用URLEncoder.encode 、编码的、这里都不用解码直接就可以了
dennis0705 2011-07-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 dennis0705 的回复:]
引用 9 楼 zn85600301 的回复:
不管是在action 或者是servlet 你都可以从request里面取这些参数
还有URLEncoder.encode那只是转码因为你要地址栏传中文所以必须转码 而不是加密
String Content= request.getParameter("Content");
Content= java.net.URLDecoder.decode……
[/Quote]

应该是我描述不清楚、request可以获取到所有的参数的值、但是Content=%BA%C3的值是经过转码的、上面写加密是笔误、
request.getParameter("Content");获取到的值已经是“??”了。再解码还是“??”、哎、、、还是没找到问题的答案、等待中。。。。
dennis0705 2011-07-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zn85600301 的回复:]
不管是在action 或者是servlet 你都可以从request里面取这些参数
还有URLEncoder.encode那只是转码因为你要地址栏传中文所以必须转码 而不是加密
String Content= request.getParameter("Content");
Content= java.net.URLDecoder.decode(Content);
[/Quote]
应该是我描述清楚、request可以获取到所有的参数、但是Content=%BA%C3的值是经过转码的、上面写加密是笔误、
request.getParameter("Content");获取到的值已经是“??”了。再解码还是“??”、哎、、、还是没找到问题的答案、等待中。。。。
zn85600301 2011-07-05
  • 打赏
  • 举报
回复
不管是在action 或者是servlet 你都可以从request里面取这些参数
还有URLEncoder.encode那只是转码因为你要地址栏传中文所以必须转码 而不是加密
String Content= request.getParameter("Content");
Content= java.net.URLDecoder.decode(Content);
dennis0705 2011-07-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 e9876 的回复:]
decodeURIComponent
[/Quote]
在java类中怎么解决呢??
e9876 2011-07-05
  • 打赏
  • 举报
回复
decodeURIComponent
dennis0705 2011-07-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 qq413041153 的回复:]
你这个是乱码问题 不是获取方法的问题 你好好处理一下乱码把 最好加一个过滤器
[/Quote]

用request.getQueryString()所有的参数都可以获取到、要不我也不可能把后面的参数读取出来
KingViker 2011-07-05
  • 打赏
  • 举报
回复
你这个是乱码问题 不是获取方法的问题 你好好处理一下乱码把 最好加一个过滤器
dennis0705 2011-07-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fly_m 的回复:]
url发送本身有问题,请在发送时处理问题,不要采取这种处理方式,很麻烦。
比如,发送时设置setContentType("xxxx;encoding=GBK");
[/Quote]
我只负责接收、发送端我们控制不了
安特矮油 2011-07-05
  • 打赏
  • 举报
回复
这个是编码问题,你用过滤器或者拦截器统一设置编码方式了没有
kh994354738 2011-07-05
  • 打赏
  • 举报
回复
如果其他的参数可以获取到,那试着将Content改成其他名试试
Fly_m 2011-07-05
  • 打赏
  • 举报
回复
url发送本身有问题,请在发送时处理问题,不要采取这种处理方式,很麻烦。
比如,发送时设置setContentType("xxxx;encoding=GBK");
dennis0705 2011-07-05
  • 打赏
  • 举报
回复
谢谢上面的朋友们、上面的方法没解决、我用了一种比较笨的方法
http://10.10.10.10/order/el_Code.do?Mobile=13000000000&ID=13&Content=%BA%C3&Time=20110704164045
1、用request.getQueryString()获取所有的参数
2、用String的split方面根据“&”截取(参数顺序是固定的、个数不固定)得到一个数组
3、然后再用数组【i】.substring获取具体的参数的值
4、对值进行解码就得到想要的结果了

我再看看还能不能解决、明天再结贴
小笨熊 2011-07-05
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 dennis0705 的回复:]

引用 13 楼 yangting_lisa 的回复:
request.getParameter("Content")前面加上这句代码request.setCharacterEncoding("GBK");
lz试试

试了不可以
[/Quote]

那你试试下面的方法:
方法一:
String name=new String(request.getParameter("Content").getBytes( "GBK")); 其中GBK可以用UTF-8代替,这要看你的上层服务提供那种
方法二:(针对get和post方法)
form传送参数方式有2种
1.get方式的解决方法是:
在tomcat的conf/server.xml 中找到 <Connector port= "8080 " maxThreads= "150 " minSpareThreads= "25 " maxSpareThreads= "75 enableLookups= "false " redirectPort= "8443 " acceptCount= "100 " debug= "0 " connectionTimeout= "20000 " disableUploadTimeout= "true " URIEncoding= 'GBK ' />
最后那加入URIEncoding= 'GBK ' 就可以了。
2.加入过滤器能够解决的问题,针对post提交有效

在%Tomcat 5.0\webapps\servlets-examples\WEB-INF\classes\filters下找到
SetCharacterEncodingFilter.java ,之后在你的工程中建一个名filters的包,包里就放SetCharacterEncodingFilter.java,之后在Web.XML中,加入

<filter>
<filter-name> Set Character Encoding </filter-name>
<filter-class> com.cecp.filter.SetCharacterEncodingFilter </filter-class>
<init-param>
<param-name> encoding </param-name>
<param-value> GBK </param-value>
</init-param>
<init-param>
<param-name> ignore </param-name>
<param-value> true </param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name> Set Character Encoding </filter-name>
<url-pattern> /* </url-pattern>
</filter-mapping>
dennis0705 2011-07-05
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 yangting_lisa 的回复:]
request.getParameter("Content")前面加上这句代码request.setCharacterEncoding("GBK");
lz试试
[/Quote]
试了不可以
kongkong303 2011-07-05
  • 打赏
  • 举报
回复
String urle= (String)request.getAttribute("Content");

在调用 java.net.URLEncoder.encode(urle,"UTF-8"); 试试
zn85600301 2011-07-05
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 dennis0705 的回复:]

引用 10 楼 dennis0705 的回复:
引用 9 楼 zn85600301 的回复:
不管是在action 或者是servlet 你都可以从request里面取这些参数
还有URLEncoder.encode那只是转码因为你要地址栏传中文所以必须转码 而不是加密
String Content= request.getParameter("Content");
Content= ……
[/Quote]
对了 忘了说了 我的工程编码是UTF-8的 所以这样转码
而浏览器默认是GBK的 所以你要根据对方转码为什么格式而定
小笨熊 2011-07-05
  • 打赏
  • 举报
回复
request.getParameter("Content")前面加上这句代码request.setCharacterEncoding("GBK");
lz试试

无所依赖 2011-07-05
  • 打赏
  • 举报
回复
学习ing

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧