首页 > 其他分享 >tomcat和Servlet的一些基础认识(今天两篇,手都打累了,头秃的第n天)

tomcat和Servlet的一些基础认识(今天两篇,手都打累了,头秃的第n天)

时间:2023-01-03 20:34:09浏览次数:66  
标签:web 浏览器 tomcat JAVAEE 访问 打累 Servlet

Web相关概念回顾

​ 1,软件架构:

​ C/S:客户端/服务端

​ B/S:浏览器/服务端

​ 2,资源分类

​ 静态资源:所有用户访问后,得到的结果是一样的,称为静态资源

​ 静态资源可以直接被浏览器解析,用户请求访问静态资源的过程,称之为 请求

​ 如:html , css , js

​ 动态资源: 用户访问后,得到的结果不一定是一样的,称为动态资源

​ 动态资源需要先转化为静态资源,再被浏览器解析,返回给用户,这个过程称之为 响应

​ 如:servlet jsp php asp

​ 3,网络通信三要素

​ 1,IP : 电子设备(计算器)在网络中的唯一标识。

​ 2,端口 : 应用程序在计算器中的唯一标识。范围(065535),但尽量不要取(11024)的端口号,这些端口号可能被系统占用

​ 3,传输协议 : 规定了数据传输的规则

​ 1,基础协议:

​ tcp : 安全协议,三次握手 。 但速度稍慢

​ udp : 不安全歇息,但速度稍快

Tomcat

web服务器软件

​ 服务器 : 安装了服务器软件的计算机

​ 服务器软件 : 接受用户的请求,处理请求,做出响应

​ web服务器软件:接收用户的请求,处理请求,做出响应

​ 在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目

​ web容器

​ java常见的web服务器软件:

​ webLogic : oracle公司的,大型的JAVAEE服务器,支持所有的JAVAEE规范 收费的。

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

​ webSphere : IBM公司的,大型的JAVAEE服务器,支持所有的JAVAEE规范 收费的。

​ JBOSS : JBOSS公司的,大型的JAVAEE服务器,支持所有的JAVAEE规范 收费的。

​ Tomcat : Apache 基金组织,中小型的JAVAEE服务器,仅支持少量的JAVAEE规范,但它开源,免费啊!!!能白嫖为什么要给钱?

Tomcat的学习流程:

1,下载

既然是免费的,那肯定走官网啊!

Apache Tomcat® - Welcome!

然后左边会有版本号,现在我用的是8,点一下在往下滑,选择适合电脑位数的压缩包

2,安装

将下载的压缩包直接解压就行,注意路径不要有中文和空格

3,卸载

直接把解压后的文件夹删除就好了………………

(吐槽,tomcat的安装和卸载是真的离谱!)

4,启动

在启动这儿说一下tomcat的文件结构,如图:

启动,在bin目录下,双击 startup.bat 文件,就可以启动,如果是 Lunxi 系统 点那个 startup.sh

启动完成后,去浏览器输入

http://localhost:8080/

会出现tomcat的一个网页。

这里可以在cmd里面,用 ipconfig 查询自己的 ip 地址 ,然后用自己的 ip 地址代替上面的 localhost

按网上的说法,只要我服务器开着,其他人在电脑上输入我的 ip:8080 是能访问我这个tomcat的,但目前我还没尝试成功

​ 可能遇到的问题:

​ 1,黑窗口一闪而过:

​ 原因:没有正确配置 JAVA_HOME 环境变量(自己网上找教程)

​ 2,启动报错:

​ 原因:端口号被占用

​ 解决:

​ 1,暴力:找到占用的端口号,并且找到对应的进程,杀死该进程

​ 1,先在cmd,输入 netstat -ano 找到占用了该端口号的进程的 pid

​ 2,在任务管理器中找到pid相同的进程,关闭它

​ win7任务管理器默认没有显示pid,需要自己调一下,win10在详细信息里面

​ 2,温柔:修改自身端口号

​ 在conf目录下个server的文件, 点进去,找到所有的端口的属性(大概有6个,好像),全改了就OK

​ ps:对自己好点,直接杀死吧

5,关闭

​ 1,正常关闭:

​ 1,启动 bin 目录下的 shutdowm.bat 文件,就关闭了

​ 2,可以使用 ctrl+c 关闭

​ 2,强制关闭:

​ 点击窗口关闭键。

6,配置

​ 部署项目的方式:

