Post提交表单信息

  由于GET方式提交表单所提交的内容会显示在浏览器中,并且URL总长度不能超过255个字符,因此提交敏感信息或者提交过长的内容需要使用Post方式。

  把HTML中FORM的method属性设置为POST,浏览器即以POST形式提交内容。

  同GET方式一样,Servlet也可以通过HttpServletRequest对象的getParameter(String param)来获取param对应的参数值。从下面代码11~16行可以看出,getParameter()只能接收String对象,所以对age这样的Int变量需要做转换。

  下面主要贴了一下doPost方法中的代码。

  

 1 public void doPost(HttpServletRequest request, HttpServletResponse response)
 2             throws ServletException, IOException {
 3         request.setCharacterEncoding("UTF-8");
 4         response.setCharacterEncoding("UTF-8");
 5         response.setContentType("text/html");
 6         
 7         String name = request.getParameter("name");
 8         String password = request.getParameter("password");
 9         String passwordConfirm = request.getParameter("passwordConfirm");
10         String sex = request.getParameter("sex");
11         Integer age = 0;
12         try{  
13             age = Integer.parseInt(request.getParameter("age"));
14         }catch(Exception e){
15             
16         }
17         String[] interesting = request.getParameterValues("interesting");
18         String area = request.getParameter("area");
19         String btn = request.getParameter("btn");
20         
21         PrintWriter out = response.getWriter();
22         out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
23         out.println("<HTML>");
24         out.println("<HEAD><TITLE>感谢您提交信息</TITLE>");
25         out.println("<fieldset style='width:90%'><legend>填写用户信息</legend><br/>");
26 
27         out.println("        <div class='line'>");
28         out.println("            <div align='left' class='leftDiv'>您的姓名:</div>");
29         out.println("            <div align='left' class='rightDiv'>" + name + "</div>");
30         out.println("        </div>");
31         out.println("        <div class='line'>");
32         out.println("            <div align='left' class='leftDiv'>您的性别:</div>");
33         out.println("            <div align='left' class='rightDiv'>" + sex + "</div>");
34         out.println("        </div>");
35         out.println("  </BODY>");
36         out.println("</HTML>");
37         out.flush();
38         out.close();
39     }

  效果图显示如下:

  

  

  但是在跑的时候我遇到了一个问题,我开始把HTML文件的FORM中的ACTION属性写错了,应该是/servlet/servlet/PostServlet,我把它写成了/servlet/servlet/PostServlet.java,于是遇到了HTTP404的错误,发现之后改了发现还是不行,我觉得应该是之前已经把对应关系写到配置文件里面去了,但是配置文件在哪里呢?看了一下web.xml里面也只有关于servlet的配置信息啊,最后我是新建了一个HTML文件来解决的,但是这个问题依然很困扰我。

posted on 2011-07-18 16:04  clara_babybear  阅读(9140)  评论(0编辑  收藏  举报