美文网首页
Servlet请求方式之Post

Servlet请求方式之Post

作者: Mon7ey | 来源:发表于2017-11-13 14:05 被阅读16次

    html表单代码

    <form action="/FileReadWrite/SaveContactServlet" method="post">
    用户名: <input type="text" name="name"/>

    密 码: <input type="password" name="password"/>

    性 别: <input type="radio" name="gender" value="男">
    <input type="radio" name="gender" value="女">

    籍 贯:
    <select name="jiguan">
    <option value="sh">上海</option>
    <option value="hn">河南</option>
    <option value="bj">北京</option>
    </select>

    爱 好:
    <input type="checkbox" name="hobby" value="lq"/>篮球
    <input type="checkbox" name="hobby" value="zq"/>足球
    <input type="checkbox" name="hobby" value="ymq"/>羽毛球

    个人简介:
    <textarea rows="5" cols="10" name="info"></textarea>


    <input type="hidden" name="id" value="001"/>
    <input type="submit" value="提交"/>
    </form>

    获取请求行

    System.out.println("请求方式 : " + request.getMethod());
    System.out.println("获取URI : " + request.getRequestURI());
    System.out.println("获取URL : " + request.getRequestURL());

    获取请求头

    // 获取单个请求头
    String headName = reuqest.getHeader("请求头名称");
    // 获所有请求头的名称
    Enumeration<E> enums = request.getHeaderNames();

        //  获取所以请求头代码示例
        Enumeration<String> enmus = request.getHeaderNames();
        while (enmus.hasMoreElements()) {
            String headName = (String) enmus.nextElement();
            String headValue = request.getHeader(headName);
            System.err.println(headName + " : " + headValue);
        }
    

    获取请求的实体内容

    // 通过流的方式获取实体内容(请求参数)

    InputStream in = request.getInputStream();
        byte[] buf = new byte[1024];
        int len = 0;
        while((len = in.read(buf)) != -1){
            // 将读到的内容放入String
            String string = new String(buf,0,len);
            System.out.println(string);
    } 
    

    公共获取参数的方法

    Get和Post方法都可以使用
    request.getParameterValue("name"); // 根据参数名获取参数值(注意:只能获取一个值的参数)
    request.getParameterValues("name"); // 根据参数名获取参数值(可以获取多个值的参数)
    request.getParameterNames()

    Enumeration<String> enmus = request.getParameterNames();
        while (enmus.hasMoreElements()) {
            String name = (String) enmus.nextElement();
            // request.getParameter("name")这个方法只能获取一个值的参数,用于多选框表单时会遗漏数据
            // 若要获取多个值时可以使用request.getParameterValues("name"); 这个方法会返回一个String[]
            if ("hobby".equals(name)) {
                System.out.print(name + " :");
                String[] hobbyValues = request.getParameterValues(name);
                for (String string : hobbyValues) {
                    System.out.print(string + ",");
                }
                System.out.println();
            } else {
                String value = request.getParameter(name);
                System.out.println(name + " : " + value);
            }
    
     }  
    

    编码问题

    修改Post方式参数编码:
    request.setCharacterEncoding("uft-8");
    修改Get方式参数编码:
    String name = new String(name.getBytes("iso-8859-1"),"utf-8");

    Servlet的生命周期

    构造方法:
    Servlet对象创建时调用,默认情况下,第一次访问Servlet对象时调用,并只调用1次
    
    init方法(有参数)
    Servlet创建完成后调用,且只调用1次
    
    service方法:
    Servlet提供服务的方法,每次发出请求时调用
            注意: request对象 ,  response对象
    
    destroy方法:
    tomcat服务器停止或web应用重新部署,servlet对象销毁,destroy方法被调用
    

    相关文章

      网友评论

          本文标题:Servlet请求方式之Post

          本文链接:https://www.haomeiwen.com/subject/uyybmxtx.html