一、Tomcat的部署
①
②
③
④
⑤
二.web項目在tomcat服務中如何運行:
1.web項目源碼部署在服務器的webapps目錄里面
2.將web項目打包(war),部署在服務器的webapps目錄里面。
三 單體架構和前后端分離
單體架構是將所有功能模塊(包括前端界面、后端邏輯、數據庫交互等)打包成一個獨立的應用程序,部署在單一服務器上。例如早期的 Java Web 項目(JSP+Servlet+MySQL)、PHP 項目(PHP+HTML+MySQL)等。
前后端分離架構將應用拆分為前端和后端兩個獨立的部分:
- 前端:負責用戶界面(UI)和交互邏輯,通過瀏覽器或客戶端運行(如 Vue、React、Angular 開發的單頁應用)。
- 后端:負責業務邏輯和數據處理,以 API 接口(如 RESTful API、GraphQL)的形式向前端提供數據。
- 前后端通過 HTTP/HTTPS 協議通信(如前端用 Axios 調用后端 API),后端不參與頁面渲染。
? ? ? ?前后端分析詳解
四、Session會話
在 Web 開發中,Session 會話是一種服務器端的機制,用于跟蹤和識別來自同一客戶端的多次請求,解決 HTTP 協議 “無狀態” 的問題。通過 Session,服務器可以在多個請求之間保持用戶的狀態信息(如登錄狀態、購物車內容等)。
一、核心概念
HTTP 無狀態:
每次 HTTP 請求都是獨立的,服務器無法自動識別 “兩次請求是否來自同一用戶”。例如用戶登錄后訪問其他頁面,服務器無法直接知道該用戶已登錄。Session 的作用:
服務器為每個客戶端創建一個唯一的 “會話標識”,并在多次請求間保持這個標識,從而 “記住” 用戶狀態。
二、Session 的工作流程
創建 Session:
當用戶首次訪問服務器時,服務器自動創建一個Session
對象,并為其分配唯一的Session ID
(如JSESSIONID=123456
)。存儲 Session ID:
服務器通過Cookie將Session ID
發送到客戶端瀏覽器(默認保存在內存中,瀏覽器關閉后失效)。傳遞 Session ID:
客戶端后續每次請求時,會自動通過 Cookie 將Session ID
帶回服務器。識別 Session:
服務器根據Session ID
查找對應的Session
對象,獲取存儲的用戶狀態數據。
三、Session 的代碼實現(以 Java Servlet 為例)
1. 獲取或創建 Session
// 在Servlet中獲取當前請求的Session
// 參數false表示:若Session不存在則返回null(不創建新Session)
// 參數true(默認)表示:若Session不存在則創建新Session
HttpSession session = request.getSession();// 或顯式指定
HttpSession session = request.getSession(true); // 創建新Session(若不存在)
HttpSession session = request.getSession(false); // 返回null(若不存在)
2. 存儲和獲取 Session 數據
// 存儲數據到Session(類似Map,鍵值對存儲)
session.setAttribute("username", "張三"); // 存儲用戶名
session.setAttribute("isLogin", true); // 存儲登錄狀態// 從Session獲取數據
String username = (String) session.getAttribute("username");
Boolean isLogin = (Boolean) session.getAttribute("isLogin");// 移除數據
session.removeAttribute("username");
3. Session 的生命周期管理
// 獲取Session ID
String sessionId = session.getId();// 設置Session超時時間(單位:秒,默認30分鐘)
session.setMaxInactiveInterval(1800); // 30分鐘// 手動銷毀Session(如用戶退出登錄)
session.invalidate();
?五、Spring
一.什么是spring
1.spring是一個輕量級的javaEE開發框架
2.spring是一個開源的框架
二.spring框架的搭建
1.導入spring的依賴包
spring-context(需要)
2.創建spring的配置文件(XML)
三.spring的IOC
1.IOC:控制反轉
Spring IOC(Inversion of Control,控制反轉)是 Spring 框架的核心思想和核心功能之一,
它徹底改變了傳統 Java 應用中對象的創建和管理方式,主要體現為 “將對象的創建、依賴關系的
維護權從代碼中轉移到容器中”。
控制:指的是對象的創建和管理
反轉:指的是對象的創建和管理的控制權發生了反轉,由spring容器維護
? ?SpringIOC使用:
1.項目中創建類
2.將類注入springIOC容器
3.由springIOC容器以解耦的方式,創建對象
四.Demo2與Demo3的區別
Demo2 ? ? ? ? ? ? ? ? ? ? ? Demo3
BeansFactory ? ? ? ? ? ? ? ApplicationContext
getBean(key) ? ? ? ? ? ? ? getBean(id)
beans.properties ? ? ? ? ? springconfig.xml
這個類是一個簡單的工廠類(BeanFactory),主要用于通過配置文件動態創建 Java 對象(通常稱為 "Bean"),這是一種典型的工廠模式和控制反轉(IoC)?思想的實現。
package com.apesource.factory;import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;public class BeanFactory {static Properties properties=null;// 靜態屬性,用于存儲從配置文件加載的鍵值對static InputStream is=null; // 靜態輸入流,用于讀取配置文件static {// 靜態代碼塊,在類加載時執行,確保配置文件只加載一次try {properties=new Properties();// 初始化 Properties 對象// 通過類加載器從類路徑獲取配置文件的輸入流is=BeanFactory.class.getClassLoader().getResourceAsStream("bean.properties");properties.load(is);//加載配置文件內容到 Properties 對象} catch (IOException e) {throw new RuntimeException(e);}}//按照要求獲取對象// 核心方法:根據配置文件中的鍵獲取對應的對象實例public static Object getBean(String key){try {String path=properties.getProperty(key);// 從配置中獲取類的全限定名return Class.forName(path).newInstance();} catch (Exception e) {return null;}}
}
這段代碼是一個使用 Spring 框架的測試類,主要功能是通過 Spring 的 IOC(控制反轉置)容器獲取并使用對象,展示了 Spring 框架的核心特性之一 —— 依賴注入。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--將類注入springIOC容器語法:<bean id="唯一標識" class="包名.類名"></bean>--><bean id="daoImp" class="com.apesource.dao.UserDaoImp"></bean><bean id="date" class="java.util.Date"></bean></beans>
package com.apesource;import com.apesource.dao.IUserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.Date;public class Test01 {public static void main(String[] args) {//1.加載spring主配值文件 獲取springIOC容器核心對象ApplicationContext applicationContext = new ClassPathXmlApplicationContext("springconfig.xml");//2.向spring容器中索取對象IUserDao dao =(IUserDao) applicationContext.getBean("daoImp");dao.save();Date date=(Date) applicationContext.getBean("date");System.out.println(date);}
}
這段代碼體現了 Spring 框架的核心思想:
對象的創建不再由開發者手動通過new
關鍵字創建,而是由 Spring 容器負責
對象之間的依賴關系由 Spring 容器管理和注入
當需要更換實現類時,只需修改配置文件springconfig.xml
,無需修改 Java 代碼,實現了解耦