JavaWeb获取表单提交数据实例

表单的提交方式

一般我们在浏览器输入一个网址访问网站都是GET请求;再FORM表单中,可以通过设置Method指定提交方式为GET或者POST提交方式,默认为GET提交方式。

HTTP定义了与服务器交互的不同方法,其中最基本的四种:GET,POST,PUT,DELETE,HEAD,其中GET和HEAD被称为安全方法,因为使用GET和HEAD的HTTP请求不会产生什么动作。不会产生动作意味着GET和HEAD的HTTP请求不会在服务器上产生任何结果。但是安全方法并不是什么动作都不产生,这里的安全方法仅仅指不会修改信息。

根据HTTP规范,POST可能会修改服务器上的资源的请求。比如知乎编写文章,用户提交一篇文章或者一个读者提交评论是通过POST请求来实现的,因为再提交文章或者评论提交后资源(即某个页面)不同了,或者说资源被修改了,这些便是“不安全方法”。

get和post的区别

1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)

(2)post发送的数据更大(get有url长度限制)

(3)post能发送更多的数据类型(get只能发送ASCII字符)

(4)post比get慢

(5)post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据

实例

1.创建一个HTML文件,写出一个表单,这里为了格式整齐一点用了表格。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="RegisterController1" method="post">
        <table border="1" cellpadding="0" cellspacing="0" width="50%" height="500px">
            <tr>
                <td colspan="2" align="center">用户注册</td>
            </tr>
            <tr>
                <td>用户名:</td>
                <td><input type="text" value="" name="username"></td>
            </tr>
            <tr>
                <td>密码:</td>
                <td><input type="password" value="" name="password"></td>
            </tr>
            <tr>
                <td>生日:</td>
                <td><input type="text" value="" name="birthday"></td>
            </tr>
            <tr>
                <td>性别:</td>
                <td>
                    <input type="radio" value="男" name="gender">男
                    <input type="radio" value="女" name="gender">女
                </td>
            </tr>
            <tr>
                <td>爱好:</td>
                <td>
                    <input type="checkbox" value="篮球" name="hobby">篮球
                    <input type="checkbox" value="唱" name="hobby">唱
                    <input type="checkbox" value="跳" name="hobby">跳
                    <input type="checkbox" value="rap" name="hobby">rap
                </td>
            </tr>
            <tr>
                <td>地址:</td>
                <td>
                    <select name="address">
                        <option value="北京">北京</option>
                        <option value="四川">四川</option>
                        <option value="广州">广州</option>
                        <option value="上海">上海</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>备注:</td>
                <td>
                    <textarea cols="80" rows="20" name="remark">

                    </textarea>
                </td>
            </tr>
            <tr>
                <td colspan="2" align="center">
                    <input type="submit" value="注册">
                    <input type="reset" value="重置">
                </td>
            </tr>
        </table>
    </form>
</body>
</html>

2.新建一个Java类extends继承HttpServlet,用来接收表单的数据,后在web.xml文件中注册对应的servlet或者在新建的类使用注解@WebServlet的方式来注册servlet

配置web.xml文件的方式如下

<servlet>
        <servlet-name>RegisterController</servlet-name>
        <servlet-class>com.RegisterController</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>RegisterController</servlet-name>
        <url-pattern>/RegisterController</url-pattern>
    </servlet-mapping>

 注意servlet-class标签中的连接路径,可以鼠标右键Java类,选择Copy Reference复制全类名

将全类名填土servlet-class标签中就可以了。

写注解@WebServlet的方式

3. 实现其中的service方法

@WebServlet("/RegisterController")
public class RegisterController extends HttpServlet{
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /*
          中文乱码的问题:
            因为浏览器的编码和java的编码不一致,所以会出现乱码的情况
            一般使用utf-8
        */
        //浏览器的编码调整
        resp.setContentType("text/html;charset=utf-8");
        //java的编码调整
        req.setCharacterEncoding("utf-8");
        //使用变量来接收数据(注意getParameter方法中的字符串要和表单中name的值一致,不然会拿                                
        //不到数据)
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String gender = req.getParameter("gender");
        //因为爱好是复选框所以用了一个String的数组来接收
        String[] hobby = req.getParameterValues("hobby");
        String address = req.getParameter("address");
        String remake = req.getParameter("remake");
        String birthday = req.getParameter("birthday");
        //最后输出一下
        System.out.println(username+","+password+","+gender+","+ Arrays.toString(hobby)+","+address+","+remake);
    }
}

5.在地址栏输入正确路径

6.填入数据

 最后得到提交的数据

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值