<div class="myContainer">
<form action="/ServletStudy/HttpServlet" method="GET">
<div class="form-group">
<label for="exampleInputEmail1">用户名</label>
<input type="text" name="username" class="form-control" id="exampleInputEmail1" placeholder="Email">
</div>
<div class="form-group">
<label for="exampleInputPassword1">密码</label>
<input type="password" name="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
</div>
<!-- 复选框 -->
<br>你的性趣爱好:
<div class="checkbox">
<label>
<input type="checkbox" name="hobby" value="plane"> 打飞机
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="hobby" value="movie"> 看片
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="hobby" value="footer"> 洗脚
</label>
</div>
<!-- 单选框 -->
<br>你是同性恋吗?
<div class="radio">
<label>
<input type="radio" name="gay" value="yes">
是
</label>
</div>
<div class="radio disabled">
<label>
<input type="radio" name="gay" value="no" disabled>不是
</label>
</div>
<br><button type="submit" class="btn btn-default">提交</button>
</form>
</div>
获取参数的方式(返回字符串):
GET:request.getQueryString();
POST:request.getInputStream();
获取参数通用方法:
request.getParameter(name) : 根据参数名获取参数值(获取一个参数值)
request.getParameterValues(name): 根据参数名获取参数值(获取多个参数值)
request.getParameterNames() 获取所有参数名称
request.getParameterMap(): 获取所有参数
代码示例:
有了通用的方法,还有没有必要单独使用GET POST的方法呢?
很有必要,因为通用的方法只能获取普通的参数,如果传上来的数据是json 或者是上传的文件,那么这些通用方法就获取不到这些内容了
编码的问题:
我们在传递的参数如果有中文,那么浏览器会把相应中文编码为16进度数据然后再传递出去;
这其实用了URLEncoder类的方法来做的编码;
那既然知道了是使用了utf-8编码来做了编码,是不是获取到参数后使用utf-8编码来解码就可以得到相应的中文呢? 来试试吧!!!
可想而知,这中间又做了什么鬼的转换......(原来这里被tomcat容器再用iso-8859-1做了一次编码)
不想再说什么了,心好累,直接上法宝吧;
- 如果get提交的参数中有中文,那么
name = new String(name.getBytes("iso8859-1"),"utf-8");//先用iso8859-1编码,再用utf-8解码
- 如果post提交的参数中有中文,那么在获取该参数前使用
request.setCharacterEncoding("utf-8");