服务器编程二

本文详细介绍了HTTP协议的基本概念、工作流程以及GET和POST请求的区别,并探讨了编码问题和表单数据处理方法。此外,还展示了如何使用JDBC访问MySQL数据库,包括创建、使用数据库、建表和增加记录的操作。
摘要由CSDN通过智能技术生成

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 访问数据库





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值