03 HttpServletRequest/Response获取参数

Paste_Image.png
    <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();

Paste_Image.png

POST:request.getInputStream();

Paste_Image.png

获取参数通用方法:

request.getParameter(name) : 根据参数名获取参数值(获取一个参数值)
request.getParameterValues(name): 根据参数名获取参数值(获取多个参数值)
request.getParameterNames() 获取所有参数名称
request.getParameterMap(): 获取所有参数

代码示例:

Paste_Image.png

有了通用的方法,还有没有必要单独使用GET POST的方法呢?
很有必要,因为通用的方法只能获取普通的参数,如果传上来的数据是json 或者是上传的文件,那么这些通用方法就获取不到这些内容了

编码的问题:
我们在传递的参数如果有中文,那么浏览器会把相应中文编码为16进度数据然后再传递出去;

Paste_Image.png

这其实用了URLEncoder类的方法来做的编码;

Paste_Image.png

那既然知道了是使用了utf-8编码来做了编码,是不是获取到参数后使用utf-8编码来解码就可以得到相应的中文呢? 来试试吧!!!

Paste_Image.png

可想而知,这中间又做了什么鬼的转换......(原来这里被tomcat容器再用iso-8859-1做了一次编码)

不想再说什么了,心好累,直接上法宝吧;

  1. 如果get提交的参数中有中文,那么
name = new String(name.getBytes("iso8859-1"),"utf-8");//先用iso8859-1编码,再用utf-8解码
  1. 如果post提交的参数中有中文,那么在获取该参数前使用
request.setCharacterEncoding("utf-8");
Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,993评论 19 139
  • 编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换...
    x360阅读 2,515评论 1 20
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,779评论 18 399
  • 最近一个项目,测试时采用的Windows下的Tomcat服务器,上传中文文件正常;部署时用到了Linux服务器,上...
    Jackeroo阅读 4,469评论 1 3
  • 本文包括:1、Filter简介2、Filter是如何实现拦截的?3、Filter开发入门4、Filter的生命周期...
    廖少少阅读 7,361评论 3 56