表单提交数据【通过post方式提交数据】
<form action="/zhongfucheng/Servlet111" method="post"> <table> <tr> <td>用户名</td> <td><input type="text" name="username"></td> </tr> <tr> <td>密码</td> <td><input type="password" name="password"></td> </tr> <tr> <td>性别</td> <td> <input type="radio" name="gender" value="男">男 <input type="radio" name="gender" value="女">女 </td> </tr> <tr> <td>爱好</td> <td> <input type="checkbox" name="hobbies" value="游泳">游泳 <input type="checkbox" name="hobbies" value="跑步">跑步 <input type="checkbox" name="hobbies" value="飞翔">飞翔 </td> </tr> <input type="hidden" name="aaa" value="my name is zhongfucheng"> <tr> <td>你的来自于哪里</td> <td> <select name="address"> <option value="广州">广州</option> <option value="深圳">深圳</option> <option value="北京">北京</option> </select> </td> </tr> <tr> <td>详细说明:</td> <td> <textarea cols="30" rows="2" name="textarea"></textarea> </td> </tr> <tr> <td><input type="submit" value="提交"></td> <td><input type="reset" value="重置"></td> </tr> </table>
在Servlet111中获取到提交的数据,代码如下
//设置request字符编码的格式 request.setCharacterEncoding("UTF-8"); //通过html的name属性,获取到值 String username = request.getParameter("username"); String password = request.getParameter("password"); String gender = request.getParameter("gender"); //复选框和下拉框有多个值,获取到多个值 String[] hobbies = request.getParameterValues("hobbies"); String[] address = request.getParameterValues("address"); //获取到文本域的值 String description = request.getParameter("textarea"); //得到隐藏域的值 String hiddenValue = request.getParameter("aaa"); ....各种System.out.println().......
向表单输入数据
Servlet111得到表单带过来的数据,最后的一个数据是隐藏域带过来的。
超链接方式提交数据
常见的get方式提交数据有:使用超链接,sendRedirect()
格式如下:
sendRedirect("servlet的地址?参数名="+参数值&"参数名="+参数值);
- 我们来使用一下,通过超链接将数据带给浏览器
<a href="/zhongfucheng/Servlet111?username=xxx">使用超链接将数据带给浏览器</a>
- 在Servlet111接收数据
//接收以username为参数名带过来的值 String username = request.getParameter("username"); System.out.println(username);
- 注意看浏览器左下角
服务器成功接收到浏览器发送过来的数据
并且,传输数据明文的出现在浏览器的地址栏上
- sendRedirect()和超链接类似,在这里就不赘述了
解决中文乱码问题
细心的朋友会发现,我在获取表单数据的时候,有这句代码request.setCharacterEncoding("UTF-8");
,如果没有这句代码,会发生什么事呢?我们看看。
- 再重新填写数据
- 在服务器查看提交过来的数据,所有的中文数据都乱码了
- 来这里我们来分析一下乱码的原因,在前面的博客中我已经介绍了,Tomcat服务器默认编码是ISO 8859-1,而浏览器使用的是UTF-8编码。浏览器的中文数据提交给服务器,Tomcat以ISO 8859-1编码对中文编码,当我在Servlet读取数据的时候,拿到的当然是乱码。而我设置request的编码为UTF-8,乱码就解决了。
- 接下来使用get方式传递中文数据,把表单的方式改成get即可