1.http(了解)
(1)http协议是什么?
是由w3c制订的一种网络应用层协议,规定了
浏览器与web服务器之间如何通信以及相应的数据
包的结构。
a.如何通信?
step1,建立连接
step2,发送请求
step3,发送响应
step4,关闭连接
如果浏览器要发送新的请求,需要重新建立
新的连接,即“一次请求,一次连接”。
b.优点
服务器可以利用有限的连接个数为尽可能多的
请求服务。
(2)两种数据包的结构
1)请求数据包
a.请求行(请求方式 请求资源路径 协议类型和版本)
b.消息头
是一些键值对(使用": "隔开),一般由w3c定义,
通信的双方可以彼此发送,表示特定的含义,
比如,浏览器可以发送一个"user-agent"
消息头,告诉服务器,浏览器的类型和版本。
c.实体内容
只有当请求方式为post时,实体内容才会有
数据(请求参数)。
2)响应数据包
a.状态行(协议类型和版本 状态码 状态描述)
200 正确
500 系统出错
404 找不到对应的资源
b.消息头
服务器也可以发送一些消息头给浏览器,
比如,"content-type"可以告诉浏览器,
服务器返回的数据类型。
c.实体内容
程序处理的结果,浏览器会取出相应的数据,
生成页面。
(3)两种请求方式(get/post)
1)哪一些情况,浏览器会发送get请求?
a.直接在浏览器地址栏输入某个地址
b.点击链接
c.表单默认提交方式
2)get请求的特点
a.会将请求参数添加到请求资源路径的后面,
只能提交少量的数据给服务器(请求行只能存放
约2k左右的数据)。
b.会将请求参数显示在浏览器地址栏,不安全
(比如,路由器会记录包含了请求参数的请求地址)。
3)哪一些情况下,浏览器会发送post请求
设置表单 method="post"。
4)post请求的特点
a.会将请求参数添加到实体内容里面,可以提交
大量的数据给服务器。
b.不会将请求参数显示在浏览器地址,相对安全。
(不管什么请求方式,都不会对请求参数进行加密)
2.servlet输出中文
(1)乱码问题产生的原因
out.println方法默认会使用"iso-8859-1"
来编码。
(2)解决方式
response.setContentType(
"text/html;charset=utf-8");
作用1:out.println方法会使用指定的字符集来编。
作用2:设置content-type消息头的值。
3.表单包含有中文参数值
(1)乱码产生的原因
表单提交时,浏览器会对中文参数值进行
编码(表单所在的页面使用哪个字符集打开的,就会
使用这个字符集来编码)。而服务器端默认使用
"iso-8859-1"来解码。
(2)解决方式
step1,要保证表单提交时,使用指定的字符集
来编码。
<meta http-equiv="content-type"
content="text/html;charset=utf-8">
step2,服务器端使用对应的字符集来解码。
方式一:
request.setCharacterEncoding("utf-8");
注:该方法只对post请求有效。
方式二:
name = new String(
name.getBytes("iso-8859-1"),"utf-8");
注:
先获得浏览器发送过来的原始的字符数组,
然后使用正确的字符集("utf-8")来解码。
4.servlet访问数据库
step1,将jdbc驱动拷贝到WEB-INF\lib下。
step2,使用jdbc提供的一套api来访问数据库。
mysql的简单使用
(1)登录mysql
打开终端,输入
mysql -uroot;
(2)查看当前有哪些数据库实例
show databases;
(3)创建一个新的数据库 (同时设置缺省的字符集)
create database jsd1504db
default character set utf8;
(4)使用某个数据库
use jsd1504db;
(5)查看当前数据库有哪些表
show tables;
(6)建表
create table emp(
id int primary key auto_increment,
name varchar(50),
salary double,
age int
);
注:
auto_increment: 自增长列,在插入记录时,
数据库会为该列自动赋一个自动增长的值。
连接mysql数据库,jdbc参数
Class.forName("com.mysql.jdbc.Driver");
DriverManager.getConnection(
"jdbc:mysql://localhost:3306/数据库名称","账号","密码");