java Web接受数据表单

本文主要介绍了在Java Web中如何获取并处理HTML表单提交的数据,包括获取表单信息的步骤、实现代码,以及利用对象接受和打印表单内容。此外,还涉及到请求转发、重定向和包含的概念。

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

java接受数据表单

1.方法索引
1.HttpServletRequest介绍
  公共接口类HttpServletRequest继承自ServletRequest。
  客户端浏览器发出的请求被封装成为一个HttpServletRequest对象。
  对象包含了所有的信息包括请求的地址,请求的参数,提交的数据,上传的文件客户端的ip甚至客户端操作系统都包含在其内。
  HttpServletResponse继承了ServletResponse接口,并提供了与Http协议有关的方法,这些方法的主要功能是设置HTTP状态码和管理Cookie
2.HttpServletResponse对象
  Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象。
3.requestresponse对象即然代表请求和响应,那我们要获取客户机提交过来的数据,只需要找request对象就行了。
  要向客户机输出数据,只需要找response对象就行了。
4.setContentType
  是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。

1.java获取HTML表单信息

1.首先创建一个html表单文件
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>表单</title>
</head>
<body>
//action值对应的是要把信息提交到的地址,通过get方法传送过去
<form action="/sh-web-servlet003/demo001" method="get">
用户名:
<input type="text" name="username"><br/>
密码:
<input type="text" name="password"><br/>
男:<input type="radio" name="sex" value="男" checked="checked">
女:<input type="radio" name="sex" value="女"><br/>
<input type="checkbox" name="hobby" value="篮球">篮球
<input type="checkbox" name="bobby" value="歌唱">唱歌
<input type="checkbox" name="bobby" value="画画">画画<br/>
<select name="city">
    <option>---请选择---</option>
    <option value="sh">上海</option>
    <option value="bj">北京</option>
    <option value="tj">天津</option>
</select><br/>
<input type="submit" value= "提交">
</form>
</body>
</html>
1.1java获取表单信息步骤
//1.浏览器请求utf-8编码格式内容
//2.服务器响应给浏览器的utf-8编码格式
//3.获取表单中所有提交的数据
//4.打印获取表单信息
1.2内容简介
1.单词原解
  getParameter get/获取  parameter/参数
  BeanUtils      Bean/豆 Utils/工具
  populate 充填
2.getParameter   是用于读取提交的表单中的值,或者是某个表 单提交过去的数据.获取的是POST/GET传递的参数值
  getParameter:用于客户端重定向时,即点击了链接或提交按扭时传值用,即用于在用表单或url重定向传值时接收数据用
1.3java获取表单信息实现代码
xml配置xingx
 <servlet><!-- 1.创建一个Select -->
     <servlet-name>demo01</servlet-name><!-- 2.给select起名 -->
     <servlet-class>come.lanou3g.Demo01</servlet-class><!-- 3.设置select地址 -->
  </servlet>
  <!-- ************************** -->
  <servlet-mapping><!-- 注册配置访问路径 -->
     <servlet-name>demo01</servlet-name><!--配置这个组件的名称要与前面的一致 -->
     <url-pattern>/demo01</url-pattern><!-- 配置这个组件的访问地址 -->
  </servlet-mapping>
  <!-- ************************** -->

    <servlet><!-- 1.创建一个Select -->
     <servlet-name>demo02</servlet-name><!-- 2.给select起名 -->
     <servlet-class>come.lanou3g.Demo02</servlet-class><!-- 3.设置select地址 -->
  </servlet>
  <!-- ************************** -->
  <servlet-mapping><!-- 注册配置访问路径 -->
     <servlet-name>demo02</servlet-name><!--配置这个组件的名称要与前面的一致 -->
     <url-pattern>/demo02</url-pattern><!-- 配置这个组件的访问地址 -->
  </servlet-mapping>
  <!-- ************************** -->
      <servlet><!-- 1.创建一个Select -->
     <servlet-name>demo03</servlet-name><!-- 2.给select起名 -->
     <servlet-class>come.lanou3g.Demo03</servlet-class><!-- 3.设置select地址 -->
  </servlet>
  <!-- ************************** -->
  <servlet-mapping><!-- 注册配置访问路径 -->
     <servlet-name>demo03</servlet-name><!--配置这个组件的名称要与前面的一致 -->
     <url-pattern>/demo03</url-pattern><!-- 配置这个组件的访问地址 -->
  </servlet-mapping>
  <!-- ************************** -->
 <!-- ************************** -->
      <servlet><!-- 1.创建一个Select -->
     <servlet-name>demo04</servlet-name><!-- 2.给select起名 -->
     <servlet-class>come.lanou3g.Demo04</servlet-class><!-- 3.设置select地址 -->
  </servlet>
  <!-- ************************** -->
  <servlet-mapping><!-- 注册配置访问路径 -->
     <servlet-name>demo04</servlet-name><!--配置这个组件的名称要与前面的一致 -->
     <url-pattern>/servlet/demo04</url-pattern><!-- 配置这个组件的访问地址 -->
  </servlet-mapping>

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Demo01 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //浏览器请求utf-8编码格式内容
        request.setCharacterEncoding("UTF-8");
        //服务器响应给浏览器的utf-8编码格式
        response.setContentType("text/html;charset=UTF-8");//html的文本格式,utf-8的字符集
        //获取表单中所有提交的数据
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String sex = request.getParameter("sex");
        String[] hobbys = request.getParameterValues("hobby");
        if (hobbys != null) {
            for (String string : hobbys) {
                System.out.println(string);
            }
        }
        String city = request.getParameter("city");
        //打印表单信息
        System.out.println(username);
        System.out.println(password);
        System.out.println(sex);
        System.out.println(city);

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}
1.2使用对象接受打印表单
1.创建User对象
package come.lanou3g;

