HTTPdoGet与HTTPdoPost

一、未添加数据库的GET和POST方法
1、serverlet服务器的搭建在前面的博客中已经想写描述,此处不再赘述。

2、serverlet代码:

package com.augtwleve;

import java.io.IOException;
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 MyserverletTestyuanchuang
 */
@WebServlet("/MyserverletTestyuanchuang")
public class MyserverletTestyuanchuang extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public MyserverletTestyuanchuang() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        username=Encoding.encoding(username);//编码转换

        String s="获得的用户名为:"+username+":"+password+"";
        System.out.println(s);  
        response.getWriter().append(s);

    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

这里写图片描述

3、HttpdoGet方法
首先是建立连接即 new url
再转换成 HttpURLConnection,此处注意导包问题,可能出错
然后设置连接超时与读超时,设置request方法为“GET”
再获得回应,答复
判断http状态来回复先读入,再在屏幕输出

package com.augtwleve;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.awt.event.ActionEvent;

public class Httpdoget extends JFrame {

    private JPanel contentPane;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Httpdoget frame = new Httpdoget();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public Httpdoget() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        JButton btnNewButton = new JButton("提交");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
            String urlString="http://localhost:8080/MyserviceTestyuanchuang/MyserverletTestyuanchuang?username=zhangsan&password=123456";
            try {
                URL url=new URL(urlString);
                HttpURLConnection connection=(HttpURLConnection) url.openConnection();
                connection.setConnectTimeout(30000);
                connection.setReadTimeout(30000);
                connection.setRequestMethod("GET");
                int code=connection.getResponseCode();
                if(code==connection.HTTP_OK){
                    InputStream is=connection.getInputStream();
                    BufferedReader br=new BufferedReader(new InputStreamReader(is));
                    String line=br.readLine();
                    while(line!=null){
                        System.out.println(line);
                        line=br.readLine();
                    }
                }
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            }
        });
        btnNewButton.setBounds(146, 101, 93, 23);
        contentPane.add(btnNewButton);
    }

}

这里写图片描述
4、HttpdoPost方法
首先是建立连接即 new url
再转换成 HttpURLConnection,此处注意导包问题,可能出错
然后设置连接超时与读超时,设置编码转换,
设置url输出为true,设置不适用缓冲(catche)
设置request方法为“POST”
执行输出语句,注意,此处必须先输出,将s字符串发给服务器,才能获得服务器的回应
再获得回应,答复
判断http状态来回复先读入,再在屏幕输出

package com.augtwleve;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;



import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.awt.event.ActionEvent;

public class Httpdopost extends JFrame {

    private JPanel contentPane;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Httpdopost frame = new Httpdopost();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public Httpdopost() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        JButton btnNewButton = new JButton("提交");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                String urlString="http://localhost:8080/MyserviceTestyuanchuang/MyserverletTestyuanchuang";
                URL url;
                try {
                    url = new URL(urlString);           
                    HttpURLConnection connection=(HttpURLConnection) url.openConnection();
                    connection.setConnectTimeout(30000);
                    connection.setReadTimeout(30000);

                    //为防止乱码进行编码转换
                    connection.setRequestProperty("Accept-Charset", "utf-8");
                    // 设置可以接受序列化的java对象
                    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

                    //URL连接可用于输入和/或输出。如果打算使用 URL 连接进行输出,则将 DoOutput 标志设置为 true;如果不打算使用,则设置为 false。默认值为 false。           
                    connection.setDoOutput(true);
                    connection.setUseCaches(false);

                    String s="username=zhangsan&password=123456";
                    connection.setRequestMethod("POST");

                    connection.getOutputStream().write(s.getBytes());//将字符串s发给服务器,有服务器的request接收


                    int code=connection.getResponseCode();//注意不是hashcode()
                    //注意是connection.HTTP_OK
                    if(code==connection.HTTP_OK){

                        InputStream is=connection.getInputStream();
                        BufferedReader br=new BufferedReader(new InputStreamReader(is));
                        String line=br.readLine();
                        while(line!=null){
                            System.out.println(line);
                            line=br.readLine();

                        }


                    }

                } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
        });
        btnNewButton.setBounds(114, 79, 93, 23);
        contentPane.add(btnNewButton);
    }

}

这里写图片描述
5、编码转换

package com.augtwleve;

import java.io.UnsupportedEncodingException;

