美文网首页
【Java学习】HTML入门(下)——制作网页表单

【Java学习】HTML入门(下)——制作网页表单

作者: 榆野铃爱 | 来源:发表于2019-08-24 16:08 被阅读0次

心得感悟

感觉这几天我们学的内容有点向与用户交互靠近,都是可以让其他人进行浏览或操作,可能真的是对这个比较感兴趣一点吧,就有多查一点资料。网页真的是挺简单的东西,但我对用Java实现查询数据库那块知识点还有些迷糊。


内容简概

  • 一、用form制作网页表单
  • 二、使用get/post方式保存表单数据
  • 三、使用URL访问服务器数据
  • 四、使用URL下载服务器数据
  • 五、使用post实现上传数据

具体内容

一、用form制作网页表单

1. 表单设计
网页表单最常见的就是让用户填写用户信息,所以我们也来尝试做一个简单的登录页面,表单的样式如下:


2. 表单实现原理
网页中的表单都是按照这个流程实现的。首先,用户在Web端或移动端填写表单,接着表单的内容将被传送给服务器端(后台),然后PHP等脚本语言编写的程序对表单数据进行分析处理,与数据库中的数据作比较,最后将结果回调给用户。

3. 基本输入类型
在我们这个简单的登录表单里,只需要用到三种输入类型:

输入类型 内容
text 纯文本,输入可见
password 密码,输入不可见
submit 提交控件

菜鸟教程中已经将输入类型整理得很好了,还提供在线运行,想了解更多输入类型和的朋友可以点击该链接学习。

HTML输入类型

4. 具体代码
 为空格,用于对齐。按照如下代码编写完成后,保存为html文件,打开浏览器就能看到表单了,效果图请拉到最下面查看。

这时点击提交数据,数据会“消失”,但是填写的内容并不会被保存,也不会跳转到另一个页面,如何保存表单内容呢?接着往下看。

注意:编写代码时,最好让首行为代码,若首行为注释,结合Java等编写的程序时容易出错。

<!DOCTYPE html>
<html>
<head>
    <title>登录</title>
</head>

<style>
    body{text-align:center}
</style>

<!-- 设置背景图片 -->
<body background="1.jpeg">

    <!-- 表单的内容 -->
    <form>
        <br /><br /><br /><br /><br /><br />
        用户名:<input type="text" name="user_name">
        <br /><br />
        密&nbsp;&nbsp;&nbsp;码:<input type="password" name="user_password">
        <br /><br />
        <input type="submit" name="提交">
    </form>
</body>
</html>

二、使用get/post方式保存表单数据

