《Java web應用》板書


20200303

一、基礎知識介紹

  Web應用程序:就是在瀏覽器里運行的程序,網站也可認為是一個小型web應用程序。

  軟件架構:

    B/S(Browser/Server)模式:瀏覽器/服務器模式,web應用程序就屬於B/S模式。

    C/S(Client/Server)模式:客戶機/服務器模式,比如:QQ。

 

二、搭建Java web的開發環境

  1、安裝JDK,JDK就是JAVA的開發工具包。

  2、安裝Tomcat,web服務器軟件,主要用於網站的發布。PHP的常用的web服務器軟件是Apache,微軟的web服務器軟件是IIS。

  3、安裝eclipse,集成開發環境(IDE)。

  4、在eclipse中新建web項目

    操作:"File"->"New"->"Dynamic web project"

    項目的結構介紹:

      Java Resource:放java程序的目錄,其中src里存放自己寫的java程序

      build:主要放java程序編譯后class文件。

      WebContent:站點根目錄,主要存放前端的資源和jsp文件。

   5、新建一個jsp頁面

     jsp頁面的組成:html代碼和java程序片組成。

     在jsp頁面嵌入java代碼的三種方式:

      Java程序片:<%  %>

      Java表達式:<%=  %>

      Java成員變量:<%!   %>

        java成員變量的生命周期為Tomcat的運行周期,就像Java類的靜態變量一樣,可被多個該類的對象所共享。

 

 三、jsp頁面常見的內置對象

  out,request,response,cookie,session,application

  所謂內置對象就是直接在頁面中使用,不需要通過類來創建的對象。

  1、out

    out對象主要向瀏覽器輸出內容,它的主要方法是print(),println(),write()

  2、request

    請求對象,主要用來封裝客戶端的請求,包括客戶端的操作系統、瀏覽器、URL和發送數據。

    常用的方法:

      request.setCharacterEncoding("UTF-8")  //設置請求對象的字符編碼,防止中文亂碼

      request.getParameter("參數名")  //獲得請求里的某個參數的值

      request.getParameterValues("參數名")  //獲得某個參數的多個值,返回的是一個字符串數組。 

    前端知識補充:

    表單的中常用的控件

      表單:<form method="請求方式" action="處理請求的服務器端地址">

        請求方式:

          GET:發送的數據是附在URL后面,在地址欄輸入地址或點鏈接都是GET請求。

          POST:通常表單提交的請求最好是POST

      文本框:<input type="text"  >

        id:給瀏覽器用的,name:是給服務器的

      密碼框:<input type="password"  >

      提交按鈕:<input type="submit" >

      重置按紐:<input type="reset" >

      單選按紐:<input type="radio">

      復選框:<input type="checkbox">

      下拉列表:

        <select name="...">

          <option value="值1">值1</option>

          ...

        </select>

 

    3、response

      響應對象,是由服務器對用戶請求作出的響應。

      常用方法:

        response.sendRedirect("地址")  //重定向到某個頁面

          例:response.redirect("login.jsp");  //跳轉到login.jsp頁面

        response.setHeader("頁面文件頭的屬性名","頁面文件頭的屬性值")  

          例:response.setHeader("refresh","3;url=loginSuccess.jsp");  //3秒后跳轉login.jsp頁面

        response.setContentType("響應內容打開的應用程序類型");

          例:response.setContentType("application/msword");  //用本地的word打開響應內容

 

    4、Session

      會話,是指客戶端與服務器的一次會話,它的生命周期從用戶訪問網站開始直到離開網站。服務器為每一個訪問用戶創建session對象,每個用戶的session對象互不相同。 

      常用方法:

        session.setAttribute("鍵名",鍵值)  //鍵值的類型是Object類型

        session.getAttribute("鍵名")  //獲得session對象里面指定鍵名的鍵值,該方法返回類型為Object

        session.removeAttribute("鍵名")  ///從session對象里移除指定的元素

        session.invalidate()  //讓session失效,一般在用戶退出的時候使用 

        session的生存期限取決於下面幾個因素:

        1)用戶是否關閉瀏覽器  2)是否調用了invalidate()方法  3)是否達到最長的"發呆"時間

 

    5、application

      應用程序對象,web服務器啟動后就會產生application對象,直到web服務器關閉,在此期間application對象可被所有的用戶所共享。

      常用方法:

        application.setAttribute("鍵名",鍵值)

        application.getAttribute("鍵名")

        application.removeAttribute("鍵名")

      application和session的區別:

        session跨頁面共享數據,但每個用戶的session數據各不相同,屬於用戶級的。

        application跨頁面、跨用戶共享數據,屬於應用程序級的。

 

    6、Cookie類

       //強調一下,cookie不是jsp內置對象,只是它是web常用的技術,所以也放在這一塊寫了。

      cookie是在客戶端保存一些文本信息,例如在保存用戶的用戶名和密碼,以便下次訪問這個網站時,直接從本地硬盤讀取相應的信息,封裝在請求對象里,服務器可從請求對象里獲得cookie信息。

      常用操作:

        (1)創建一個Cookie對象

          Cookie  c1=new Cookie("鍵名","鍵值");  //只能存儲文本型數據

        (2)獲取cookie對象的鍵和值

          cookie對象.getName()  //獲得 cookie對象的鍵名

          cookie對象.getValue()  //獲得cookie對象的鍵值

        (3)獲取某個cookie對象

          請求對象里有多個cookie對象,如何來獲得指定的cookie對象?

          //比如找鍵名為"username"的Cookie對象的值。     

