Welcome to Yumao′s Blog.
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頁面中,添加
step2 表單採用post方式提交
step3 在servlet類裡面,添加
request.setCharacterEncoding("utf-8");
2、http協議(了解)
(1)http是什麼
hypertext tranfer protocal(超文本傳輸協議),
定義了瀏覽器(也可以其它客戶端程序)與
web服務器之間通訊的過程與數據的格式。
(2)通訊的過程
a,瀏覽器請求與服務器之間建立連接
b,瀏覽器將要發送的數據打包(按http協議
的格式要求)
c,服務器處理請求,將處理結果打包,發送給
瀏覽器。
d,服務器關閉連接。
一次請求,一次連接,也就是說,瀏覽器與
web服務器之間,不會建立一種持續的連接。
這樣做的好處是:服務器可以使用有限的連接為
多個客戶服務。
(3)數據的格式
1)請求數據包
a,請求行:
請求方式 get/post
請求資源路徑(端口號之後的內容)
協議及版本
b,消息頭(若干)
消息頭:w3c定義的一套通訊的規則,瀏覽器
與服務器都會遵守。
消息頭一會由瀏覽器與服務器自動生成,我們
也可以編程生成自己的消息頭。
c,實體內容
只有當請求方式是post方式的時候,實體內容
才會有數據:數據指的是請求參數。
如果請求方式是get方式,請求參數會添加到
請求資源路徑後面。
2)響應數據包
a,狀態行:
協議的類型與版本 狀態碼 狀態碼的描述
常見的狀態碼:
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,瀏覽器地址欄不會顯示請求參數,相對安全。
4、訪問數據庫
(1)mysql數據庫的基本使用
a,登錄(使用root用戶名登錄)
mysql -uroot;
b,查看所有數據庫實例
show databases;
c,創建一個數據庫(同時,指定默認的編碼)
create database jd1202db default
character set utf8;
d,使用某個數據庫
use jd1202db;
e,查看當前數據庫的所有的表
show tables;
f,建表
create table t_emp(
id bigint primary key auto_increment,
name varchar(50),
salary double,
age int
);
bigint: 8個字節,是一個整數。
primary key:主健
auto_increment:自增長列,即主健值由
數據庫自動生成。
create table t_user(
id int primary key auto_increment,
username varchar(20) unique,
name varchar(50),
birthday date,
registTime datatime,
gender char(1),
info text
);
unique:唯一性約束
text:保存大量的字符,相當於clob類型
blob:保存大量的二進制數據。
g,插入記錄:
insert into t_emp(name,salary,age)
values('zs',10000,23);
select * from t_emp;
(2)使用jdbc訪問數據庫
step1 將mysql的jdbc驅動程序拷貝到
WEB-INFlib下。
step2 在servlet類裡面,使用jdbc代碼
訪問數據庫。
(3)如果發生了系統異常,可以給服務器配置一個
錯誤處理頁面,將頁面的信息顯示給用戶。
step1 寫一個錯誤處理頁面
step2 在web.xml文件當中,添加
500
/error.html
練習:
將用戶的註冊信息插入到數據庫。
create table t_user(
id int primary key auto_increment,
username varchar(20) unique,
pwd varchar(20),
name varchar(50),
age int
);