心得感悟
感觉这几天我们学的内容有点向与用户交互靠近,都是可以让其他人进行浏览或操作,可能真的是对这个比较感兴趣一点吧,就有多查一点资料。网页真的是挺简单的东西,但我对用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 />
密 码:<input type="password" name="user_password">
<br /><br />
<input type="submit" name="提交">
</form>
</body>
</html>
二、使用get/post方式保存表单数据
我的工作路径:
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上传数据☝
网友评论