JavaWeb程序設計學習筆記整理(3)-含MySQL簡單操作

servlet的功能

1)向瀏覽器響應內容

  • (1)response.setContentType("text/html;charset=utf-8");
    響應到瀏覽器的內容支持標記,支持CSS屬性,同時也能夠設置中文亂碼問題。
  • (2)PrintWriter pw=response.getWriter();
    pw.println(“你好”);
    pw.write(“<div>你好</div>”);

2)接收瀏覽器發送過來的請求

  • (1)瀏覽器發送到服務器端的請求中獲取參數值的方法(兩種)如下:
    • 方法一:
      請求中參數值的傳遞格式:

      key1=value1&key2=value2&key3=value3…

      http://localhost:8080/servlettest/registe?username=zs&pwd=aaa
      key值和value值都不一樣使用的方法:
      request.getParameter(key) ---> value(String)

    • 方法二:
      請求中參數值的傳遞格式:

      key=value1&key=value2&key=value3&key=value4…

      key值一樣,value值不一樣的使用方法:
      request.getParameterValues(key); ---> value(String[])

  • (2)瀏覽器發送到服務器端的請求中,參數值中文亂碼問題
    • ① get請求方式,中文亂碼問題
      String s11=new String(s1.getBytes("iso-8859-1"),"utf-8");
    • ② post請求方式,中文亂碼問題
      request.setCharacterEncoding("utf-8");

servlet的功能關係圖

在這裏插入圖片描述

瀏覽器端向服務器端發送請求的方式

(1)get請求方式

瀏覽器發送get請求的情況:

  • ①在瀏覽器地址欄輸入一個地址回車的請求
  • ②點擊超鏈接
    <a href=”http://www.baidu.com”>你好</a>
    <a href=”url-pattern的地址”>hello</a>當點擊hello,發送的請求是url-pattern對應的servlet。
    <a href=”url-pattern地址?key1=value1&key2=value2...”>hello</a>
  • ③表單默認提交,或者設置屬性method=”get”

get請求方式,會將數據在瀏覽器地址欄上一起發送,提交的數據只能是少量的數據,因爲數據會顯示在瀏覽器地址欄上,數據相對來說不安全,但是效率高一些。

(2)post請求方式

瀏覽器發送post請求的情況:

  • ①表單提交,需要設置表單屬性method=”post”

post請求方式,會將數據封裝在一個包中,隨着請求一起發送,瀏覽器地址欄是看不到這些數據的,這種方式可提交大量數據,相對比較安全,但是效率相對低一些。

代碼部分:

RegisteServlet.java

package com.bzxy.test;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//表示服務器端的一個servlet,該servlet主要功能是接收瀏覽器端registe.html頁面
//發送過來的請求和請求中包含的參數
//瀏覽器端(頁面)  <==>   服務器端(servlet)  <==>   服務器端(數據庫)
public class RegisteServlet extends HttpServlet{
	
	//調用service方法
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//接收參數之前設置中文編碼 -- 支持post請求方式
		/*對應registe.html的<form action="registe" method="post">*/
		request.setCharacterEncoding("utf-8");
		
		//System.out.println("測試...");
		//未添加以下代碼時,訪問網址http://localhost:8080/servlettest/registe.html
		//點擊提交之後,頁面空白,網址變爲:http://localhost:8080/servlettest/registe?username=...&pwd=...&smt=...
		
		//##用戶名用英文輸入,否則亂碼,需進一步處理
		//request請求;response響應
		//http://localhost:8080/servlettest/registe?username=zs&pwd=aaa
		//通過request接收請求參數的值
		String s1 = request.getParameter("username");
		//如果是get請求方式提交的值是中文,s1是亂碼,也就是??????
		//瀏覽器如果採用的是get方法提交的數據,編碼默認採用的是"iso-8859-1"編碼
		//通過String字符串類進行編碼的轉換,由"iso-8859-1"編碼轉換爲"urf-8"編碼
		//你好 -用-> iso-8859-1 -解碼-> 011100111111... -用-> utf-8 -重新生成-> 你好 
		//getBytes 獲得
		String s11 = new String(s1.getBytes("iso-8859-1"), "utf-8");
		String s2 = request.getParameter("pwd");
		//http://localhost:8080/servlettest/registe
		//?username=zs&pwd=aa&
		///love=readbook&love=write&love=playbook&smt=%E6%8F%90%E4%BA%A4
		//String[]表示字符串類型的數組,該數組中應該存儲4個value值
		String[] s3 = request.getParameterValues("love");
		/*對應registe.html的<a href="registe?username=ls&pwd=123&love=ds&love=xz&id=1001">點我可訪問RgisteServlet</a>*/
		//接收超鏈接請求中參數值 id = 1001
		//String s4 = request.getParameter("id");
		
