第3章 Tomcatservlet

news2024/12/24 2:17:56

1.BS与CS

*CS:客户端服务器架构模式

   优点:充分利用客户端机器的资源,减轻服务器的负荷

   缺点:需要安装;升级维护成本较高

*BS:浏览器服务器架构模式

   优点:客户端不需要安装,维护成本较低

   缺点:所有计算和存储任务都是放在服务器端尽心的,服务器负荷较重;在服务器端计算完成之后把结果再传给客户端,因此客户端和服务器端会进行非常频繁的数据通信,从而网络负荷较重

2.Tomcat简介

*Tomcat 服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

*部署(deploy):把一个项目放到web容器里,项目的名字是context root

*Tomcat目录结构:

   bin:可执行文件目录

   conf:配置文件目录

   lib:存放lib的目录

   logs:日志文件目录

   webapps:项目部署的目录

   work:工作目录

   temp:临时目录

*配置java环境变量,双击bin目录下的startup.bat启动Tomcat

(启动成功)

*http://localhost:8080/,访问Tomcat主页,确定启动成功

3.IDEA下操作Tomcat

(1)新建项目/模块->右键,add Framework Support->选择Web Application->ok

 (2)在web下新建html文件,文件与WEB-INF同级:

(3)部署到Tomcat上

   首先在IDEA上配置Tomcat,点击Add

 点左上角加号,找到Tomcat Server-local

 选择Tomcat文件位置,到bin上一级,点击Apply

 

 选择Deployment,点击+,点击Artifact,找到要部署的项目

 可以任意修改项目名,点击Apply

 

热部署,Apply

(4)debug测试

   点击右上角的debug进行测试

4.Servlet入门

(1)add.html

 (2)写AddServlet类,继承HttpServlet,HttpServlet是外部类,需要导入Tomcat依赖:

 (3)在WEB-INF下的web.xml里写入映射关系

(4)创建DAO、Bean、连接数据库

(5)在servlet里写入相应操作

5.servlet中文乱码

6.Servlet继承关系

*HttpServlet->GenericServlet->Servlet

*Servlet中的核心方法:init()、service()、destory()

*service()方法:

   当有请求过来时,service方法会自动响应(其实是tomcat容器调用的)

   在HttpServlet中会分析请求的方式:get/post/head/delete···,再决定调用哪个do开头的方法

   自己创建的子类一定要重写doxxx方法,否则会出现405页面

7.Servlet生命周期

*生命周期:从出生到死亡的过程,对应Servlet中的三个方法:init()、service()、destroy()

*默认情况下:

   第一次接收请求时,Servlet会进行实例化(调用构造方法)、初始化、服务

   从第二次请求开始,每次都只调用服务

   当容器关闭时,其中的所有servlet实例会被销毁,调用销毁方法

*可以通过<load-on-startup>来设置servlet启动的先后顺序,数字越小启动越早,最小值是0

*Servlet在容器中是单例的、线程不安全的

8.HTTP协议

*HTTP:超文本传输协议

*客户端向服务器端发送http请求,请求包含三个部分:

   请求行、请求头(请求消息头)、请求体

   *请求行包含三个信息:

      请求的方式、请求的url、请求的协议(一般都是HTTP1.1)

   *请求消息头中包含了很多客户端要告诉服务器的信息,比如浏览器型号、版本、接收内容的类型

   *请求体分三种情况:

      get方式,没有请求体,但有一个queryString

      post方式,有请求体,form data

      json格式,有请求体,request payload

*响应也包含三个部分:

   响应行、响应头、响应体

   *响应行包含三个信息:

      协议、响应状态码(200正常响应、404找不到资源、405请求方式不支持、500服务器内部错误)、响应状态

   *响应头包含服务器的信息

   *响应体响应的实际内容

9.session

*HTTP无状态:服务器无法判断两次请求是否来自于同一个客户端

*通过会话跟踪技术解决无状态问题

