Servlet -表单数据

本文详细介绍了HTTP协议中GET和POST方法的区别与应用场景,包括如何使用这两种方法传递数据到Web服务器,以及在Java Servlet中如何读取这些数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

浏览器通过两种方法将数据传给web服务器,分别为Get方法和Post方法

①Get方法

    ---请求的所有信息以字符串的形式显示在浏览器上,长度限制为1024个字符 http://localhost:8080/get?name=111&age=1

    实例:

@WebServlet("/get")
public class GetForm extends HttpServlet {

    @Override
    public void init(){}

    @Override
    public void doGet(HttpServletRequest req, HttpServeltResponse resp) throws ServletException,IOException {

        resp.setContentType("text/html;charset=UTF-8");

        PrintWriter out = resp.getWriter();
        out.println("<h1>" + req.getParameter("name") + "</h1>");
        out.println("<h1>" + req.getParameter("age") + "</h1>");
}

    @Override
    public void destroy(){}
}

get.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Get-method</title>
</head>
<body>
<form action="/get" method="GET">
    姓名:<input type="text" name="name">
    <br/>
    年龄:<input type="text" name="age"/>
    <input type="submit" value="提交"/>
</form>
</body>
</html>

②Post方法

   ---POST 方法不是把信息作为 URL 中 ? 字符后的文本字符串进行发送,而是把这些信息作为一个单独的消息

   实例:

@WebServlet("/post")
public class postForm extends HttpServlet {

    @Override
    public void init(){}

    @Override
    public void doGet(HttpServletRequest req, HttpServeltResponse resp) throws ServletException,IOException {

        resp.setContentType("text/html;charset=UTF-8");

        PrintWriter out = resp.getWriter();
        out.println("<h1>" + req.getParameter("name") + "</h1>");
        out.println("<h1>" + req.getParameter("age") + "</h1>");
}

    @Override
    public void destroy(){}

    @Override 
    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException {
        this.doGet(req,resp);
}
}

post.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Post-method</title>
</head>
<body>
<form action="/post" method="POST">
    姓名:<input type="text" name="name">
    <br/>
    年龄:<input type="text" name="age"/>
    <input type="submit" value="提交"/>
</form>
</body>
</html>

③Servlet读取表单数据

  • getParameter():您可以调用 request.getParameter() 方法来获取表单参数的值。
  • getParameterValues():如果参数出现一次以上,则调用该方法,并返回多个值,例如复选框。
  • getParameterNames():如果您想要得到当前请求中的所有参数的完整列表,则调用该方法。

实例:

public class ParamForm extends HttpServlet {

    @Override
    public void init() {
    }

    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {

        PrintWriter out = response.getWriter();
        out.println("<h1>" + "param-read" + "</h1>");

        Enumeration paramNames = request.getParameterNames();

        while (paramNames.hasMoreElements()) {
            String paramName = (String) paramNames.nextElement();
            out.println("<tr><td>" + paramName + " " + request.getParameter(paramName) + "</td>\n");
        }
    }

    @Override
    public void destroy() {
    }
}

​​​​​​​param.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Get-method</title>
</head>
<body>
<form action="/param" method="POST">
    <input type="checkbox" name="red" checked="checked"/>红
    <input type="checkbox" name="yellow" checked="checked"/>黄
    <input type="checkbox" name="blue">蓝
    <input type="submit" value="选择颜色"/>
</form>
</body>
</html>

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值