1. 程式人生 > 資訊 >索尼 Xperia 1 III 系統更新,魅族 Flyme 適配的本地應用來了

索尼 Xperia 1 III 系統更新,魅族 Flyme 適配的本地應用來了

package com.an.tomcatservlet;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

/**
 * @author apy
 * @description
 * @date 2021/10/20 17:55
 */
public class MyServlet extends HttpServlet {

    @Override
    public void init() throws ServletException {
        super.init();
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
        String method = req.getMethod();
        req.getParameter("");

        req.setCharacterEncoding("utf-8");

        req.getRequestDispatcher("請求路徑").forward(req, resp);

        req.setAttribute("", "");// put
        req.getAttribute("");// get




        // 響應頭
        resp.setHeader("", "");
        resp.addHeader("", "");
        resp.setHeader("Content-Type", "text/html");
        resp.setContentType("text/plain");

        // 響應狀態碼
        resp.setStatus(1, "");

        // 響應內容
        resp.getWriter().write("");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");

        resp.sendRedirect("請求路徑");

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);

        Cookie cookie = new Cookie("jack", "123344");
        cookie.setMaxAge(3*24*3600);
        cookie.setPath("/tb/");
        resp.addCookie(cookie);


        HttpSession session = req.getSession();
        session.setAttribute("", "");// set
        session.getAttribute("");// get
        session.setMaxInactiveInterval(200);
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.service(req, resp);

        this.getServletContext();
        this.getServletConfig().getServletContext();
        ServletContext servletContext = req.getServletContext();
        servletContext.getInitParameter("");


        ServletConfig servletConfig = this.getServletConfig();// get
        String initParameter = servletConfig.getInitParameter("");
    }

    @Override
    public void destroy() {
        super.destroy();
    }

    /**
     * 【servlet】
     *      一個Servlet 負責 對應的一個URL訪問請求,並返回相應的響應內容
     *          在web.xml中 新增 請求URL與Servlet的對映關係
     */


    /**
     * 【servlet生命週期】
     *      建立: 當客戶端請求時,servlet容器根據 請求路徑 在web.xml中找到 指定的servlet類,然後反射生成物件
     *      銷燬: 當 servlet容器銷燬時,servlet物件 銷燬
     *
     *   上述也不是絕對情況,可以 在web.xml中使用<load on startup>1<load on startup/> 可以將指定的servlet在容器啟動時建立
     */

    /**
     * 【servlet容器的Request物件、Response物件】
     *      servlet容器  將  客戶端請求 封裝為 Request物件
     *
     *      servlet容器  將  客戶端請求處理結果 封裝為 Response物件
     */

    /**
     * 【servlet亂碼問題】
     *      1、結果亂碼:
     *          對結果使用String進行重新編碼
     *          String nameSrc = "jack";
     *          String name = new String(nameSrc.getBytes("ios-8859-1"), "utf-8");
     *      2、get、post請求亂碼
     *            req.setCharacterEncoding("utf-8");
     *      3、response亂碼
     *            resp.setCharacterEncoding("utf-8");
     *            resp.setContentType("text/html;charset=utf-8");
     */


    /**
     * 【servlet Request請求轉發】
     *      為了實現 同一個請求 可以跳轉多個servlet
     *      req.getRequestDispatcher("請求路徑").forward(req, resp);
     *
     *      客戶端只發送一次請求
     *      瀏覽器位址列不會變化
     *      請求過程中 只有 一個Request、Response
     *      多個 servlet 共享一個 Request、Response
     */


    /**
     * 【servlet Request作用域】
     *      為了實現 在同一個請求 中 多個servlet 可以資料共享
     *      req.setAttribute("", "");// put
     *      req.getAttribute("");// get
     */

    /**
     * 【servlet Response重定向】
     *      請求轉發 每次請求 都需要 重新提交表單,為了解決這個問題
     *      resp.sendRedirect("請求路徑");
     *
     *      客戶端傳送2次請求
     *      瀏覽器地址發生變化
     *      請求過程中 有2個Request、Response
     *      2個servlet不能共享 同一個 Request、Response
     */


    /**
     * 【servlet cookie】
     *      why?
     *          為了解決 客戶端傳送不同請求,需要相同資料 問題;
     *      what?
     *          一種 在客戶端 儲存 http狀態資訊的 技術;
     *
     *          當 客戶端首次請求伺服器時,伺服器會在 響應頭 傳送給 客戶端,
     *          瀏覽器儲存了cookie後,以後每次請求伺服器,都會在 請求頭 攜帶cookie 傳送至伺服器;
     *
     *          一個cookie 只能記錄一種資訊,k-v形式;
     *
     *          一個伺服器可以 給瀏覽器 傳送多個cookie,一個瀏覽器 也可以儲存多個cookie;
     *      how?
     *          Cookie cookie = new Cookie("jack", "123344");
     *          resp.addCookie(cookie);
     *
     *      分類:
     *          臨時cookie
     *              預設儲存在記憶體中,當瀏覽器關閉,cookie失效;
     *          永續性cookie
     *              Cookie cookie = new Cookie("jack", "123344");
     *              cookie.setMaxAge(3*24*3600);
     *              resp.addCookie(cookie);
     *
     *              儲存在瀏覽器的某個儲存目錄,過期後,才會失效;
     *
     *      每個cookie 只儲存一對k-v,如果想儲存多個cookie,需要建立多個cookie物件;
     *
     *      cookie.setPath("/tb/");
     *          只有 請求路徑 與 cookie路徑相關,cookie才會生效;
     */

    /**
     * 【servlet session】
     *      why?
     *          為了解決 客戶端傳送不同請求,需要相同資料 問題;
     *      what?
     *          一種 在伺服器 儲存 http這條資訊的 技術;
     *          依賴 cookie 技術 實現;
     *              伺服器 生成的session (k-v),客戶端請求時 攜帶 k
     *          每個使用者獨立擁有一個session物件;
     *          預設儲存時間是30分鐘;
     *
     *          session :
     *              k : jsessionid
     *              v : session值
     *
     *      how?
     *          HttpSession session = req.getSession();
     *          session.setAttribute("", "");// set
     *          session.getAttribute("");// get
     *
     *      每次關閉瀏覽器,session會失效,重新請求會重新生成一個session;
     *
     *      自定義 session 生存時長 ;
     *          session.setMaxInactiveInterval(200);
     *
     *
     */


    /**
     * 【servlet ServletContext】
     *      why?
     *          解決不同使用者 資料共享 問題;
     *       what?
     *          執行在 JVM上的每個 web應用程式 都有 一個 與之對應的ServletContext;
     *
     *          ServletContext可以被 web應用程式的 所有servlet訪問;
     *
     *      How?
     *          ServletContext 由 Servlet容器建立,一個 web應用程式 只有 一個 ServletContext物件;
     *
     *          獲取ServletContext:
     *              this.getServletContext();
     *              this.getServletConfig().getServletContext();
     *              req.getServletContext();
     *
     *      其他作用:
     *          獲取web.xml中配置的公共屬性值
     *              servletContext.getInitParameter("");
     *
     *          獲取 應用程式路徑
     */

    /**
     * 【servlet ServletConfig】
     *      why?
     *          在web.xml中 每個servlet 可以自定義 初始化引數,但是 ServletContext只能獲取 應用級的 初始化引數;
     *
     *      How?
     *          獲取當前 servlet的 初始化引數
     *              ServletConfig servletConfig = this.getServletConfig();// get
     *              String initParameter = servletConfig.getInitParameter("");
     *
     */
    
}