当前位置: 首页 > news >正文

Form表单的三种提交和http请求的三种传参方式,以及Servlet里的取取参方式

  • 多表单多用于文件上传,因为 toacat的实现机制,涉及到了将参数数据临时存储到磁盘上,取的时候只能取字节流

  • get和post虽然在http请求里带参的位置不同

  • 但是javaSE里对于

    HttpServletRequest这个对象定义,这两种传参的取参方式相同
  • 假设有一个表单,用户输入了用户名kimi和年龄25,提交GET请求后,URL会变成:

    http://example.com/FormSubmitServlet?username=kimi&age=25
  • 特点

    • 参数直接显示在URL中,因此不适合传输敏感信息(如密码)。

    • 参数长度有限制,通常不超过2KB。

    • 可以通过浏览器地址栏直接访问或分享。

2. POST 请求

  • 参数位置POST请求的参数会放在HTTP请求的正文中(Body)。

  • 格式:常见的格式是application/x-www-form-urlencoded,参数也是以key=value的形式发送,但它们不会显示在URL中。

  • 示例: 假设用户在表单中输入了用户名kimi和年龄25,提交POST请求后,请求正文会包含:

    username=kimi&age=25

    而URL仍然是:

    http://example.com/FormSubmitServlet
  • 特点

    • 参数不会显示在URL中,适合传输敏感信息。

    • 参数长度没有限制,可以传输大量数据。

    • 不会直接暴露在浏览器地址栏中,更安全。

HttpServletRequest中获取参数

无论是GET请求还是POST请求,都可以通过HttpServletRequestgetParameter()方法获取参数值。getParameter()方法会根据请求类型自动从URL或请求体中提取参数。

示例代码

java复制

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 获取GET请求中的参数
    String username = request.getParameter("username");
    String age = request.getParameter("age");
    System.out.println("GET请求 - 用户名: " + username + ", 年龄: " + age);

    // 响应
    response.setContentType("text/html");
    response.getWriter().println("<h1>这是GET请求</h1>");
    response.getWriter().println("<p>用户名: " + username + "</p>");
    response.getWriter().println("<p>年龄: " + age + "</p>");
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 获取POST请求中的参数
    String username = request.getParameter("username");
    String age = request.getParameter("age");
    System.out.println("POST请求 - 用户名: " + username + ", 年龄: " + age);

    // 响应
    response.setContentType("text/html");
    response.getWriter().println("<h1>这是POST请求</h1>");
    response.getWriter().println("<p>用户名: " + username + "</p>");
    response.getWriter().println("<p>年龄: " + age + "</p>");
}

总结

  • GET请求:参数在URL中,适合无敏感信息的小量数据传输。

  • POST请求:参数在请求体中,适合传输大量数据或敏感信息。

  • HttpServletRequest中,可以通过getParameter()方法统一获取参数,无需关心请求类型。

相关文章:

  • 浅谈跨平台框架的演变(H5混合开发->RN->Flutter)
  • 温度(Temperature)在大模型输出中的作用与底层原理
  • epoll成员函数介绍
  • 伯努利分布和二项分布学习笔记
  • 线程的概念
  • 跟我学C++中级篇——std::not_fn
  • 消息队列MQ
  • 【初探数据结构】二叉树的顺序结构——堆的实现详解(上下调整算法的时间复杂度分析)
  • 使用位置控件
  • 自动化测试定位元素方法成功率排行
  • PicGo安装与配置-Gitee图床
  • AI工具如何改变编程学习?Trae IDE与Claude 3.5的实践案例
  • JDK 24 发布,新特性解读!
  • 用 Pinia 点燃 Vue 3 应用:状态管理革新之旅
  • STM32F4与串口屏通信
  • C++项目——内存池
  • dockerSDK-Go语言实现
  • dfs刷题排列问题 + 子集问题 + 组和问题总结
  • 【Java SE】单例设计模式
  • TNNLS 2024 | 基于残差超密集网络的高光谱图像空间光谱融合方法
  • 全军军级以上单位新任纪委书记监委主任培训班结业
  • 无人机穿越大理崇圣寺千年古塔时“炸机”,当地:肇事者已找到,将被追责
  • 上海虹桥机场至北京首都机场快线试运行跨航司自愿签转服务
  • 中俄合拍电影《红丝绸》将于今年9月在中国上映
  • “高校领域突出问题系统整治”已启动,聚焦招生、基建、师德等重点
  • 山大齐鲁医院回应论文现“男性确诊子宫肌瘤”:给予该护士记过处分、降级处理