当前位置: 代码迷 >> Java Web开发 >> 求大神帮下,小弟我已经弄了一天了,关于href 传值给servlet
  详细解决方案

求大神帮下,小弟我已经弄了一天了,关于href 传值给servlet

热度:19   发布时间:2016-04-16 22:03:25.0
求大神帮下,我已经弄了一天了,关于href 传值给servlet
html部分代码:
<TABLE cellSpacing=1 cellPadding=0 width=145 border=0>
<TBODY>
<TR>
<TD align="middle" width="70"><a href="/Reservation system/show.do?username=皮蛋瘦肉粥"><img
src="images/buy_cn.gif" border="0"
longdesc="shoppingCart.html"></a></TD>
<TD align=middle width=70><A href="/Reservation system/DetailServlet?fName=皮蛋瘦肉粥" ><IMG
src="images/detail_cn.gif" border=0></A></TD>
</TR>
</TBODY>
</TABLE>
servlet部分代码:
public String execute(HttpServletRequest request,
HttpServletResponse reponse, Connection conn) {
HttpSession session = request.getSession();
ShopCart st = new ShopCart();

ResultSet rs = null;
PreparedStatement ps = null;
try {
String food = new String (request.getParameter("username").getBytes("GBK"),"gb2312");
System.out.println(food);
打印出来的food一值是乱码,求助,在线等。。。。。。我要崩溃了

------解决方案--------------------
设置页面字符编码为GBK,同时设置eclipse的工作空间字符集为GBK 应该就可以了

------解决方案--------------------
我的myeclipse自己设置默认是utf-8的,然后通过new String(method.getBytes("iso8859-1"),"utf-8")就可以把中文输出
你试试把你的HTML的编码跟myeclipse一致,然后通过new  String(method.getBytes("iso8859-1"),"gbk")试试!
------解决方案--------------------
 GET:没有方法可以设置它,因为参数在url中。所以使用request.getParameter()获取到的数据一定是错误的使用了iso-8859-1解码的。
可以再使用iso-8859-1把字符串转回到byte[],再重新使用正确的编码来解码即可。
  String s = request.getParameter("s");//使用iso-8859-1错误的解码了
  byte[] bytes = s.getBytes("iso-8859-1");//退回错误的解码,让字符串通过iso-8859-1返回到字节数据,即还原字节数据
  s = new String(bytes, "utf-8");//重新使用正确的utf-8来解码。
------解决方案--------------------
tomcat\7.0\conf\server.xml 设置端口处加上 URIEncoding="UTF-8"
 <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="UTF-8"/> 

------解决方案--------------------
引用:
tomcat\7.0\conf\server.xml 设置端口处加上 URIEncoding="UTF-8"
 <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="UTF-8"/> 

------解决方案--------------------
String food = new String (request.getParameter("username").getBytes("ISO8859-1"),"utf-8");
System.out.println(food);

------解决方案--------------------
引用:
 GET:没有方法可以设置它,因为参数在url中。所以使用request.getParameter()获取到的数据一定是错误的使用了iso-8859-1解码的。
可以再使用iso-8859-1把字符串转回到byte[],再重新使用正确的编码来解码即可。
  String s = request.getParameter("s");//使用iso-8859-1错误的解码了
  byte[] bytes = s.getBytes("iso-8859-1");//退回错误的解码,让字符串通过iso-8859-1返回到字节数据,即还原字节数据
  s = new String(bytes, "utf-8");//重新使用正确的utf-8来解码。

正解,顶
测试结果如下:

页面代码如下:
 <a href="TestServlet?name=皮蛋瘦肉粥">hhhhh</a>
  相关解决方案