*会话跟踪技术:

   客户端第一次给服务器发送请求时,服务器获取session获取不到,则创建新的响应给客户端

   客户端再次给服务器发送请求时,会把session带给服务器,服务器判断这次和上次的session一样,则为同一个客户端

   常用的API:

   request.getSession()->获取当前session,如果没有则创建一个

   session.getId()->获取session的id

   session.isNew()->判断当前session是否是新的

   session.getMaxInactiveInterval()->session的非激活间隔时长,默认1800秒

   session.setMaxInactiveInterval()->

   session.invalidate()->强制性让会话失效

*session测试:

 访问两次:

 输出结果:

10.session保存/获取作用域

*常用的API:

   session.setAttribute(k,v)//设置作用域

   session.getAttribute(k)//获取作用域

   removeAttribute(k)//删除作用域

11.服务器内部转发以及客户端重定向

*服务器内部转发:

 *客户端重定向:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/43532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Zlibrary已死,找了一个替代品,找了一个替代品免费的电子书下载平台...

大家好&#xff0c;我是鸟哥。一个半路出家的程序员。 提到Zlibrary&#xff0c;想必大家都不陌生吧。全球最大的数字图书馆&#xff0c;截止被封前共收录了591万本书&#xff0c;7751万篇文章&#xff0c;并且还在不断的增加中&#xff0c;关键是可以免费下载。 反正我是很熟悉…

Rust之常用集合(二):字符串(String)

开发环境 Windows 10Rust 1.65.0VS Code 1.73.1 项目工程 这里继续沿用上次工程rust-demo 用字符串存储UTF-8编码的文本 我们在之前的章节中讨论了字符串&#xff0c;但现在我们将更深入地研究它们。新的Rust人会因为三个原因而陷入字符串:Rust倾向于暴露可能的错误&#x…

【季报分析】美团:真的很美

11月25日&#xff0c;港股盘后美团发布了2022年第三季度业绩报告。整体来看&#xff0c;财报数据还算不错&#xff0c;毕竟大部分指标都已经超预期&#xff0c;探员利用这两天假期&#xff0c;把美团的这份财报仔细过了一遍&#xff0c;当然探员也把2022年Q1、Q2的数据也进行了…

Linux代码调试----gdb使用介绍

目录 一、简介 二、gdb使用流程&#xff1a; &#xff08;1&#xff09;gdb的启动 &#xff08;2&#xff09;调试中查看源代码 &#xff08;3&#xff09;开始调试 一、简介 GDB 全称“GNU symbolic debugger”&#xff0c;是 Linux 下常用的程序调试器。发展至今&#xff…

[附源码]SSM计算机毕业设计校园超市进销存管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【Node.js】第九章 数据库

目录 1. 数据库的基本概念 1.1 数据库的概念 1.2 数据库的分类 1.3 数据组织结构 2. MySQL使用介绍 2.1 安装MySQL和MySQL Workbench 2.2 MySQL的基本使用 2.3 使用SQL管理数据库 3. 在项目中使用MySQL 3.1 安装和配置MySQL模块 3.2 操作数据 1. 数据库的基本概念…

word怎么转pdf?word转pdf借助pdf软件即可搞定!

我们在办公的时候&#xff0c;会有word转pdf的办公需求&#xff0c;但是很多人都不清楚word转pdf的方法&#xff0c;那么word怎么转pdf呢&#xff1f;其实方法很简单&#xff0c;利用pdf软件来进行word转pdf的操作即可&#xff0c;如今&#xff0c;市面上pdf软件应接不暇&#…

五、Javascript 空间坐标[尺寸、滑动]

一、尺寸 1.视窗尺寸 document.documentElement.clientWidth&#xff1a;视窗宽度document.documentElement.clientHeight&#xff1a;视窗高度 2.各种尺寸 举例&#xff1a;<div id"gao"></div> 前提&#xff1a;var a document.getElementById(g…

多重共线性如何分析?

判断标准 常见的直观判断方法共有四个&#xff0c;如下&#xff1a; &#xff08;1&#xff09;某些自变量的相关系数值较大&#xff08;比如大于0.8&#xff09;等&#xff0c;可以利用pearson相关系数检验法一般是利用解释变量之间的线性相关程度判断&#xff0c;一般标准是…

Java常用类(二)

