当前位置: 首页 > news >正文

Tomcat的部署、单体架构、session会话、spring

一、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,服务器可以在多个请求之间保持用户的状态信息(如登录状态、购物车内容等)。

一、核心概念

  1. HTTP 无状态
    每次 HTTP 请求都是独立的,服务器无法自动识别 “两次请求是否来自同一用户”。例如用户登录后访问其他页面,服务器无法直接知道该用户已登录。

  2. Session 的作用
    服务器为每个客户端创建一个唯一的 “会话标识”,并在多次请求间保持这个标识,从而 “记住” 用户状态。

二、Session 的工作流程

  1. 创建 Session
    当用户首次访问服务器时,服务器自动创建一个Session对象,并为其分配唯一的Session ID(如JSESSIONID=123456)。

  2. 存储 Session ID
    服务器通过CookieSession ID发送到客户端浏览器(默认保存在内存中,浏览器关闭后失效)。

  3. 传递 Session ID
    客户端后续每次请求时,会自动通过 Cookie 将Session ID带回服务器。

  4. 识别 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 代码,实现了解耦

http://www.dtcms.com/a/290264.html

相关文章:

  • ARC学习(6)arc 编译器overlap 地址重叠方式使用
  • stm32mp157f-dk2安装镜像并且部署qt全流程
  • 基于uniapp的餐厅在线选餐小程序的设计与实现
  • 信息整合注意力IIA,通过双方向的轻量级注意力机制强化目标关键特征并抑制噪声,提升特征融合的有效性和空间位置信息的保留能力。
  • Qt的QAbstractTableModel
  • 基于大数据的旅游推荐系统 Python+Django+Hive+Vue.js
  • 三大工厂设计模式
  • 电商项目_秒杀_初步分析
  • Django视图与路由系统
  • Jetpack ViewModel LiveData:现代Android架构组件的核心力量
  • echarts图铺满父元素
  • 在翻译语义相似度和会议摘要相似度评估任务中 ,分类任务 回归任务 生成任务区别
  • k8s查看某个pod的svc
  • Zookeeper 注册中心垂直介入
  • ZooKeeper学习专栏(四):单机模式部署与基础操作详解
  • 来伊份养馋记社区零售 4.0 上海首店落沪:重构 “家门口” 的生活服务生态
  • ZooKeeper学习专栏(三):ACL权限控制与Zab协议核心原理
  • Qt5线程相关事项
  • 使用 Tailwind CSS 控制元素在移动端不显示
  • 【Docker#3】Window 和 Linux 上 docker安装 相关知识
  • AWS IoT Core CloudWatch监控完整指南
  • Linux C 多线程基本操作
  • Product Hunt 每日热榜 | 2025-07-21
  • 2025最新版虚幻引擎5(UE5)入门教程:前言——你的随身教程和学习笔记
  • Freemarker实现下载word可能遇到的问题
  • 星游路-个人日志-学习积累法
  • 结构型模式-架构解耦与扩展实践
  • 遗像照片尺寸要求及手机制作打印方法
  • 【Java学习|黑马笔记|Day19】方法引用、异常(try...catch、自定义异常)及其练习
  • Linux程序构建核心:ELF文件编译、链接与加载机制详解