zoukankan      html  css  js  c++  java
  • Java-->服务器的响应(Servlet--doGet&doPost)

    --> Servelet: 用于接收请求(客户端,浏览器),做出响应的,服务器端的,java类

    --> ServletLogin -- Web项目服务器响应的Java实现

    复制代码
    package com.dragon.java.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.io.UnsupportedEncodingException;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Servlet implementation class ServletLogin
     */
    @WebServlet("/ServletLogin")
    public class ServletLogin extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            String user = parse(request.getParameter("user"));
            String pwd = parse(request.getParameter("pwd"));
            System.out.println(user + ":" + pwd);
    
            response.setContentType("text/html;charset=utf-8");
            PrintWriter writer = response.getWriter();
            writer.println(user + "登陆成功!");
            // 服务器会自动关流
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            request.setCharacterEncoding("utf-8"); // 只解决post 请求乱码问题
            doGet(request, response);
        }
    
        public String parse(String msg) throws UnsupportedEncodingException {
            return new String(msg.getBytes("iso8859-1"), "utf-8");
        }
    }
    复制代码

    1、doGet 方法:

    --> HttpURLConnectionUtil 工具类

    复制代码
    package com.dragon.java.urlbyget;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    public class HttpURLConnectionUtil {
        public static InputStream getInputStreamByGet(String url) {
            try {
                HttpURLConnection conn = (HttpURLConnection) new URL(url)
                        .openConnection();
                conn.setRequestMethod("GET");
                conn.setReadTimeout(10000);
                conn.setConnectTimeout(10000);
                // 用这个方法可以设置http的请求头
                // conn.addRequestProperty("Accept", "......");
    
                if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
                    // 获取编码
                    // String contentType = conn.getContentType();
                    // String string = contentType.split("=")[1];
    
                    InputStream inputStream = conn.getInputStream();
                    return inputStream;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
    复制代码

    --> Test 测试类

    复制代码
    package com.dragon.java.urlbyget;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    
    public class Test {
        public static void main(String[] args) {
            InputStream inputStreamByGet = HttpURLConnectionUtil
                    .getInputStreamByGet("http://www.baidu.com");
            try {
                BufferedReader br = new BufferedReader(new InputStreamReader(
                        inputStreamByGet, "gb2312"));
                String line = "";
                while ((line = br.readLine()) != null) {
                    System.out.println(line);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    复制代码

    ----------------------------------邪恶的分割线------------------------------------

    2、doPost 方法

    --> HttpURLConnectionUtil 工具类

    复制代码
    package com.dragon.java.urlbypost;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    public class HttpURLConnectionUtil {
        private static String charset;
    
        public static InputStream getInputStreamByPost(String url, String parms) {
            try {
                HttpURLConnection conn = (HttpURLConnection) new URL(url)
                        .openConnection();
                conn.setReadTimeout(5000);
                conn.setConnectTimeout(5000);
                conn.setRequestMethod("POST");
    
                conn.setDoOutput(true);
                OutputStream outputStream = conn.getOutputStream();
                outputStream.write(parms.getBytes());
                if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
                    String contentType = conn.getContentType();
                    charset = contentType.split("=")[1];
    
                    InputStream inputStream = conn.getInputStream();
                    return inputStream;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    
        public static String getCharset() {
            return charset;
        }
    }
    复制代码

    --> InputStreamUtil 流到String的转换类

    复制代码
    package com.dragon.java.urlbypost;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    
    public class InputStreamUtil {
    
        public static String inputStreamToString(InputStream is, String charset) {
            StringBuffer sb = new StringBuffer();
            try (BufferedReader br = new BufferedReader(new InputStreamReader(is,
                    charset));) {
                char[] buffer = new char[1024];
                int len = -1;
                while ((len = br.read(buffer)) != -1) {
                    sb.append(buffer, 0, len);
                }
                return sb.toString();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
    复制代码

    --> Test 测试类

    复制代码
    package com.dragon.java.urlbypost;
    
    import java.io.InputStream;
    
    public class Test {
        public static void main(String args[]) {

        // 需要对URL中的中文参数进行编码。
        String user = URLEncoder.encode("张三", "utf-8");
        String pwd = URLEncoder.encode("你好", "utf-8");
        InputStream inputStreamByPost = HttpURLConnectionUtil
            .getInputStreamByPost(
                "http://192.168.2.11:8080/08-23/ServletLogin", "user="
                    + user + "&pwd=" + pwd);

            System.out.println(InputStreamUtil.inputStreamToString(
                    inputStreamByPost, HttpURLConnectionUtil.getCharset()));
        }
    }
    复制代码

    ---> 注意先将Web项目导入到服务器并运行...

  • 相关阅读:
    centos7.6 安装与配置 MongoDB yum方式
    MongoDB 介绍
    centos 关闭selinux
    前端 HTML标签属性
    前端 HTML 标签嵌套规则
    前端 HTML 标签分类
    前端 HTML body标签相关内容 常用标签 表单标签 form里面的 input标签介绍
    前端 HTML body标签相关内容 常用标签 表单标签 form 表单控件分类
    前端 HTML form表单标签 select标签 option 下拉框
    POJ 1426
  • 原文地址:https://www.cnblogs.com/zxtceq/p/8533371.html
Copyright © 2011-2022 走看看