		//用戶名輸入:你好
		System.out.println("原始:" + s1); //原始:??????
		System.out.println("轉碼後:" + s11); //轉碼後:你好
		
		//在獲取PrintWriter之前寫上中文編碼設置
		response.setContentType("text/html;charset=utf-8");
		//設置之後,println不起效果,只能用標記換行 兩種方式:可自己加換行,也可自己直接輸出換行
		
		//通過response向頁面返回結果
		PrintWriter pw = response.getWriter();
		pw.println("<div style='color:red;'>以下爲通過response向頁面的返回結果:</div>");
		pw.println("<br/>");
		//pw.println(s1 + "<br/>");
		pw.println(s11 + "<br/>");
		pw.println(s2 + "<br/>");
		//s3 --> readbook write playball online
		//下標       0		1		2		3
		//若多選項選擇包含readbook,則顯示readbook
		pw.println(s3[0] + "<br/>"); //根據下標對應的內容輸出
		//若四個多選項都選擇,則顯示[readbook, write, playbook, online]
		pw.println(Arrays.toString(s3)); //藉助於toString方法,可直接將數組中所有的內容輸出
		//pw.println(s4);
	}
	
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

	<!-- 對com.bzxy.test包下的HelloServlet進行配置 -->
	<servlet>
		<servlet-name>hello</servlet-name> <!-- 對要配置的Servlet起別名 -->
		<servlet-class>com.bzxy.test.HelloServlet</servlet-class> <!-- 配置的Servlet的位置,寫所在的包名+類名即可 -->
	</servlet>
	<servlet-mapping>
		<servlet-name>hello</servlet-name> <!-- 要和上面的servlet-name的內容保持一致 -->
		<url-pattern>/ho</url-pattern> <!-- 瀏覽器訪問服務器端servlet的url地址 -->
	</servlet-mapping>

	<!-- 對com.bzxy.test包下的RegisteServlet進行配置 -->
	<servlet>
		<servlet-name>RegisteServlet</servlet-name> <!-- 對要配置的Servlet起別名 -->
		<servlet-class>com.bzxy.test.RegisteServlet</servlet-class> <!-- 配置的Servlet的位置,寫所在的包名+類名即可 -->
	</servlet>
	<servlet-mapping>
		<servlet-name>RegisteServlet</servlet-name> <!-- 要和上面的servlet-name的內容保持一致 -->
		<url-pattern>/registe</url-pattern> <!-- 瀏覽器訪問服務器端servlet的url地址 -->
	</servlet-mapping>
</web-app>

registe.html

<!-- 版本信息 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title here</title>
	</head>
	<body>
		<!-- action="" 表示點擊提交按鈕此表單會向哪個servlet發送請求,雙引號中寫哪一個url-pattern地址,
		此表單就會向哪一個servlet發送請求。【訪問頁面,點擊提交,成功訪問到RegisteServlet】-->
		<!-- 默認瀏覽器地址欄中會顯示數據,method="get";而不顯示則修改爲,method="post" -->
		<form action="registe" method="get">
			用戶名:<input type="text" name="username"/>
			<br/>
			密碼:<input type="password" name="pwd"/>
			<br/>
			興趣愛好:讀書<input type="checkbox" name="love" value="readbook"/>
				        寫字<input type="checkbox" name="love" value="write"/>
				        打球<input type="checkbox" name="love" value="playball"/>
				        上網<input type="checkbox" name="love" value="online"/>
			<br/>
			<input type="submit" name="smt" value="提交"/>
		</form>
		
		<!-- 測試超鏈接的請求方式 -->
		<a href="http://www.baidu.com">你好</a>
		<br/>
		<!-- 沒有傳遞參數,username接收爲空,異常爲NullPointerException -->
		<!-- <a href="registe">hello</a> -->
		<a href="ho">hello</a>
		<br/>
		<a href="registe?username=ls&pwd=123&love=ds&love=xz&id=1001">點我可訪問RegisteServlet</a>
	</body>
