1. 程式人生 > 實用技巧 >09 Servlet中間服務 連線前段和後端

09 Servlet中間服務 連線前段和後端

import 匯入 在當前類中使用外包中的類時使用

cookies 快取

Alt+enter提示快捷鍵

Servlet 服務 (連線前段和後端)

Servlet本質就是Java類

  Java Servlet 是執行在 Web 伺服器或應用伺服器上的程式,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和   HTTP 伺服器上的資料庫或應用程式之間的中間層。

  使用 Servlet,您可以收集來自網頁表單的使用者輸入,呈現來自資料庫或者其他源的記錄,還可以動態建立網頁。

  登入介面使用的是表單技術,現將其互動給後端

  在Java程式中,不是基本型別的剩下的都是引用型別的。(String字串也是(類首字母大寫))

 其中的格式:

  eg: importjavax.servlet.Servlet; // import包名+類名

 命名規範: 

  1.對於類名,變數名等識別符號組成部分:數字,字母,$,下劃線(去看類名)只有這四種其他都不行
在包命名時,可以用符號“.”這個點就相當於“/”是目錄分割符
2.命名不能以數字開頭
3.不能由關鍵字來命名如:int但是識別符號可以包含關鍵字如:int_a
4.對於類名來說首字母規範是大寫的,其他一般小寫
5.命名時,如果該識別符號有多個單片語成,我們一般在後端服務程式中採用駝峰命名法。
後面的單詞每個單詞首字母大寫。
6.見名知意名字太長了,採用通用的縮寫形式

java後臺基本格式註釋

HttpServletResponse response = (HttpServletResponse) servletResponse;

強制轉換  左邊是小範圍的資料型別  變數名 = (小範圍的資料型別)變數值;

對於引用型別來說,前提條件是等號兩邊前後的資料型別是有繼承關係(父子關係)

int a = (int) 646121651;//跟上邊模式基本一樣

int int_a = 132;//再次強調int等關鍵詞不能單獨成為命名

 response . setCharacterEncoding("UTF-8");//設定編碼字符集

 response.setContentType(
"text/html;charset=UTF-8");//防止中文亂碼 response 通過響應setContentType設定響應型別text/html設定相應型別為文字html response . getWriter() .write( "Servlet 很厲害");// I0流 input output 寫出 response . getWriter() //具備可以往程式外寫內容的功能 response 通過響應 getWriter 寫出 write http://localhost:8080/day9/hello hello 請求後端伺服器的資源路徑 @WebServlet("/hello") hello url路徑對映 hello --> 對映到HelloServlet HelloServlet --> 載入service()功能(方法) service() ---> response.getWriter().writer("Servlet很厲害"); @WebServlet("/請求資源路徑") web.xml配置的請求資源路徑二者選其一 當兩個都配置的時候,伺服器是無法啟動的。 500就是指後端的伺服器程式碼有異常或者是錯誤 400/402 客戶端問題 請求資源找不到

  網站名域名註釋:

http://localhost:8080/day9/hello
組成部分:網路協議://域名(伺服器名 》備案(ip + 域名)):埠號(8080)/部署在伺服器上的虛擬目錄/請求資源路徑?name=張三&password=123456

域名是自定義的   idea的預設埠號63342 , 每個軟體都有自己的埠號  ?name=張三&password=123456 請求資源路徑攜帶的請求引數

?是分割前面的請求資源路徑和後面的引數

如果請求引數有多個的話,用“&”連線
        部署在伺服器上的虛擬目錄hello
        如果沒有埠號:說明他用的埠號是80   (80可以不寫)
        在servlet-class標記中,裡面需要填寫類(全路徑:包名+類名)全先定類名

登入頁面例題:

前臺顯示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <!--頁面標題-->
    <title>登入頁面</title>
</head>
<body>
        <!-- <form> 表單  錄入資料,把資料傳輸給後端伺服器
        action:執行url動作 請求的資源路徑
        <input>標記是form表單標記中的一個高頻使用的標記
        input 標記中type=submit 表達的是 想把from表單中的所有資料打包成from 形式提交給後端伺服器
        如果type=button 那麼該按鈕就是一個簡單的普通按鈕,具備滑鼠點選的功能
        -->
        <form action="login">
            <!--輸入框     input 行標籤 不能設定寬與高,不獨佔一行                                         為什麼登入不用name
               type 格式,(在這裡是選擇格式)  text 是文字型別   password 是密碼,口令   submit 遞交登陸  這三個都是固定格式
                 name賦名  value 賦名  placeholder  佔位符(只顯示,不佔位置)
             -->
            <input type="text" name="username" placeholder="使用者名稱/郵箱/手機號"><br>
            <input type="password" name="password" placeholder><br>
            <input type="submit" value="登入" ><br>
            <!--超連結 <a>  制定跳轉的資源路徑href   -->
            <a href="zuoye.html">忘記密碼</a>


        </form>
</body>
</html>

後臺編碼:

package com.zhiyou100;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/login")
public class loginServlet implements Servlet {

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        //轉換成可支援Http協議的類
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        //設定可以接受帶中文的文字資訊 getParameter(“引數名稱”)如果是表單引數  通過name屬性值
        request.setCharacterEncoding("UTF-8");
        //設定可以相應給瀏覽器客戶端支援的中文文字資訊
        response.setContentType("text/html;charset=UTF-8");
        //凡是客戶端提交的引數值,一般情況下
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        //假定  你的使用者名稱是張三 密碼123456
        if (username.equals( "張三") && password.equals("123456")){//==換成equals()
            //表明使用者名稱和密碼都正確
            //恭喜你登陸成功!
            response.getWriter().write("恭喜你登陸成功!");



        }else{
            //您的使用者名稱不正確,請重新登陸
            response.getWriter().write("您的使用者名稱不正確,請重新登陸");
        }


    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}