美文网首页
servlet 1.3 Http的Get、Post请求及参数使用

servlet 1.3 Http的Get、Post请求及参数使用

作者: 长脖子树 | 来源:发表于2017-05-29 10:31 被阅读0次

get、post区别

1、post有请求体
2、get请求意味着获取消息,不改变服务器上的东西
而post请求意味着发送需要处理的数据,去改变服务器上的一些东西
3、可以多次发起get请求,而不对服务器有影响,是等幂请求;
但post不同,要避免表单的重复提交,是非等幂请求
4、post请求需要表单,在<form> 标签中使用method属性指定http 方法为post,使用action 属性指定表单提交的地址;而get除了这种方法之外,还可以直接使用超链接的方式。

使用参数

1、当输入的参数为1个值时,使用request.getParameter
例如:

String name = request.getParameter("username");

2、多选框,输入多个值,使用 getParameterValues

String[] hobbies = request.getParameterValues("hobby");

        PrintWriter out  = response.getWriter();
        for(String s:hobbies){
            out.println(s.toString());
        }

3、还可以使用getParameterNames方法

Enumeration<String> paras = request.getParameterNames();
        PrintWriter out  = response.getWriter();

        while(paras.hasMoreElements()){
            String paraname = paras.nextElement();
  out.println(paraname+":"+request.getParameter(paraname));
        }

4、获取所有请求的参数名称和值,放到一个map对象中

        PrintWriter out  = response.getWriter();
        Map<String, String[]> mapParas = request.getParameterMap();
        for(Map.Entry<String, String[]> entry :mapParas.entrySet()){
             out.println(entry.getKey()+":"+entry.getValue()[0]);
        }

提示map遍历:

Map<String, String[]> mapParas = new HashMap<String, String[]>();
        mapParas.put("xx",new String[]{"18","a"});
        mapParas.put("yy",new String[]{"19","b"});
    for(Map.Entry<String, String[]> entry :mapParas.entrySet()){
            int len = entry.getValue().length;
            System.out.print(entry.getKey()+":");
            for(int i=0;i<len;i++)
                System.out.print(entry.getValue()[i]+"  ");
            System.out.println();
        }

请求头和响应头

请求头常用方法:

        String browser = request.getHeader("User-Agent");
        int size = request.getIntHeader("Content-Length");
        int size2 = request.getContentLength();
        Enumeration<String> eHeaders = request.getHeaderNames();
        Enumeration<String> languages = request.getHeaders("Accept-Language");
        
        int remotePort = request.getRemotePort();//客户端的端口号
        int serverPort = request.getServerPort();//请求原来发送的那个服务器端口
        int localPort = request.getLocalPort();//最终分配的端口
    

响应头常用方法

        response.setHeader("ContentType", "text/html");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset = utf-8");
        
        response.setDateHeader("Expires", 0);//阻止浏览器缓存
        response.setIntHeader("Refresh", 5);//设置刷新,5秒后自动刷新
        response.setContentLength(1500);//设置请求体长度
        

doGet方法体内

        response.setCharacterEncoding("utf-8");
        response.setHeader("Content-type", "text/html  charset = utf-8");
        PrintWriter out = response.getWriter();

        out.println("<html><body>"
                +"其他html"+
                "</body></html>");  
        out.flush();
        out.close();
注意:

一般在调用输出流对象之前(getWriter()、getOutputStream()等)之前要先调用setContentType()方法

相关文章

网友评论

      本文标题:servlet 1.3 Http的Get、Post请求及参数使用

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