</html>

效果圖

若在瀏覽器中輸入http://localhost:8080/servlettest/registe.html,則如圖下顯示:
在這裏插入圖片描述
點擊超鏈接 你好,則如圖下顯示:
在這裏插入圖片描述
點擊超鏈接 hello,則如下圖顯示:
在這裏插入圖片描述
在這裏插入圖片描述
點擊超鏈接 點我可訪問RgisteServlet,則如下圖顯示:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
點擊表單中信息,如:輸入用戶名,密碼及選擇興趣愛好,點擊 提交,則如下圖顯示:
在這裏插入圖片描述
在這裏插入圖片描述

數據庫 --> MySQL數據庫 – 免安裝版本的

打開命令行窗口進行操作:window+R–>cmd或者左下角搜索->cmd

命令行窗口中簡單的操作命令:
1)切換某個盤 d:回車 e:回車 f:回車
2)dir命令:等價於linux系統中的ls命令,查看當前路徑下的所有內容。
3)cd命令:進入目錄,或者返回上一級目錄
cd … 返回上一級目錄
cd xx 進入xx目錄

免安裝版本的mysql數據庫的啓動方式

(1)啓動mysql服務

通過命令行窗口的方式,進入mysql文件夾中的bin目錄中,
輸入命令:mysqld --console,該命令啓動mysql服務,服務啓動後
該命令行窗口不要關閉。

效果圖:

在這裏插入圖片描述

(2)登陸mysql數據庫

重新打開一個新的命令行窗口,同樣進入mysql文件夾中的bin目錄
輸入命令:mysql -h localhost -u root -p,沒有密碼,直接回車登陸即可。

效果圖:

在這裏插入圖片描述

登陸mysql成功:

顯示 mysql>

mysql數據庫的簡單操作

(1)先操作庫

  • ① 查看所有的庫 show databases;
    例:
    在這裏插入圖片描述
  • ② 刪除一個庫 drop database 庫名;
    注意:(information_schema、mysql和test不要刪除)
    例:
    在這裏插入圖片描述
    檢查:
    在這裏插入圖片描述
  • ③ 創建一個庫 create database 庫名;
    例:
    在這裏插入圖片描述
    檢查:
    在這裏插入圖片描述
  • ④ 使用一個庫 use 庫名;
    例:
    在這裏插入圖片描述
  • ⑤ 查看使用的是哪個庫 select database();
    在這裏插入圖片描述
  • ⑥ 查看當前使用的庫下所有的表 show tables;
    注意:在哪個庫下查看
    在這裏插入圖片描述

(2)在庫下操作表以及表中的數據

  • ① 創建一個表 create table 表名;
    例:
    在這裏插入圖片描述
    可查看庫下表:
    在這裏插入圖片描述

代碼部分如下:

create table emp(
     id int primary key,
     name varchar(10),
     pwd char(10),
     salary double,
     birthday date
);
  • ② 查看錶結構 desc 表名;
    例:
    在這裏插入圖片描述
  • ③ 關於表中數據的增刪改查操作
    插入數據:
    例:
    在這裏插入圖片描述
    另外一種插入日期的形式:
    在這裏插入圖片描述
    查詢數據:
    查看錶中所有信息:
    在這裏插入圖片描述
    查看錶中id,name中信息:
    在這裏插入圖片描述
    修改數據:
    在這裏插入圖片描述
    查看是否修改:
    在這裏插入圖片描述
    刪除數據:
    在這裏插入圖片描述
    查看是否修改:
    在這裏插入圖片描述

代碼部分:

insert into emp values(1, ’zs’, ‘abc123’, 30002.3,2020-04-03);
insert into emp values(2,'ls','123456',6430.32,20200404);
select * from emp;
update emp set salary=643.32 where id=2;
delete from emp where id=1;

介於與Oracle數據庫類似不贅述很多,Oracle具體使用方法可點擊本處瞭解更多

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章