JavaEE学习笔记 2024-1-12 --Tomcat服务器、Servlet

news2025/1/11 14:58:23

JavaEE

JavaEE是企业级开发
是综合性非常强的阶段
 包含的知识点:JavaSE,MySQL,JDBC,WEB(HTML,CSS,JS,前端框架),Servlet,JSP,XML,AJAX等技术

1.服务器

JavaEE项目需要运行在服务器之上
WEB服务器就是WEB项目的容器,WEB项目的运行环境,将项目部署到服务器下,可以通过服务器路径给用户直接浏览访问
静态资源
 网页中保持不变的,没有后端请求的(HTML/CSS/JS/图片等)
动态资源(WEB服务器上运行动态资源)
 会随着不同的请求,发生不同的变化

常见开发中的服务器产品
 Tomcat(apache开源服务器,与sun公司合作,主流的web服务器之前,springboot中内置的服务器)
 Jetty(效率比tomcat要高,安装相比tomcat麻烦一些)
 WebLogic(Oracle 收费)
 WebSphere(IBM服务器)
 Nginx(静态资源服务器)

2.Tomcat服务器

Apache的开源项目,tomcat是开源免费的,因为和sun公司进行合作,支持最新的JSP和Servlet的语法
企业中主流的使用Tomcat8.5和Tomcat9版本(Tomcat10也有使用)
各版本之间最大的差别是对Servlet(运行在服务器下的Java类)的规范支持
Tomcat有安装版和解压版的区别
	(目录结构是一样的,以及后面的搭建方式是相同的,本次课程给大家提供的是Tomcat8.5解压版)

2.1Tomcat的使用

开箱即用
	注意:开箱时目录的层级不要太多,开箱路径中不要有中文
	例如:D:\apache-tomcat-8.5.20\apache-tomcat-8.5.20

2.2Tomcat的目录结构

bin		存放服务器启动和关闭相关的二进制文件
conf	tomcat的配置相关文件(server.xml可以配置当前服务器的端口等信息,web.xml当前服务器的全局文件)
lib		tomcat是java开发的,lib中存放的是支持的jar环境
logs	存放日志文件,服务器相关的各种信息
temp	临时文件夹
webapps	管理web项目的,默认情况下web项目要部署到该路劲下(eslipse需要手动配置,idea可以自动配置)
work	存web项目的动态页面(JSP:Java Server Page)转换的java文件的

2.3Tomcat的启动和关闭

startup.bat 启动服务器 关闭则可以直接关闭服务器
	不能同一个端口启动多次(一个端口只能启动一次)
tomcat若无法启动,则需要查看JDK的环境变量是否正常配置,tomcat是由java开发的
	必须有正确的JAVA_HOME配置

2.4eclipse下配置tomcat

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.Servlet的基本使用

Servlet是JavaEE规范的一部分,Servlet需要JavaEE的环境支持
	环境支持:JDK环境,服务器环境
Servlet是一个运行在服务器下的类,由服务器进行创建对象
	Servlet的本质是Java类

3.1编写第一个Servlet程序

// 外部(浏览器)访问我们Servlet的路径
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		System.out.println("你访问到我了呦");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		System.out.println("你访问到我了呦");
	}

}

3.2Servlet的访问

1.在服务器下启动当前的项目
	Run On Server --> finsh 服务器和项目一起被启动了,项目可以被访问了
2.访问路径
	http://localhost:8080/20240112-01-HelloServlet/HelloServlet
	当前地址表示着访问服务器下的Servlet类

3.3Servlet的配置

在Servlet3.0后有两种配置方案:
1.基于注解的方式(更加便捷,更加方便)
	@WebServlet(路径)
		路径是必须由/开始
	注解是将Java类配置到服务器下,可以被直接访问(浏览器访问服务器,然后读取到了一个Java类)

2.基于配置文件的方式
	web.xml文件,该文件每个项目都只有一个
	在WebContent/WEB-INF/web.xml文件中进行配置

	xml文件是和html同公司(www3cSchool)发布的产品,特点都是由标签组成(标记,节点)
	xml的特点是区分大小写,所有标签必须是闭合的(双标签<xx></xx> 单标签<xx/>)
	xml中只有一个根节点
	xml最初被创建的作用是数据传输的,但是xml特别的笨重
	xml现在多用于配置文件

<!-- 使用xml的形式进行配置servlet -->
<!-- 注册Servlet -->
<servlet>
    <!-- 名字任意 -->
    <servlet-name>ok</servlet-name>
    <!-- 需要被注册的servlet -->
    <servlet-class>com.qf.servlet.OkServlet</servlet-class>