\color{#ea4335}{注意:一定要记得将HTML文件、PHP文件保存到服务器的工作路径下,打开网页时用IP地址访问}

我的工作路径:E:\Apache\ApacheSetUp\Apache24\htdocs
访问方式:127.0.0.1/文件名(我的是127.0.0.1/login.html

1. get/post介绍
接收数据肯定都是需要一个动作来完成的,在HTML中,这个动作就是get/post,它们向服务器提交数据 并且获取服务器返回的结果。二者的区别如下:

方式 特点
GET/get ①提交的数据都在URL里面体现出来,不安全
②当提交的数据比较多时 不能使用
③当数据不是特别重要并且少量使用时可以使用
POST/post ①提交的数据不会展示在URL里面,比较安全
②可以提交大量数据

2. PHP接收数据
想要保存数据,除了在HTML中添加get/post方法,还需要编写PHP,负责接收外部传递的数据,在我们这个程序里接收的是表单填写的内容。写好PHP后,提交数据可以进入登录页面,页面的内容就是echo打印的内容。

这里我们先不实现查询数据库。敲好下面的代码,保存为php格式(文件名为xxx.php),结合login.html文件,依次使用get、post,对比差异。

<?php
    // 获取提交的用户名 get-$_GET  post-$_POST
    $name = $_GET["user_name"];
    $password = $_GET["user_password"];

    // 查询数据库 需用PHP/Java语言编写对应代码

    // 返回结果 用echo输出 相当于print
    echo "用户名:".$name."  密码:".$password;
?>

3. 网址差异
使用get/post方法编写,该网页的网址会在提交表单数据时体现出差异。每次修改后记得保存!!!表单填写内容如下:

输入框 填写内容
user_name jack
user_password password

使用GET:
http://127.0.0.1/login.php?user_name=jack&user_password=123&%E6%8F%90%E4%BA%A4=%E6%8F%90%E4%BA%A4
%后面的为中文信息,可以忽略。

使用POST:
http://127.0.0.1/login.php

三、使用URL访问服务器数据

1. 什么是URL?
URL全称叫做:统一资源定位符(URL,英语Uniform Resource Locator的缩写)也被称为网页地址

http://www.sougou.com 这是域名
http://127.0.0.1这是IP
http://zhidao.baidu.com/question/2072537.html
以上三种都是URL,也就都是网址

2. URL的格式
一个完整的URL包括:协议部分、域名部分、端口部分、虚拟目录部分、文件名部分、参数部分、锚部分。我挑几个介绍。

协议部分:该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等本例中使用的是HTTP协议。在”HTTP”后面的“//”为分隔符。

域名/IP地址部分:该URL的域名部分为www.aspxfans.com,或者使用IP地址如127.0.0.1

端口部分:跟在域名后面的是端口,域名和端口之间使用作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口。

文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。如http://127.0.0.1/login.php? user_name=jack&user_password=123中,文件名为login.php

参数部分:从“?”开始到“#”或者结尾之间的部分为参数部分,允许有多个参数,参数与参数之间用“&”作为分隔符。上面的例子中参数为user_name\user_password

3. 具体代码
确保PHP文件第一行是注释而不是代码,否则可能出错。如果出错还可以通过下面的判断语句检查连接状态,返回200为连接成功,400为连接失败。如果没有出错,就不用运行判断语句了。

public class MyClass {
    public static void main(String[] args) throws IOException {
        // http://127.0.0.1/login.php?user_name=jack&user_password=123
        // 1.创建URL
        String path = "http://127.0.0.1/login.php?user_name=jack&user_password=123";
        URL url = new URL(path);

        // 2.获取连接的对象
        // URLConnection封装了Socket
        URLConnection connection = url.openConnection();

        // 3.设置请求方式
        HttpURLConnection httpURLConnection = (HttpURLConnection) connection;
        httpURLConnection.setRequestMethod("GET");

        // 判断连接的状态
        //System.out.println(httpURLConnection.getResponseCode());

        // 5.接收服务器端的数据 获取输入流对象
        BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));

        // 6.得到返回的数据
        System.out.println(br.readLine());
    }
}

运行结果:

用户名:jack  密码:123

Process finished with exit code 0

四、使用URL下载服务器数据

这里我们只能实现上传图片视频,还不支持上传文件夹。

public class MyClass {
    public static void main(String[] args) throws IOException {
         // 确定URL地址
        URL url = new URL("http://127.0.0.1/1.jpeg");

        // 获取与服务器连接的对象
        URLConnection connection = url.openConnection();

        // 读取下载的内容 - 获取输入流
        InputStream is = connection.getInputStream();

        // 创建文件保存的目录
        FileOutputStream fos = new FileOutputStream("F:/homework/java/day1/java/src/main/java/day14/1.jpeg");

        byte[] buf = new byte[1024];
        int len;
        while ((len = is.read(buf)) != -1) {
            fos.write(buf, 0, len);
        }
    }
}

五、使用post实现上传数据

该方法可以直接通过Java/PHP编写的代码上传数据,而不用浏览网页。当我们上传数据后,再从数据库下载我们刚才上传的数据,检查是否上传成功。

public class MyClass {
    public static void main(String[] args) throws IOException {
               // 1.创建url
        URL url = new URL("http://127.0.0.1/login.php");

        // 2.获取连接对象
        // URLConnection 一般情况就用这个
        // HttpURLConnection 自己需要设定请求的内容 (请求的方式 上传的内容)
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();

        // 3.设置请求方式为post
        connection.setRequestMethod("POST");
        // 设置输出流 需要上传
        connection.setDoOutput(true);
        // 设置输入流 需要下载
        connection.setDoInput(true);

        // 4.准备上传的数据
        String data = "user_name=jack&user_password=123";

        // 5.开始上传 输出流对象
        OutputStream os = connection.getOutputStream();
        os.write(data.getBytes());
        // 表示写完了
        os.flush();

        // 6.接收服务器端返回的数据
        InputStream is = connection.getInputStream();
        byte[] buf = new byte[1024];
        int len;
        while ((len = is.read(buf)) != -1) {
            System.out.println(new String(buf, 0, len));
        }
    }
}

网页效果

静态图片☝ 不用get/post☝ 使用get/post,添加PHP文件,并通过IP地址访问☝ 用URL下载网页中的图片☝ 使用post上传数据☝

相关文章

网友评论

      本文标题:【Java学习】HTML入门(下)——制作网页表单

      本文链接:https://www.haomeiwen.com/subject/stpxectx.html