import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet { @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String username = req.getParameter("username");
if(username != null) {
username = new String(username.getBytes("ISO-8859-1"), "GB2312");
}
if(username == null) {
resp.sendError(resp.SC_FORBIDDEN);
return;
}
resp.setContentType("text/html;charset=GB2312");
PrintWriter out = resp.getWriter();
out.println("<html><head><title>HelloServlet</title></head>");
out.println("<body>");
out.println("你好: " + username);
out.println("</body></html>");
System.out.println("before close():" + resp.isCommitted());
out.close();
System.out.println("after close():" + resp.isCommitted());
}
}此程序该如何改进,才能在页面中正确显示中文 意思就是说在IE地址栏上输入:http://127.0.0.1:8080/my/HelloServlet?username=小王显示:你好: ??
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet { @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String username = req.getParameter("username");
if(username != null) {
username = new String(username.getBytes("ISO-8859-1"), "GB2312");
}
if(username == null) {
resp.sendError(resp.SC_FORBIDDEN);
return;
}
resp.setContentType("text/html;charset=GB2312");
PrintWriter out = resp.getWriter();
out.println("<html><head><title>HelloServlet</title></head>");
out.println("<body>");
out.println("你好: " + username);
out.println("</body></html>");
System.out.println("before close():" + resp.isCommitted());
out.close();
System.out.println("after close():" + resp.isCommitted());
}
}此程序该如何改进,才能在页面中正确显示中文 意思就是说在IE地址栏上输入:http://127.0.0.1:8080/my/HelloServlet?username=小王显示:你好: ??
解决方案 »
- java 乱码
- 高手指教:jsp中出现The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs异常
- TOMCAT localhost目录xml文件 帮帮忙!急!郁闷中……
- jsp发送邮件的问题?
- 请问我使用<jsp:plugin>标签的时候老是报错,请问怎么解决?
- 听说java编程到了高级部分是躲不开C++的!是这回事吗?
- 100分询问JSP做web形式的个人理财系统,方便还是难。
- 请问xfire 服务端如何在返回给客户端的报文上增加soapheader信息
- <%@ %>标签内无法取得变量值?...在线等.回答即结贴
- 初学jsp,遇到问题很困惑,希望高手帮帮小弟。
- 想要个功能貌似是JSP 求助各位大虾了
- 自学jsp,遇到问题,请赐教!
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" maxPostSize="2097152kb" UTIEncoding="utf-8"/>
req.setCharacterEncoding("GBK");
resp.setCharacterEncoding("GBK");把这三句加到你的doGet方法前面,并注释掉你自己写的转码句段看看。doGet方法的转码不是你那样写的,很复杂。
Set names = map.keySet();
Iterator it = names.iterator();
while(it.hasNext()){
Object o = it.next();//获得一个参数所对应的所有值
if( o instanceof String []){
String[] values = (String[])o;
for(int i = 0;i<values.length;i++){
//更正参数值的编码
values[i] = new String(values[i].getBytes(encording),decording);
}
}
}
doGet方式的转码,应该有bug,但是我这边可以用。