1、http协议(了解)
(1)什么是http协议(hypertext transport protocol |即超文本传输协议)?
是一种应用层协议,由w3c制订,她定义了浏览器(或者其他客户端)与web服务器之间通过程及数据格式。
(2)通讯过程
step1,浏览器建立与web服务器之间的连接(socket)
step2,浏览器将请求数据打包(请求数据包),然后发送给web服务器
step3、web服务器将结果打包(响应数据包),然后发送给浏览器
step4、web服务器关闭连接。
如果浏览器要再发请求,就必须重新建立一个新的连接。
特点:一次请求,一次连接;
优点: web服务器可以利用有限的连接个数为尽可能多的客户端服务
(3)数据格式
1)请求数据包
a、请求行(请求方式 请求资源路径 协议描述)
GET /web02/hello?qty=12 HTTP/1.1
b、若干消息头
消息头:
消息头是一些键值对,一般是由w3c定义,有特定的含义。浏览器和服务器自检,可以通过发送消息头来传递一些特定消息,比如,浏览器可以通过user-agent消息头来通知服务器浏览器的类型和版本。
c、实体内容
GET /web02/hello?qty=12 HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 BIDUBrowser/6.x Safari/537.36
Accept-Encoding: gzip,deflate
Accept-Language: zh-CN,zh;q=0.8
上面的代码是一段抓包产生的
2)响应数据包
a、状态行: 协议的描述 状态码
b、若干消息头
服务器也可以发送一些消息头给浏览器,比如content-type ,告诉浏览器服务器返回数据的格式和编码格式(字符集,比如utf-8,iso-8859-1)。
c、实体内容:
HTTP/1.1 200 OK
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 180
Date: Fri, 10 Oct 2014 05:48:03 GMT
Server: Apache-Coyote/1.1
(3)数据格式
2 GET请求和POST请求
(1)那些情况,浏览器会使用GET方式发请求
a、直接在浏览器地址栏输入某个地址
b、点击链接
c、表单默认的提交方式
(2)那些情况下,浏览器会使用post方式发请求
a,设置表单的method属性值为“post”。
(3)GET请求的特点
GET请求会将请求参数添加到请求资路径的后面,因为请求行存放的数据大小有限,所以get请求请求只能提交少量的数据
get请求会将请求参数显示在浏览器地址栏,不安全。
(4)post请求的特点
post请求会将请求参数添加到实体内容里面,所以,可以提交大量的数据。
post请求不会将请求参数显示在浏览器地址栏,相对安全一些。注意,post请求并不会对请求参数进行加密处理(HttpS协议)
3 编码问题:
(1)Java语言在内存当中,会使用“Unicode”编码格式(字符集)来保存字符。
(2)编码:把Unicode这种编码格式对应的字节数组转化为某种笨的编码格式(如gbk)对应的字节数组。
Unicode--->gbk
(3)解码:把某种本地编码格式的自己数组转换成Unicode这种编码格式对应的字节数组
(5)如果表单提交的时候,浏览器会对表单中的数据进行编码(会使用打开表单时的编码格式进行编码),而服务器默认的情况下,会使用iso-8859-1去解码,所以会产生乱码问题。
解决方式1:
step1、先保证表单所在的页面按照指定的编码格式打开。使用<meta http-equiv ="content-type " content = "text/html;charset= utf-8">
step2、调用request.setCharacterEncodeing(“utf-8”);意思告诉服务器,使用制定的编码格式进行解码,该方法只使用于post请求。
解决方式2:
step1、先保证表单所在的页面按照指定的编码格式打开。使用<meta http-equiv ="content-type " content = "text/html;charset= utf-8">
step2、使用new String(str.getBytes("iso-8859-1"),"utf-8");
4、如何读取请求参数?
(1)、String request.getParameter(String );
注意:
a、如果paraName(即参数名称)与实际的参数名称不一致,会获得null;
b、在使用表单数据时,如果用户没有填写任何的值,会获得“”。即空字符串
(2)、方法二
String[] request.getParameterValues(String paraName)
注意:
a、当有多个参数名称相同时,使用该方法
5、访问数据库
(1)使用mysql数据库
a,登陆mysql
使用root用户来登陆
mysql -uroot
b,查看当前所有的数据库
show databases;
c,创建一个新的数据库
//创建一个名叫jd1304db的数据库
//并且设置器缺省的字符集为utf8
create database jd1304db
default character set utf8;
d,使用数据库
use jd1304db;
e,查看当前数据库有哪些表
show tables;
f,建表
create table t_emp(
id int primary key auto_increment,
name varchar(50),
salary double,
age int
);
primary key :主键
auto_increment: 自增长列,即插入记录时,数据库会自定为该列赋一个唯一的值
增加记录
http://download.csdn.net/detail/cssdl/8031289 mysql 5.0 的驱动jar包下载】
(2)使用jdbc 访问数据库