String userNameValue="";
Cookie[] cookies=request.getCookies();//獲取請求對象里的所有Cookie對象
for(Cookie c:cookies){
    if(c.getName().equals("username")){
        userNameValue=c.getValue();
        break;
    }
}
//userNameValue就是鍵名為username的Cookie對象的值

 

四、JavaBean

  Java類的一個實例,通常是實體類的一個對象,實體類一般是專門用來存儲數據的,一般要用公開的getter()和setter()方法。一般對應數據庫中的一張表。業務類一般用來處理業務邏輯的。

  1、JSP的動作標記

  (1)usebean

    格式:<jsp:usebean id="bean的名字" class="bean的類名" scope="范圍" ></jsp:usebean>

    功能:如果在指定的范圍(隱含對象:request,session,application)內,沒有對象,JSP就會創建一個bean,如果有的話,就取這個對象。

  (2)getProperty

    格式:<jsp:getProperty name="bean的名字" property="屬性名" />

     功能:取bean的屬性

  (3)setProperty

    格式:<jsp:setProperty name="bean的名字" property="屬性名" value="屬性值" />

  練習一:

  1、新建一個產品類Product(實體類)

  2、新建一個產品服務類ProductService(業務類)

    添加一個方法getProducts(),獲得所有產品

  3、新建jsp頁面ProductList.jsp,呈現所有產品。

 

   練習二:利用session技術實現添加產品功能

  1、設計一個添加產品的表單ProductForm.jsp

  2、接收並處理輸入的產品數據的頁面AddProduct.jsp

  3、修改並完善數據展示頁面ProductList.jsp

 

  JSP的指令標記

  <%@ page import ...%>  //頁面指令

  <%@ taglib prefix="c" ...%>  //jstl標簽庫指令

  <%@ include file="" %>  //包含指令

五、 Servlet

  概念:它就是Java程序,設計目的是開發動態web資源。

  sevrlet是接口,HttpServlet實現Servlet接口的類,我們寫的Servlet程序是繼承HttpServlet,需要重寫兩個方法,一個doGet();另一個doPost();

創建Servlet程序

  helloWorld(camel命名法)

  HelloWorld(pascal命名法)

  ASP

  JSP(Java Server Page)

Servlet最常用的是作控制器(Controller),接收請求,調用業務類的方法處理數據,發送數據到視圖(JSP)。

  MVC

  M:Modal(模型)

  V:View(視圖)

  C:Controller(控制器),Servelt

六、EL和JSTL

  EL(表達式語言)

  可以在jsp頁面直接使用隱含對象(pageContext,request,session,application)

  格式:${表達式}

  例如:${product.name}

  JSTL:JSP  Standard Tag Libray(JSP標准標簽庫)

  html標簽:<div>

  jsp標簽:<jsp useBean...>

  jstl標簽:<c:forEach ...>

  使用jstl

   (1)下載jstl的jar包,復制到WEB-INFO目錄下。

   (2)在使用jstl的jsp頁面中,加入指令標記引入核心庫,

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    引用jstl的目的是為了團隊協作開發,前后端分離。

 

  0407練習一:

  設計一個添加產品表單,表單數據提交給Servlet程序處理后,將數據發送給jsp頁面並顯示。

  1.設計一個添加產品的表單ProductForm.html

  2.新建一個Servlet程序AddProductServlet1.java

  3.新建視圖ProductView.jsp頁面展示Servlet傳過來的數據

