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项目导入到服务器并运行...

  • 相关阅读:
    Android 操作系统架构开篇
    《构建之法》读后感
    《梦断代码》读后感
    学习日报
    学习日报
    记账本开发4
    记账本开发3
    学习日报
    学习日报
    记账本开发2
  • 原文地址:https://www.cnblogs.com/zxtceq/p/8533371.html
Copyright © 2011-2022 走看看