​ 1,直接将项目放到webapp目录下

​ 然后在浏览器里输入 http://localhost:8080/项目名/要访问的文件名

​ 将项目打成一个后缀名为war 的压缩包,再放在webapps目录下。

​ 2,配置 conf 目录下的 server.xml 文件

​ 在 标签体中配置

​ docBase : 项目存放的路径

​ path : 虚拟目录

​ 后面通过服务器访问,直接用虚拟目录就可以

http://localhost:8080/虚拟目录/要访问的文件名

​ 3,在 conf 目录下的 Catalina 目录下的 localhost 创建任意名称的 xml 文件 ,文件中只用写

​ 只写这一句就行,虚拟目录就是该xml的文件名

http://localhost:8080/xml文件名/要访问的文件名

​ 这种就叫热部署

​ 7,在 idea 上部署 tomcat 。。。。这个建议百度,我懒得一步一步截图,推荐b站09_tomcat_与IDEA集成&创建web项目_哔哩哔哩_bilibili这个视频里面去看吧。

Servlet

​ 概念: 运行在服务器端的小程序

​ 其实就是一个接口,定义了Java类被浏览器(Tomcat识别)的规则

​ 这样解释吧,浏览器的动态资源,是需要遵循一定的逻辑才能获取,这个逻辑就是由java类来判断,但这个java类的运行,是在tomcat服务器上运行(我直接理解为,不在jvm虚拟机上运行),但tomcat毕竟不是jvm虚拟机,它只认识一定规范的java类,这个规范就是Servlet

​ 我们自己写个类,实现Servlet接口,重写方法

​ 快速入门:

	## 1,创建JavaEE项目

​ 百度,谢谢

2,定义一个类,实现Servlet接口

public class Servlet_t1 implements Servlet 

3,实现接口中的抽象方法

​ idea有快捷键,自己弄

4,配置Servlet

在WEB-INF目录下的web.xml文件中,的标签内写

	<servlet>
        <servlet-name>test1</servlet-name><!-- 随便写 -->
        <servlet-class>com.example.demo.Servlet_t1</servlet-class><!-- 需要链接的类的全类名 -->
    </servlet>
    <servlet-mapping>
        <servlet-name>test1</servlet-name><!-- 和上面那个保持一致 -->
        <url-pattern>/test1</url-pattern><!-- 链接 -->
    </servlet-mapping>

​ 这样写后,当你需要调用这个类后,只需要打开服务器,在浏览器中访问,http://localhost:8080/test1就可以调用了

​ 这里说一下原理吧。其实也不难,其实主要就是前面学的反射

​ 拿上面的代码举例吧:

​ 浏览器访问http://localhost:8080/test1

​ 先通过localhost:8080 找到主机和端口号,

​ 然后去该项目的 web.xml 文件里的找有没有文本内容为 /test1 的标签,

​ 没有就报404,

​ 有就去拿同父节点下的标签内容,

​ 拿到了再去找 标签中的标签,找到内容相同的,

​ 再拿同一个 标签中的标签中的内容(这个内容是全类名)

​ 最后通过反射,创建该类对象,又因为该类必须继承自Servlet 类,所以肯定重写了,void service() 方法,通过反射创建对象后直接调用该方法

Servlet的方法

下面是继承Servlet接口后需要重写的5个方法,具体效果写注释了

  /**
     *初始化方法,
     * 在Servlet 被创建时执行,会执行一次
     * @param servletConfig
     * @throws ServletException
     */
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("Servlet 开始执行");
    }

    /**
     * 获取ServletConfig对象
     * ServletConfig:Servlet的配置对象
     * @return
     */
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    /**
     * 提供服务的方法
     * 每一次Servlet被访问的时候都会被执行
     * @param servletRequest
     * @param servletResponse
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("HELLO , SERVLET!");
    }

    /**
     * 获取Servlet的一些信息,版本,作者等等
     * @return
     */
    @Override
    public String getServletInfo() {
        return null;
    }

    /**
     * 销毁方法
     * 在服务器正常关闭时,执行,
     * 执行一次
     */
    @Override
    public void destroy() {
        System.out.println("Servlet 关闭");
    }

Servlet 的生命周期

​ 1,被创建

​ 执行init方法,只执行一次

​ Servlet 什么时候被创建?

​ 默认情况下:第一次被访问的时候,Servlet被创建

​ 可以修改配置,使Servlet在服务器启动时被创建