public class Encoding {
    public static String encoding(String s){
        if(s==null){
            return null;
        }
        try {
            byte[] by=s.getBytes("ISO-8859-1");
            s=new String(by,"UTF-8");
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return s;
    }

}

二、加载数据库
1、serverlet代码

package com.augtwleve;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

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 MyserverletTestyuanchuang
 */
@WebServlet("/MyserverletTestyuanchuang")
public class MyserverletTestyuanchuang extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public MyserverletTestyuanchuang() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        username=Encoding.encoding(username);//编码转换
        Connection connection=Mysqlmanager.newInstance().getConnection();//注意导包
        String sql="selection * from user where user_name=? and passerword=?";
        String s1="";
        try {
            PreparedStatement prestate=connection.prepareStatement(sql);//注意导包
            prestate.setString(1, username);
            prestate.setString(2, password);        
            ResultSet set=prestate.executeQuery();
            set.last();
            int num=set.getRow();

            if(num==1){
                System.out.println("登录成功");
                s1="登录成功";
            }else{
                System.out.println("登录失败");
                s1="登录失败";
            }

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        String s="获得的用户名为:"+username+":"+password+"";
        response.setHeader("Content-type","text/html;charset=UTF-8");
        System.out.println(s);  
        response.getWriter().append(s);
        response.getWriter().append(s1);

    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

2、数据库代码

package com.augtwleve;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import com.sun.swing.internal.plaf.synth.resources.synth_zh_CN;

public class Mysqlmanager {
    private Connection connection;//私有化
    //get connection方法
    public Connection getConnection() {
        return connection;
    }
    //单例设计
    private static Mysqlmanager manager;
    public static synchronized Mysqlmanager newInstance(){
        if(manager==null){
            manager=new Mysqlmanager();
        }
        return manager;
    }
    //在构造器中进行初始化
    public Mysqlmanager(){
        //注意这是要记得导入mysql的jar包
        String driver="com.mysql.jdbc.Driver";
        String url="jdbc:mysql://localhost:3306/clazz";
        String user="root";
        String password="123456";
        try {
            Class.forName(driver);
            connection=DriverManager.getConnection(url, user, password);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }

}

3、注意加载数据库jar包时,jar包的位置
这里写图片描述

### 回答1: HttpServlet类是Java Servlet API中的一个类,它提供了处理HTTP请求的方法。其中,doGet()和doPost()是两个最常用的方法。 doGet()方法用于处理HTTP GET请求,它通常用于获取数据或者显示页面。当客户端发送一个HTTP GET请求时,Servlet容器会调用doGet()方法来处理请求。 doPost()方法用于处理HTTP POST请求,它通常用于提交数据或者执行一些操作。当客户端发送一个HTTP POST请求时,Servlet容器会调用doPost()方法来处理请求。 需要注意的是,doGet()和doPost()方法都需要重写,以实现自定义的处理逻辑。在重写这两个方法时,需要根据具体的业务需求来实现相应的功能。 ### 回答2: HttpServlet是Java Servlet API中的一个类,用于处理客户端的HTTP请求和响应。在HttpServlet中,doGet和doPost是两个最基本和经常被使用的方法。 doGet方法是处理HTTP的GET请求,即获取数据。这个方法通常被用来从服务器获取一些信息并返回给客户端。当Web浏览器请求一个网页时,就会发起一个GET请求,服务器则会根据这个请求返回相应的内容。使用doGet方法实现该功能非常简单。 doPost方法是处理HTTPPOST请求,即提交数据。这个方法通常被用来接受客户端提交的一些数据,并对这些数据进行处理并返回结果。当用户在Web页面上提交表单时,就会发起一个POST请求,服务器则会根据这个请求对表单中的数据进行处理。使用doPost方法实现该功能也是非常简单的。 在有些情况下,使用doGet和doPost是不够的。例如,当一个Web应用程序需要处理HTTP的PUT或DELETE请求时,就不能使用doGet和doPost方法了。这时,我们需要使用其他的方法完成对客户端的响应。 总的来说,doGet和doPost方法是Java Servlet API中最基本和常用的两个方法之一。它们的主要区别是doGet方法用于获取数据,而doPost方法用于提交数据。虽然在某些情况下,我们需要使用其他的方法完成特别的需求,但在大多数情况下,我们都可以使用doGet和doPost方法实现Web应用程序的主要功能。 ### 回答3: Servlet 是用来处理 Web 请求的 Java 程序。HTTPServlet 是 javax.servlet.http 包中的一个类,是 Servlet 的一个子类,它提供了基于 HTTP 请求的 Web 服务。HTTP 请求可以通过 GET 和 POST 两种方法提交,通常用于查询和提交数据。在 HTTPServlet 中,doGet() 和 doPost() 方法用来处理这两种请求,它们的主要区别在于提交的数据量和提交方式。 doGet() 方法用于处理 GET 请求,即通过浏览器地址栏输入 URL 或者通过链接访问服务器时,服务器返回请求的资源。GET 请求提交的数据通常是在 URL 的参数部分追加一个字符串,为键值对的形式,可以在服务器端进行解析。例如: http://localhost:8080/TestServlet?username=admin&password=123456 在这个例子中,“?” 后面的内容就是 GET 请求提交的数据,可以通过 HttpServletRequest 对象的 getParameter() 方法获取到每一个参数的值。 而 doPost() 方法用于处理 POST 请求,它通常用于提交表单和上传文件等需要提交大量数据的场景。POST 请求把数据存储在请求头部,数据量比 GET 请求大。在 doPost() 中,可以通过 HttpServletRequest 对象的 getInputStream() 和 getReader() 方法获取请求的数据,然后对数据进行解析。 总的来说,它们的区别主要在于请求的提交方式和数据量大小。GET 请求通常用于查询和获取静态资源,而 POST 请求则适合用于提交大量数据和实现用户互动。在实际开发中,可以根据不同的应用场景选择适合的方式来处理请求,提高服务器的性能和用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值