import java.util.Arrays;

public class User {
    //建议属性名 和 表单中的name一致
     private String username;
     private String password;
     private String sex;
     private String[] hobby;
     private String city;
    public User() {
        super();
        // TODO Auto-generated constructor stub
    }
    public User(String username, String password, String sex, String[] hobby, String city) {
        super();
        this.username = username;
        this.password = password;
        this.sex = sex;
        this.hobby = hobby;
        this.city = city;
    }
    @Override
    public String toString() {
        return "User [username=" + username + ", password=" + password + ", sex=" + sex + ", hobby="
                + Arrays.toString(hobby) + ", city=" + city + "]";
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String[] getHobby() {
        return hobby;
    }
    public void setHobby(String[] hobby) {
        this.hobby = hobby;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
}
2.请求转发,请求重定向,请求包含
package come.lanou3g;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/*
 * 请求转发
 * 请求重定向
 * 请求包含
 * Request 也是一个域对象
 * 域对象内部维护了一个map集合(添加删除获取的方法)
 * Request域的作用范围:一次请求当中 可以获取到域中保存的数据
 */
public class Demo02 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置响应的编码格式
        response.setContentType("text/html;charset=UTF-8");
        //告诉服务器 请求的内容是什么编码格式
        request.setCharacterEncoding("UTF-8"); 

        //获取字符流
        PrintWriter out = response.getWriter();

        //给Request域中添加值  
        request.setAttribute("name", "wang");
        //请求包含
        //把两个页面的响应合并成一个响应返回给浏览器
//      request.getRequestDispatcher("/demo03").include(request, response);
        //请求转发 浏览器只能响应一次数据
        request.getRequestDispatcher("/demo03").forward(request, response);//只接受一次响应
        System.out.println("我是demo2");
        //响应一句话
        out.write("123");
//      fun1(request, response);
//      fun2(response);

    }

    public void fun2(HttpServletResponse response) throws IOException {
        //请求重定向 查看是否获取域中的值
        //从定向是两=次请求 不能获取到Request域中的值
        //请求转发能不能访问本地以外的服务器
        //即可可以访问本地服务器也可以访问非本地
        response.sendRedirect("/sh-web-servlet003/demo03");//去往的位置
//      response.sendRedirect("http://www.baidu.com");//去往的位置
         System.out.println("我是demo02的结尾");
    }

    public void fun1(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //请求转发 获取转发器
        // 请求转发 只是服务器内部的访问
        // 不管怎么写也访问不到外网
//      RequestDispatcher dispatcher = request.getRequestDispatcher("/demo03");
        RequestDispatcher dispatcher = request.getRequestDispatcher("../http://www.baidu.com");
          dispatcher.forward(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}
package come.lanou3g;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Demo03 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().write("456");
        //获取request域中保存的值
        String name = (String)request.getAttribute("name");
        System.out.println("我是demo03"+name); 
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值