​ 在 web.xml 文件里,找到该 Servlet 全类名的那个标签,在该标签下添加

<!-- 
	指定Servlet的创建时机
	1,第一次被访问时,创建
 			则x为负数(不要写太小)
	2,在服务器启动时,创建
			则x为0或者正整数(不要写太大)
-->
<load-on-startup>x(一个数)</load-on-startup>

​ 这里说一下,一个Servlet的init方法,只执行一次,说明Servlet在内存中只存在一个对象,Servlet 是单例的!

​ 多个用户同时访问的时候,可能会设计到线程安全问题

​ 解决方法:尽量不要在Servlet的类中定义成员变量,即使定义了成员变量,也不要修改其值,直接弄final修饰吧

​ 2,提供服务

​ 执行service方法 ,执行多次

​ 3,被销毁

​ 执行destroy方法,执行一次

​ 这个方法可以理解为,人死之前的遗言,也就是说还没死呢,先执行这个方法,释放资源什么的,再销毁程序

Servlet3.0

​ 好处:

​ 可以使用注解配置

​ 步骤:

​ 1,创建JAVAEE项目,选择Servlet的版本3.0以上,可以不创建web.xml

​ 2,定义一个类,实现Servlet接口

​ 3,重写方法

​ 4,在类上使用@webServlet 注解 ,进行配置

	@WebServlet("Servlet的资源路径")

​ 这是最简单的写法,建议可以去看看注解类,不过我写累了,不想写了

注意事项

​ 不要把文件写到,WEB-INF目录下,浏览器是没办法直接访问这个目录的!

标签:web,浏览器,tomcat,JAVAEE,访问,打累,Servlet
From: https://www.cnblogs.com/fssnjcl/p/17023302.html

相关文章

  • tomcat 日志切割
    修改前的tomcat都是将所有数据保存在一个日志文件catalina.out中,平时实验环境下没有什么问题,但是在生产环境中,由于数据量巨大,会导致日志查看困难,因此将日志通过某些方......
  • CentOS7部署tomcat10
    CentOS7部署tomcat10查看tomcat与jdk版本对应关系https://tomcat.apache.org/whichversion.html  一、先安装jdk 1.下载jdk    官网下载如有旧版本请先卸......
  • 【线上问题】Tomcat部分接口偶发出现请求时间过长问题排查
    参考资料​​tomcat响应过慢——解决办法-CodingPanda​​服务器处理客户端请求线程只升不降问题分析总结_cuidongdong1234的博客_服务线程数不降怎么回事​​​​线程数......
  • springboot @WebServlet为什么能生效
    示意图简述1. springboot启动类通过注解@ServletComponentScan,注入了指定的BeanFactoryPostProcessor,用来扫描@WebServlet等指定的类,将扫描到的LoginServlet类作......
  • tomcat
    web服务器简介:Tomcat:由Apache组织提供的一种Web服务器,提供对jsp和Servlet的支持。它是一种轻量级的javaWeb容器(服务器),也是当前应用最广的JavaWeb服务器(免费)。Jboss:是一个......
  • Servlet
    前言在微人事的项目中,我们看到了很多HttpServletRequestrequest,HttpServletResponseresponse作为参数传入到某个方法中,它通常作为HttpServlet中的service()方法传......
  • tomcat与servlet
    在idea创建一个javaweb项目时,会自动生成web.xml文件,如下图这个文件主要用来配置web应用使用到servlet当中的<servlet><servlet-name>HelloServlet</servlet-name......
  • 【JavaWeb】Http get请求乱码、post请求乱码,html页面乱码、jsp页面乱码,控制台tomcat日
    目录​​1、乱码原因和解决思路​​​​2、准备知识(新手必读,老司机跳过)​​​​2.1字符集​​​​2.2URL编码​​​​2.3 javawebservlet ​​​​3 浏览器编码/解码......
  • Tomcat页面管理
    1、添加WEB管理用户vimapache-tomcat-9.0.58/conf/tomcat-users.xml#添加WEB管理用户,账号tomcat密码tomcat<rolerolename="tomcat"/><rolerolename="rol......
  • JAVA内存马之Servlet马
    0x01前置知识我们知道的Tomcat创建Servlet的过程分为五部加载:当Tomcat第一次访问Servlet的时候,Tomcat会负责创建Servlet的实例初始化:当Servlet被实例化后,Tomcat会调用i......