</servlet>
<!-- 映射,外部的访问方式 -->
<servlet-mapping>
    <!-- 名字和上面一样 -->
    <servlet-name>ok</servlet-name>
    <!-- 外部的访问路径 -->
    <url-pattern>/ok</url-pattern>
</servlet-mapping>

3.4Servlet配置需要注意的问题

url-pattern不能重复
url-pattern必须以/开头

3.5Servlet的版本变化

接口版本
 Servlet
模板化抽象类版本
 GenericServlet
Http协议抽象类版本(自动生成的版本)
 HttpSerlet

3.5.1Servlet接口

Servlet接口中包含了Servlet生命周期相关方法(4个)(来到没的过程)
1.构造方法 只调用一次,服务器创建的同时为Servlet创建对象
2.初始化方法 只调用一次,用于对当前的Servlet进行初始化信息
3.服务方法 可以调用多次,每次的浏览器的访问都会调用一次(请求的过程)
4.销毁方法 只调用一次,服务器正常终止时调用,或者源码改变时调用

@WebServlet("/my")
public class MyServlet implements Servlet{
	public MyServlet() {
		System.out.println("构造方法");
	}

	@Override
	public void destroy() {
		System.out.println("销毁方法");
	}

	@Override
	public ServletConfig getServletConfig() {
		System.out.println("servlet配置");
		return null;
	}

	@Override
	public String getServletInfo() {
		System.out.println("servlet信息");
		return null;
	}

	@Override
	public void init(ServletConfig arg0) throws ServletException {
		System.out.println("初始化方法");
	}

	@Override
	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
		System.out.println("服务方法");
	}
}

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

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

相关文章

[JVM] Java类的加载过程

Java类的加载过程 在Java中&#xff0c;类的加载是指在程序运行时将类的二进制数据加载到内存中&#xff0c;并转化为可以被JVM执行的形式的过程。类的加载过程主要包括以下几个步骤&#xff1a; 加载&#xff08;Loading&#xff09;&#xff1a;通过类的全限定名&#xff0c;…

redis — redis cluster集群模式下如何实现批量可重入锁?

一、redis cluster 集群版 在Redis 3.0版本以后,Redis发布了Redis Cluster。该集群主要支持搞并发和海量数据处理等优势,当 Redis 在集群模式下运行时,它处理数据存储的方式与作为单个实例运行时不同。这是因为它应该准备好跨多个节点分发数据,从而实现水平可扩展性。具体能…

vue前端开发自学,子组件传递数据给父组件,使用$emit

vue前端开发自学,子组件传递数据给父组件,使用$emit 父子组件之间互相传递数据的情况非常常见&#xff0c;下面为大家介绍的是&#xff0c;来自子组件&#xff0c;给父组件传递数据的情况。 <template><h3>组件事件demo</h3><Child someEvent"getI…

Vue-13、Vue绑定css样式

1、绑定css样式字符串写法&#xff0c;适用于&#xff1a;样式的类名不确定 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>绑定css样式</title><!--引入vue--><script type"tex…

基于STM32F103C8T6单片机的DHT11温湿度传感器与OLED显示屏实时动态数据监测系统设计

标题&#xff1a; 摘要&#xff1a; 本文提出了一种利用STM32F103C8T6微控制器&#xff0c;结合DHT11数字温湿度传感器和OLED显示屏实现环境温湿度实时、直观显示的方法。该系统通过低功耗且精确的DHT11传感器获取环境温湿度信息&#xff0c;并借助于STM32F103C8T6强大的处理能…

从“唯分论”到“过程评价” 助力教育高质量发展

近日,为推动教育评价改革工作高质量发展,山东省委办公厅、省政府办公厅印发《关于进一步推进教育评价改革工作的若干措施》,从学校评价改革、学生评价改革等6方面共提出25条举措,对教育评价改革进行了全面部署。 教育评价改革是教育改革的“牛鼻子”,为教育发展提供了明确的方…

Spring事务失效场景之类内部方法调用及解决方案

一、背景 在日常开发中&#xff0c;经常有需要使用事务来保证数据一致性的情况。简单点的话直接在方法上面加Transactional注解就可以了。 但这样存在一个问题&#xff0c;在整个业务方法层面加注解会把很多并不需要归入事务的操作也归入到了事务里面&#xff0c;这样会可能会…

Linux反向、分离解析与主从复制

前言 上篇介绍了DNS正向解析&#xff0c;本文将继续介绍反向解析与主从复制等内容。域名反向解析即从IP地址到域名的映射。为了完成逆向域名解析&#xff0c;系统提供一个特别域&#xff0c;该特别域称为逆向解析域。 目录 前言 一、反向解析 1. 配置bind服务 2. 修改区…

