我在学Servlet的时候,先写了一个WebLogin.java的Servlet,处理doGet和doPost。代码如下:
public class WebLogin extends HttpServlet{
      public void doGet(HttpServletRequest request,HttpServletResponse response)
      throws ServletException,IOException{
            response.setContentType("text/html;charset=utf-8");
            PrintWriter out=response.getWriter();
            out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
            out.println("<HTML>");
            out.println("<HEAD>");
            out.println("<Title>Web Login</Title>");
            out.println("</HEAD>");
            out.println("<BODY>");
            out.println("<form method=\"post\" action=\"/myapp/WebLogin\">");
            out.println("用户名:<input type='text' name='username'><br>");
            out.println("密码:<input type='password' name='password'><br>");
            out.println("<input type='submit' name='submit' value='提交'>");
            out.println("<input type='reset' name='reset' value='重置'>");
            out.println("</form>");
            out.println("</BODY>");
            out.println("</HTML>");
            out.flush();
            out.close();
      }
      public void doPost(HttpServletRequest request,HttpServletResponse response)
      throws ServletException,IOException{
            response.setContentType("text/html;charset=utf-8");
            PrintWriter out=response.getWriter();
            out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
            out.println("<HTML>");
            out.println("<HEAD>");
            out.println("<Title>Web Login</Title>");
            out.println("</HEAD>");
            out.println("<BODY>");
            request.setCharacterEncoding("utf-8");
            out.println("input username:"+request.getParameter("username")+"<br>");
            out.println("input password:"+request.getParameter("password")+"<br>");
            out.println("</BODY>");
            out.println("</HTML>");
            out.flush();
            out.close();
      }
}
能处理中文的问题。我又重新写了个Servlet,Login.java,只处理doPost。同时把doGet的部分用login.htm取代了。代码如下:
Login.java :
public class Login extends HttpServlet{      public void doPost(HttpServletRequest request,HttpServletResponse response)
      throws ServletException,IOException{
            response.setContentType("text/html;charset=utf-8");
            PrintWriter out=response.getWriter();
            out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
            out.println("<HTML>");
            out.println("<HEAD>");
            out.println("<Title>Login</Title>");
            out.println("</HEAD>");
            out.println("<BODY>");
            request.setCharacterEncoding("utf-8");
            out.println("用户名:"+request.getParameter("username")+"<br>");
            out.println("密码:"+request.getParameter("password")+"<br>");
            out.println("</BODY>");
            out.println("</HTML>");
            out.flush();
            out.close();
      }
}
login.htm :
<HTML>
<HEAD>
<Title>Login</Title>
</HEAD><BODY><form method="post" action="/myapp/Login">
<table width=50% border="1">
 <tr>
   <td width=30%>用户名:</td>
   <td width=70%><input type='text' name='username'></td>
 </tr>
 <tr>
   <td width=30%>密码:</td>
   <td width=70%><input type='password' name='password'></td>
 </tr>
 <tr>
   <td ></td>
   <td ><input type='submit' name='submit' value='提交'>
        <input type='reset' name='reset' value='重置'>
   </td>
 </tr>
</table>
</form></BODY></HTML>
这时候就不能处理中文问题了,请问这是怎么回事?

解决方案 »

  1.   

    我要是把 htm 中该为:<form method="post" action="/myapp/WebLogin">
    想用WebLogin来处理,可是还是不能处理中文问题?是不是要在htm中做什么处理啊?
      

  2.   

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      

  3.   


    请问这句该加载htm的哪儿?
      

  4.   

    我把这句代码加到<head></head>之间后,这个HTML就不能正常显示中文了,不过,点击“提交”后,能正常显示中文
      

  5.   


    你接收传过来的参数的时候进行一下编码request.setCharactEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8"):
    试试方法名也许有点不对,呵呵,你.出来就是的了
      

  6.   

    终于搞出来了
    原来utf-8不行,全换为gb2312就可以了
    郁闷,utf-8怎么不行呢。
    可是我写的第一个WebLogin.java里全用的是utf-8啊,那里怎么就全行了呢
      

  7.   

    证明的文件自身的编码是 GBK的,也就是文件自己是按照 GBK保存的。
      

  8.   

    Chinese用GBK就够了,GB2312有些字没有java可以控制html代码都是utf-8编码的
    但是自己编辑的jsp就必须在utf-8环境下编辑
      

  9.   

    楼主把你的login.htm文件的编码格式改成和<meta http-equiv="Content-Type" content="text/html; charset=utf-8">一致UTF-8