表单处理、HTTP协议和GET/POST
老师笔记:
1、表单的处理
(1)如何获得表单的参数
1),String request.getParameter(String paraName);
注意:
a,paraName与实际参数名不一致,会返回null值。
b,如果用户没有输入任何的值,大部分的表单域
会返回""字符串。单选和多选会返回null值。
2)String[] request.getParameterValues(String paraName);
注意:
当用多个请求参数名相同的时候,用这个方法。
(2)中文的处理(表单中有中文参数)
a,产生乱码问题的原因
当表单采用post方式提交时,浏览器会将
表单中的中文按照打开表单所在的页面的编码
来进行编码。而服务器端在默认情况下,大部分
服务器会使用iso-8859-1来解码。
b,解决方式:
step1 在html页面中,添加
<meta http-equiv="content-type"
content="text/html;charset=utf-8">
step2 表单采用post方式提交
step3 在servlet类里面,添加
request.setCharacterEncoding("utf-8");
//以下代码有两个作用:
response.setContentType("text/html;charset=utf-8");
//作用1:out会使用utf-8去编码。
//作用2:生成的content-type的值是
// text/html;charset=utf-8,浏览器会使用
//utf-8这种编码格式来打开页面。
而response.setContentType("text/html");
//默认情况下,out流使用iso-8859-1这种编码
//格式,显然,对于中文,无法正确输出。
//另外,服务器会生成一个消息头content-type
//值是 text/html;charset=iso-8859-1,浏览
//器会使用iso-8859-1这种编码格式来打开页面
//很显然,也会出现乱码。
2、http协议(了解)
(1)http是什么
hypertext tranfer protocal(超文本传输协议),
定义了浏览器(也可以其它客户端程序)与
web服务器之间通讯的过程与数据的格式。
(2)通讯的过程
a,浏览器请求与服务器之间建立连接
b,浏览器将要发送的数据打包(按http协议
的格式要求)
c,服务器处理请求,将处理结果打包,发送给
浏览器。
d,服务器关闭连接。
一次请求,一次连接,也就是说,浏览器与
web服务器之间,不会建立一种持续的连接。
这样做的好处是:服务器可以使用有限的连接为
多个客户服务。
(3)数据的格式
1)请求数据包
a,请求行:
请求方式 get/post
请求资源路径(端口号之后的内容)
协议及版本 (通常为 http 1.1)
b,消息头(若干)
消息头:w3c定义的一套通讯的规则,浏览器
与服务器都会遵守。
消息头会由浏览器与服务器自动生成,我们
也可以编程生成自己的消息头。
c,实体内容
只有当请求方式是post方式的时候,实体内容
才会有数据:数据指的是请求参数。
如果请求方式是get方式,请求参数会添加到
请求资源路径后面。
2)响应数据包
a,状态行:
协议的类型与服务器版本(如:http 1.1) 状态码(如 404,405,500,302) 状态码的描述
常见的状态码:
200: 服务器正常处理了请求。
500:系统出错
404:要访问的请求资源路径不存在对应的资源
b,若干消息头
服务器也可以发送一些消息头给浏览器。
比如content-type消息头可以告诉浏览器返回的
数据类型及编码。
c,实体内容
返回的处理结果
3、get/post请求
(1)哪一些是get请求
a,在浏览器地址栏直接输入一个地址
b,表单默认的提交方式
c,链接
(2)get请求的特点
a, 会将请求参数放到请求资源路径后面,
因为请求行最多允许的数据大约是4K左右,所以,
get方式只适合提交少量的数据。
b,会将请求参数显示到浏览器地址栏,相对来说,
不安全。
(3)哪一些是post方式
a,表单的method="post"
(4)post方式的特点
a,会将请求参数放到实体内容里面,提交的数据量
理论上没有限制。
b,浏览器地址栏不会显示请求参数,相对安全(是没有加密的)。
一些MYSQL数据库知识:
创建数据库 设置默认字符编码为 :utf8
create database 数据库名字 default character set utf8(字符编码);
数据类型:
bigint(8个字节,相当于long)
double (8个字节)
varchar
int(4个字节)
date
datetime
text
blob (保存大量的二进制数据:音、 视频等)
主键约束:
primart key auto_increment(设置主键 自增长列)主键由数据库自动生成
唯一性约束:
unique
创建一个数据库实例:
mysql> create table t_user(
-> userid int primary key auto_increment,
-> pwd varchar(20),
-> username varchar(25) unique,
-> userage int
-> );