七、Java訪問MySQL數據庫 

  MySQL適合中小型項目,Oracle適合中大型應用程序。

  Java使用mysql

  (1)下載mysql的驅動

  (2)訪問mysql數據庫

(一)使用MySQL CLI訪問mysql數據庫

  c:/>mysql -u <用戶名> -p<密碼>

  常見的命令:
  mysql>show databases;   //顯示所有的數據庫

  mysql>use <數據庫>  //使用數據庫

  mysql>show tables;  //顯示當前庫下的所有表

  mysql>desc <表名>  //查看表結構

   

  mysql>create database  <數據庫名>  //創建數據庫

  mysql>create  table  <表名>(<列的定義>,...)

  

  例:

  create table product(
    id int auto_increment primary key,  //auto_increment是自動編號

    name varchar(255),  //產品名稱

    price  float,  //產品價格

    image varchar(255)  //產品圖片

    );

 

(二)Java連接MySQL

  1、java連接MySQL8.x數據庫

  驅動下載: mysql-connector-java-8.0.16.jar

//1.加載mysql數據連接驅動
Class.forName("com.mysql.cj.jdbc.Driver");    //8.0

//2.連接數據庫            
Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/eshop?useSSL=false&serverTimezone=UTC", "root", "root");
//說明:8.0一定要帶上參數serverTimezone=UTC

 

  2、Java連接MySQL5.x數據庫

  驅動下載:mysql-connector-java-5.1.39-bin.jar

//1.加載mysql數據庫的驅動
Class.forName("com.mysql.jdbc.Driver");

//2.連接數據庫
Connection connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/eshop","root","root");

 

  3、Java連接MySQL8.0數據庫,但驅動是5.x

  驅動下載:mysql-connector-java-5.1.39-bin.jar

  (1)修改mysql8.0的加密規則

  進入windows命令行窗口,在dos提示符下輸入:mysql -u root -proot

  出現mysql命令提示符"mysql>",再輸入以下命令:

mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;   -- 密碼永不過期 mysql>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';  --改成5.x加密規則
mysql>FLUSH PRIVILEGES;  --刷新權限 mysql>alter user 'root'@'localhost' identified by 'root';  --最終修改root用戶的密碼

  說明:

    8.x和5.x的區別是加密規則不同:

    5.X版本是:default_authentication_plugin=mysql_native_password

    8.x版本就是:default_authentication_plugin=caching_sha2_password

   (2)Java連接MySQL的主要代碼

//1.加載mysql數據庫的驅動
Class.forName("com.mysql.jdbc.Driver");

//2.連接數據庫
Connection connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/eshop","root","root");

   

  Java讀取MySQL數據庫中的數據的步驟:

  1、建立數據庫連接Connection

  2、通過Connection對象創建語句對象Statement

  3、由Statement對象執行查詢,獲得結果集ResultSet

  4、對結果集進行遍歷。

  

  Java對數據庫進行寫入操作步驟:

  1、建立數據庫連接Connection

  2、通過Connection對象創建語句對象Statement或預編譯的語句對象PrepareStatement

  3、執行語句對象Statement或預編譯的語句對象PrepareStatement

  

  練習一:訪問NBA所有的球隊

  1、建立球隊的數據模型(實體類)Team

  2、建立業務邏輯類TeamService

  3、建立控制轉發的Servlet類GetTeamsServlet

  4、建立視圖TeamList.jsp

  study數據庫在騰訊雲上的連接信息:

    數據庫地址:jdbc:mysql://sh-cdb-qego3b2a.sql.tencentcdb.com:61551/study

    用戶名:student

    密碼:student

  

  練習二:訪問NBA所有的球員

  1、建立球員的數據模型(實體類)Player

  2、建立業務邏輯類PlayerService

  3、建立控制轉發的Servlet類GetPlayersServlet

  4、建立視圖PlayerList.jsp

  study數據庫在騰訊雲上的連接信息:

    數據庫地址:jdbc:mysql://sh-cdb-qego3b2a.sql.tencentcdb.com:61551/study

    用戶名:student

    密碼:student

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM