Web(九)

news2024/9/22 13:44:55

Web服务器软件Tomcat


web服务器软件:

  •     服务器:安装了服务器软件的计算机
  •     服务器软件:接收用户的请求,处理请求,做出响应
  •     web服务器软件:接收用户的请求,处理请求,做出响应。 在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目; web容器

   常见的java相关的web服务器软件:


        webLogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
        webSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
        JBOSS:JBOSS公司的,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
        Tomcat:Apache基金组织,中小型的JavaEE服务器,仅仅支持少量的JavaEE规范servlet/jsp。开源的,免费的。


    * JavaEE:Java语言在企业级开发中使用的技术规范的总和,一共规定了13项大的规范

    * Tomcat:web服务器软件
        1. 下载:http://tomcat.apache.org/
        2. 安装:解压压缩包即可。
            * 注意:安装目录建议不要有中文和空格


        3. 卸载:删除目录就行了
        4. 启动:
            * bin/startup.bat ,双击运行该文件即可
            * 访问:浏览器输入:http://localhost:8080 回车访问自己
                              http://别人的ip:8080 访问别人

 


            
            * 可能遇到的问题:
                1. 黑窗口一闪而过:
                    * 原因: 没有正确配置JAVA_HOME环境变量
                    * 解决方案:正确配置JAVA_HOME环境变量

 

                2. 启动报错:
                    1. 暴力:找到占用的端口号,并且找到对应的进程,杀死该进程
                        * netstat -ano,找到相应端口号的PID,打开任务管理器,根据PID查找后结束该进程
                    2. 温柔:修改自身的端口号
                        * conf/server.xml
                        * <Connector port="8888" protocol="HTTP/1.1"
                           connectionTimeout="20000"
                           redirectPort="8445" />
                        * 一般会将tomcat的默认端口号修改为80。80端口号是http协议的默认端口号。
                            * 好处:在访问时,就不用输入端口号
        5. 关闭:
            1. 正常关闭:
                * bin/shutdown.bat
                * ctrl+c
            2. 强制关闭:
                * 点击启动窗口的×
        6. 配置:
            * 部署项目的方式:
                1. 直接将项目放到webapps目录下即可。
                    * /hello:项目的访问路径-->虚拟目录
                    * 简化部署:将项目打成一个war包,再将war包放置到webapps目录下。
                        * war包会自动解压缩

                2. 配置conf/server.xml文件
                    在<Host>标签体中配置
                    <Context docBase="D:\hello" path="/hehe" />

                                                                        (不安全)
                    * docBase:项目存放的路径
                    * path:虚拟目录

                3. 在conf\Catalina\localhost创建任意名称的xml文件。在文件中编写
                    <Context docBase="D:\hello" />
                    * 虚拟目录:xml文件的名称

            
            * 静态项目和动态项目:
                * 目录结构
                    * java动态项目的目录结构:
                        -- 项目的根目录
(root)
                         
   -- WEB-INF目录:
                                -- web.xml:web项目的核心配置文件
                                -- classes目录:放置字节码文件的目录
                                -- lib目录:放置依赖的jar包


            * 将Tomcat集成到IDEA中,并且创建JavaEE的项目,部署项目。

 default(+)中有Tomcat 

 选择相应的Tomcat目录

创建项目

 

 

 

Servlet入门学习

Servlet:  server applet


    * 概念:运行在服务器端的小程序
        * Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。
        * 将来我们自定义一个类,实现Servlet接口,复写方法。

 


    * 快速入门:
        1. 创建JavaEE项目
        2. 定义一个类,实现Servlet接口
            * public class ServletDemo1 implements Servlet
        3. 实现接口中的抽象方法
        4. 配置Servlet
             在web.xml中配置:
            <!--配置Servlet -->
            <servlet>
                <servlet-name>demo1</servlet-name>
                <servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>
            </servlet>
        
            <servlet-mapping>
                <servlet-name>demo1</servlet-name>
                <url-pattern>/demo1</url-pattern>
            </servlet-mapping>

    * 执行原理:
        1. 当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径
        2. 查找web.xml文件,是否有对应的<url-pattern>标签体内容。
        3. 如果有,则在找到对应的<servlet-class>全类名
        4. tomcat会将字节码文件加载进内存,并且创建其对象
        5. 调用其方法

    * Servlet中的生命周期方法:
        1. 被创建:执行init方法,只执行一次
            * Servlet什么时候被创建?
                * 默认情况下,第一次被访问时,Servlet被创建
                * 可以配置执行Servlet的创建时机。
                    * 在<servlet>标签下配置
                        1. 第一次被访问时,创建
                            * <load-on-startup>的值为负数
                        2. 在服务器启动时,创建
                            * <load-on-startup>的值为0或正整数


            * Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
                * 多个用户同时访问时,可能存在线程安全问题。
                * 解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对修改值

        2. 提供服务:执行service方法,执行多次
            * 每次访问Servlet时,Service方法都会被调用一次。
        3. 被销毁:执行destroy方法,只执行一次
            * Servlet被销毁时执行。服务器关闭时,Servlet被销毁
            * 只有服务器正常关闭时,才会执行destroy方法。
            * destroy方法在Servlet被销毁之前执行,一般用于释放资源

    * Servlet3.0:
        * 好处:
            * 支持注解配置。可以不需要web.xml了。

        * 步骤:
            1. 创建JavaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml
            2. 定义一个类,实现Servlet接口
            3. 复写方法
            4. 在类上使用@WebServlet注解,进行配置
                * @WebServlet("资源路径")


                @Target({ElementType.TYPE})
                @Retention(RetentionPolicy.RUNTIME)
                @Documented
                public @interface WebServlet {
                    String name() default "";//相当于<Servlet-name>
                
                    String[] value() default {};//代表urlPatterns()属性配置
                
                    String[] urlPatterns() default {};//相当于<url-pattern>
                
                    int loadOnStartup() default -1;//相当于<load-on-startup>
                
                    WebInitParam[] initParams() default {};
                
                    boolean asyncSupported() default false;
                
                    String smallIcon() default "";
                
                    String largeIcon() default "";
                
                    String description() default "";
                
                    String displayName() default "";
                }

## IDEA与tomcat的相关配置
    1. IDEA会为每一个tomcat部署的项目单独建立一份配置文件
        * 查看控制台的log:Using CATALINA_BASE:   "C:\Users\fqy\.IntelliJIdea2018.1\system\tomcat\_itcast"

    2. 工作空间项目    和     tomcat部署的web项目
        * tomcat真正访问的是“tomcat部署的web项目”,"tomcat部署的web项目"对应着"工作空间项目" 的web目录下的所有资源
        * WEB-INF目录下的资源不能被浏览器直接访问。
    3. 断点调试:使用"小虫子"启动 dubug 启动

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

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

相关文章

说话人识别损失函数的PyTorch实现与代码解读

概述 说话人识别中的损失函数分为基于多类别分类的损失函数&#xff0c;和端到端的损失函数&#xff08;也叫基于度量学习的损失函数&#xff09;&#xff0c;关于这些损失函数的理论部分&#xff0c;可参考说话人识别中的损失函数本文主要关注这些损失函数的实现&#xff0c;…

SQL 分组条件深入剖析

问题在 stackoverflow 网站上看到这样一个 SQL 分组条件的需求&#xff0c;需求看似挺简单&#xff0c;但能把 SQL 写正确对于新手来说也不容易&#xff0c;我们拿过来深入剖析一下&#xff0c;数据如下&#xff1a;需求是查找只有Ready 状态的设备。解答自然思路&#xff1a;按…

寅辞旧岁,卯定常虹丨ASKO洗碗机“净”护新春团圆时刻

农历新年是一年中最重要的节日&#xff0c;但过去三年的特殊时光阻碍了很多人的归乡之行&#xff0c;如今当阴霾逐渐散去&#xff0c;必然会引来大规模的新年归乡潮&#xff0c;奔赴一个久违的团圆年。美馔佳宴是新春佳节的永恒命题&#xff0c;新年家里少不了亲友的光临&#…

Windows 7的最后一个版本

前天推送的文章介绍了&#xff0c;在1月10日微软发布了最后一个补丁后&#xff0c;微软为Windows7提供的所有更新(包括收费的ESU)已经完全终止。以后再有新的补丁&#xff0c;则为第三方平台提供的非官方版的了。 早在2022年9月份&#xff0c;微软就发布了支持安全启动UEFI的补…

DocPrompt代码实现与模型微调

数据预处理阶段 PaddleOCR PP-Structure&#xff1a;这个库其实是用于版面分析的一个开源库&#xff0c;参见&#xff1a;github: Layout-Parser/layout-parserhttps://github.com/Layout-Parser/layout-parser 代码推理阶段 Paddle-Inferencehttps://paddle-inference.readt…

图形编辑器:工具管理和切换

大家好&#xff0c;我是前端西瓜哥。今天我们看看对于一款图形编辑器&#xff0c;应该怎么去实现工具&#xff0c;比如绘制矩形、选中工具&#xff0c;以及如何去管理它们的。 项目地址&#xff0c;欢迎 star&#xff1a; https://github.com/F-star/suika 线上体验&#xff1a…

【改进篇】Python实现VRP常见求解算法——蚁群算法(ACO)

基于python语言&#xff0c;实现经典蚁群算法&#xff08;ACO&#xff09;对车辆路径规划问题&#xff08;CVRP&#xff09;进行求解&#xff0c; 优化代码结构&#xff0c;改进Split函数 目录往期优质资源1. 适用场景2. 改进效果对比2.1实验结果2.2 改进前后算法性能对比3. 求…

臻图信息构建数字孪生港口船舶停靠管理系统,赋能港口创新发展

我国的港口不仅是船只停靠的避风港&#xff0c;也是现代渔业发展和管理的中心。随着国内港口业的不断发展&#xff0c;国务院在《现代综合运输体系发展“十四五”规划》中提出&#xff0c;要自动化、数字化、智能化等技术来完善监管体系建设。 ​ 随着科技兴港战略的提出&…

“零”代码改动,静态编译让太乙Stable Diffusion推理速度翻倍

作者&#xff5c;梁德澎 AI 作图领域的工具一直不尽人意&#xff0c;直到去年 8 月 Stable Diffusion 开源&#xff0c;成为AI 图像生成领域无可争辩的划时代模型。 为了提升其推理效率&#xff0c;OneFlow 首度将 Stable Diffusion 模型加速至“一秒出图”时代&#xff0c;极…

2023牛客寒假算法基础集训营2(11/12)

Tokitsukaze and abn (easy)Tokitsukaze and abn (medium)要使abn&#xff0c;那么转换一下就是bn-a&#xff0c;所以只需要计算[n-L,n-R]和[L,R]相交的部分即可AC代码&#xff1a;#include <bits/stdc.h> using namespace std; using LL long long; int main() {ios::s…

6. 基本数据类型

1. Python 中的变量不需要声明 每个变量在使用前都必须赋值&#xff0c;变量赋值以后该变量才会被创建。在 Python 中&#xff0c;变量就是变量&#xff0c;它没有类型&#xff0c;我们所说的"类型"是变量所指的内存中对象的类型。 counter 100 # 整型 mile…

关于Win11打开文档总是提示“选择一个程序打开”的问题

这边异常情况&#xff1a; 使用的360浏览器下载回来的文档、微信下载回来的文档都会出现标题所说的问题。 问题产生的原因&#xff1a; 初期在重装电脑后&#xff0c;将自带的一些安装系统后的第三方软件卸载掉了&#xff0c;也包括QQ浏览器。 可是在win11默认应用中看到了…

第五章SpringFramework之AOP

文章目录AOP概念及相关术语概述为什要用 AOP相关术语横切关注点Advice通知Join Point连接点Point CUT 切入点切面目标代理基于注解的SpringAOP准备工作切入点表达式语法重用切入点表达式对应的切面前置通知返回通知异常通知后置通知环绕通知切面的优先级总结Spring AOP 的实现步…

27.Isaac教程--局部建图

26.Isaac教程-局部建图 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 局部地图是机器人周围直接环境的基于网格的简化表示。 这些简化的世界表示对于安全地规划机器人附近的静态和动态障碍物至关重要。 局部建图管道将来自连接到机器人的不同传…

信息服务上线渗透检测网络安全检查报告和解决方案2(安装文件信息泄漏、管理路径泄漏、XSS漏洞、弱口令、逻辑漏洞、终极上传漏洞升级)

系列文章目录 信息服务上线渗透检测网络安全检查报告和解决方案 文章目录系列文章目录前言一、XSS漏洞漏洞危害解决方案1.参数过滤2.Cookie设置HttpOnly二、安装文件目录信息泄漏漏洞证明解决方案三、后台管理路径泄漏、暴力破解、明文传输漏洞证明解决方案四、逻辑漏洞漏洞验证…

LINUX学习之文件处理常用命令(三)

ls 命令描述 ls命令是linux系统中用来列出文件和目录的常用命令&#xff0c;它可以显示文件和目录的名称、权限、大小、修改时间等信息 以下是ls命令的常用参数: -a &#xff1a;列出全部的文件&#xff0c;连同隐藏文件-d &#xff1a;仅列出文件目录&#xff0c;而不是列…

【K哥爬虫普法】辛苦钱被中间商抽走八成,还因此锒铛入狱

我国目前并未出台专门针对网络爬虫技术的法律规范&#xff0c;但在司法实践中&#xff0c;相关判决已屡见不鲜&#xff0c;K 哥特设了“K哥爬虫普法”专栏&#xff0c;本栏目通过对真实案例的分析&#xff0c;旨在提高广大爬虫工程师的法律意识&#xff0c;知晓如何合法合规利用…

【Python百日进阶-数据分析】Day229 - plotly的动画

文章目录一、动画1.1 基本动画1.2 使用 Plotly Express 制作动画条形图1.3 当前动画限制和注意事项二、为动画添加控制按钮2.1 简单的播放按钮2.2 曲线上的移动点2.3 沿平面曲线移动 Frenet 框架2.4 使用滑块和按钮三、MRI 体积切片的可视化一、动画 使用 Plotly Express 制作…

23种设计模式(九)——抽象工厂模式【对象创建】

文章目录 意图什么时候使用抽象工厂真实世界类比解决方案抽象工厂模式的实现抽象工厂模式的优缺点亦称: Abstract Factory 意图 抽象工厂是创建型设计模式,它强调了一系列相关产品对象(属于同一个产品族)的创建过程,它和工厂方法模式的侧重点不同,工厂方法模式更加侧重于…

JUC面试(四)——ABA问题

ABA问题 从AtomicInteger引出下面的问题 CAS -> Unsafe -> CAS底层思想 -> ABA -> 原子引用更新 -> 如何规避ABA问题 假设现在有两个线程&#xff0c;分别是T1 和 T2&#xff0c;然后T1执行某个操作的时间为10秒&#xff0c;T2执行某个时间的操作是2秒&#…