目录 JDK8之前的日期时间API java.lang.System类 java.util.Date类 两个构造器的使用 两个方法的使用 java.sql.Date类 涉及两个问题&#xff1a; java.text.SimpleDateFormat类 格式化&#xff1a;日期--->字符串 解析&#xff1a;字符串--->日期&#xff08;格…

基于TM的遥感数据的叶面积指数估算解决方案及或取途径

1、背景与技术路线 叶面积指数是重要的植被结构参数&#xff0c;反演叶面积指数是植被遥感的重要研究内容之一&#xff0c;其影响生 态系统的物质和能量循环&#xff0c;成为作物生长、路面过程、水文和生态等模型的输入参数或状态变量。今 年来&#xff0c;对也铭记指数的反演…

Spark系列之Spark的RDD详解

title: Spark系列 第五章 Spark 的RDD详解 5.1 RDD概述 ​ RDD 是 Spark 的基石&#xff0c;是实现 Spark 数据处理的核心抽象。那么 RDD 为什么会产生呢&#xff1f; ​ Hadoop的MapReduce是一种基于数据集的工作模式&#xff0c;面向数据&#xff0c;这种工作模式一般是从…

Python_数据容器_集合set

一、集合set的定义 考虑使用集合的场景&#xff0c;通过已经学习的列表、元组、字符串三个数据容器特性来分析&#xff1a; 列表可以修改、支持重复元素且有序 元组、字符串、不可修改、支持重复元素且有序 局限就在于&#xff1a;它们支持重复元素 集合定义语法&#xff1…

KubeVirt with DPDK

发布于2022-11-25 15:52:32阅读 1020 Kubernetes优秀的架构设计&#xff0c;借助multus cni intel userspace cni 可以屏蔽了DPDK底层的复杂&#xff0c;让KubeVirt 支持DPDK变得比较容易。 因为 e2e验证 等原因&#xff0c;KubeVirt社区至今未加入对DPDK支持&#xff0c;本篇…

有用的CSS代码块

文章目录调试 DOM 元素的 border通用的网页样式调试 DOM 元素的 border 显示所有DOM元素的border&#xff0c;方便调试网页元素的相对布局。 * {outline: auto; }如何用javascript设置某个网页的style(复制以下代码到浏览器控制台执行即可)&#xff1f; // wuyujin1997 var …

PIC单片机5——串口 中断

//10M晶振 波特率9600 BRG8位波特率发生器 异步模式 #include "p18f458.h" #include "mydelay.h" #pragma config OSCHS,WDTOFF,LVPOFF,DEBUGON void PIC18F_High_isr(void);/*中断服务函数声明*/ void PIC18F_Low_isr(void); void usart_tx(unsigned ch…

基于javaweb房屋租赁管理系统的设计与实现

摘要 当今社会不管房屋出租、出售买卖是必不可少的&#xff0c;人们不管走到哪里都需要有一个温馨的家&#xff0c;有一个落脚之地&#xff0c;所以房源出租市场也是非常火爆&#xff01;不管是房源出租公司或者是个人都需要一套完整的管理系统来掌握整个市场信息。针对这一需求…

观察者模式在spring中的应用

作者&#xff1a;王子源 1 观察者模式简介 1.1 定义 指多个对象间存在一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式&#xff0c;它是对象行为型模式。 …

离散卡尔曼滤波实现

离散卡尔曼滤波基本理论 卡尔曼预报器、平滑器可以参考之前的博客&#xff1a;(2条消息) 卡尔曼滤波器_KPer_Yang的博客-CSDN博客 下面贴上一张图1&#xff0c;很直观&#xff1a;分成时间更新和测量更新两步&#xff0c;其中的KKK和PPP有可能随着时间推移变成常数&#xff0…

STM32实战总结:HAL之RTC

RTC基础知识参考&#xff1a; 51单片机内部外设&#xff1a;实时时钟(SPI)_路溪非溪的博客-CSDN博客 STM32中的RTC 51单片机通常是外置的RTC芯片如DS1302&#xff0c;那么STM32的RTC是什么情况呢&#xff1f; STM32芯片自带RTC&#xff0c;因此不须像其他MCU需外接RTC模块。 先…