【linux】tcpdump 使用

tcpdump 是一个强大的网络分析工具&#xff0c;可以在 UNIX 和类 UNIX 系统上使用&#xff0c;用于捕获和分析网络流量。它允许用户截取和显示发送或接收过网络的 TCP/IP 和其他数据包。 一、安装 tcpdump 通常是默认安装在大多数 Linux 发行版中的。如果未安装&#xff0c;可…

【MATLAB源码-第108期】基于matlab的OFDM-OQAM系统仿真,包含PHYDYAS滤波器模块和PNN结构,输出误码率曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 OFDM/OQAM&#xff08;正交频分复用/正交四分之一幅度调制&#xff09;是一种高效的无线通信系统&#xff0c;采用PHYDYAS&#xff08;物理层动态接入&#xff09;滤波器来优化性能。这种系统的设计主要目的是提高频谱效率、…

【工具栏】Rainbow Brackets(彩虹括号) 插件的安装和使用

使用前 这一段代码里有这么多括号&#xff0c;找到相匹配的括号需要花点时间 &#xff0c;但是安装Rainbow Brackets插件后&#xff0c;代码在括号方面多一份美观 安装 效果如下&#xff1a;

Cmake 中的list介绍

这个链接非常好&#xff0c;都有例子。 https://www.jianshu.com/p/89fb01752d6f

考研英语高频打卡

高频词汇13——15抽背答案 1、colleague /ˈkɒliːɡ/ 考频20&#xff08;英一12 次&#xff0c;英二8 次&#xff09; n. 同事&#xff0c;同僚 2、despite /dɪˈspaɪt/ 考频19&#xff08;英一12 次&#xff0c;英二7 次&#xff09; prep. 不管&#xff0c;不顾 3、overa…

数字化新时代,智慧社区再升级:低代码平台助您轻松打造

随着科技的飞速发展&#xff0c;社区的数字化转型已成为大势所趋。党的二十大报告提出&#xff0c;要“完善网格化管理、精细化服务、信息化支撑的基层治理平台&#xff0c;健全城乡社区治理体系”&#xff0c;更是为社区数字化建设&#xff0c;打造智慧社区指明了方向和路径。…

软件测试|如何使用pycharm实现批量替换

简介 PyCharm是一款功能强大的Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;提供了许多实用的功能来提高开发效率。其中&#xff0c;替换功能是一个非常有用的工具&#xff0c;它可以帮助开发者快速地在代码中查找并替换特定的文本。本文将详细介绍PyCharm的替换…

腾讯NUS推出下一代多模态智能,支持2/3D视觉、听觉、触觉、脑电

多模态感知一直是通用人工智能发展的关键领域。理想中的智能体能像人类一样感知多种模态信息&#xff0c;如视觉、听觉、嗅觉、触觉等&#xff0c;并与用户进行自然交互。然而&#xff0c;现有的大型模型虽然在图像和文字上表现出色&#xff0c;但对其他模态&#xff08;如3D点…

韩国LG集团在 CES2024 消费电子展上发布的的无线透明OLED屏幕

国际消费类电子产品展览会&#xff08;International Consumer Electronics Show&#xff0c;简称CES&#xff09;&#xff0c;由美国电子消费品制造商协会&#xff08;简称CTA&#xff09;主办&#xff0c;旨在促进尖端电子技术和现代生活的紧密结合。该展始于1967年&#xff…

超维空间M1无人机使用说明书——61、ROS无人机物体识别与精准投放

引言&#xff1a;基于空中物流的项目背景。我们提供了使用基于诗句的物体识别和精准投放、降落。实现原理如下&#xff1a; 1、在ROS下使用机载电脑实现物体识别 2、记载电脑根据反馈的位置发布运动控制指令 3、PX4解析机载电脑发布的命令&#xff0c;作出运动控制 4、设置…

PHP在线考试平台管理系统源码带文字搭建教程和操作手册

PHP在线考试平台管理系统源码带文字搭建教程和操作手册 技术架构 PHP7.2 Thinkphp6 React UmiJs nginx mysql5.7 cnetos7以上 宝塔面板 系统功能特性与介绍 采用PHP7强类型&#xff08;严格模式&#xff09;。 题库管理 支持多种试题类型和录题方式。 考生管理 快速导入考…

Maven的pom文件引用以及下载失败

背景&#xff1a;项目中使用到新版本的aspose-words组件&#xff0c;但是引用失败&#xff1b; pom.xml中引用,但是maven 仓库没有aspose-words 后续版本&#xff0c;所以需要在pom中配置 aspose-words的官网。 <dependencies><dependency><groupId>com.as…