servlet和tomcat安装

Author:Exchanges

Version:9.0.2

一、引言


1.1 C/S架构和B/S架构

C/S和B/S是软件发展过程中出现的两种软件架构方式。

1.2 C/S架构(Client/Server 客户端/服务器)

  • 特点:必须在客户端安装特定软件

  • 优点:图形效果显示较好(如:3D游戏)

  • 缺点:服务器的软件和功能进行升级,客户端也必须升级、不利于维护

  • 常见的C/S程序:QQ、微信等

C/S架构
C_S

1.3 B/S架构(Browser/Server 浏览器/服务器)

  • 特点:无需安装客户端,任何浏览器都可直接访问

  • 优点:涉及到功能的升级,只需要升级服务器端

  • 缺点:图形显示效果不如C/S架构

  • 需要通过HTTP协议访问

B/S架构
B_S

1.4 资源分类

1、静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源.静态资源可以直接被浏览器解析。

如: html,css

2、动态资源:每个用户访问相同资源后,得到的结果可能不一样。称为动态资源。动态资源被访问后,需要先转换为静态资源,再返回给浏览器。

如:servlet/jsp....

1.5 网络通信三要素

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

2、端口:应用程序在计算机中的唯一标识。 0~65536

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

基础协议:

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

udp:不安全协议。 速度快

二 、服务器


2.1 概念

2.1.1 什么是Web

Web(World Wide Web) 称为万维网,简单理解就是网站,它用来表示Internet主机上供外界访问的资源。

Internet上供外界访问的资源分为两大类

  • 静态资源:指Web页面中供人们浏览的数据始终是不变的。(HTML、CSS)

  • 动态资源:指Web页面中供人们浏览的数据是由程序产生的,不同时间点,甚至不同设备访问Web页面看到的内容各不相同。(JSP/Servlet)

  • 在Java中,动态Web资源开发技术我们统称为Java Web。

2.1.2 什么是Web服务器

Web服务器是运行及发布Web应用的容器,只有将开发的Web项目放置到该容器中,才能使网络中的所有用户通过浏览器进行访问,简单来说,就是安装了服务器软件的计算机。

web服务软件的作用:把本地的资源共享给外部访问

2.2 常见服务器

  • 开源:OpenSource(1、开放源代码 2、免费)

    • Tomcat(主流Web服务器之一)

    • jetty(淘宝,运行效率比Tomcat高)

    • resin(新浪,所有开源服务器软件中,运行效率最高的)

    • 三者的用法从代码角度完全相同,只有在开启、关闭服务器软件时对应的命令稍有区别。掌握一个即掌握所有

  • 收费

    • WebLogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。

    • WebSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。

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

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

2.3 Tomcat服务器

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,免费开源、并支持Servlet 和JSP 规范。目前Tomcat最新版本为9.0。

Tomcat 技术先进、性能稳定,深受Java 爱好者喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

2.4 Tomcat安装

2.4.1 下载

官网下载(http://tomcat.apache.org/) Tomcat8.5解压缩版本

2.4.2 解压安装

将Tomcat解压到一个没有特殊符号的目录中(一般纯英文即可)

注意

  • 不建议将服务器软件放在磁盘层次很多的文件夹

  • 不建议放在中文路径下

2.4.3 Tomcat目录结构
文件夹说明备注
bin 该目录下存放的是二进制可执行文件 startup.bat启动Tomcat、shutdown.bat停止Tomcat
conf 这是一个非常重要的目录,这个目录下有两个最为重要的文件server.xml和web.xml server.xml:配置整个服务器信息。例如修改端口号,编码格式等。 web.xml:项目部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。
lib Tomcat的类库,里面存放Tomcat运行所需要的jar文件。  
logs 存放日志文件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,异常也会记录在日志文件中。  
temp Tomcat的临时文件,这个目录下的东西在停止Tomcat后删除。  
webapps 存放web项目的目录,其中每个文件夹都是一个项目;其中ROOT是一个特殊的项目,在地址栏中没有给出项目目录时,对应的就是ROOT项目。  
work 运行时生成的文件,最终运行的文件都在这里。 当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再编译Java文件生成class文件,生成的java和class文件都会存放到这个目录下。

2.5 Tomcat启动和停止

2.5.1 启动

进入tomcat安装目录bin下,双击startup.bat 启动程序,出现如下界面

Tomcat启动控制台

可能遇到的问题:

1、黑窗口一闪而过:

原因: 没有正确配置JAVA_HOME环境变量

解决方案:正确配置JAVA_HOME环境变量

2、启动报错(可能端口号重复):

找到占用的端口号,并且找到对应的进程,杀死该进程

也可修改自身的端口号,在conf/server.xml文件中修改

2.5.2 验证

打开浏览器,输入 http://localhost:8080

如果出现以下界面证明Tomcat启动成功。

Tomcat访问页面
2.5.3 停止

双击shutdown.bat即可关闭Tomcat启动窗口。

2.5.4 修改端口号

Tomcat默认端口号为8080,可以通过conf/server.xml文件修改

 <Connector port="8080" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443" />
2.5.5 访问资源

Tomcat是Web服务器,我们的项目应用是部署在webapps下(不能单独存在需要创建目录),然后通过特定的URL访问。

浏览器地址中输入URL:http://localhost:8080/myweb/hello.html

URL主要有4部分组成:协议、主机、端口、资源路径]()

URL组成
url
2.5.6 集成IDEA

将Tomcat集成到IDEA中,并且创建JavaEE的项目,部署项目。 Run -->> Edit Configurations -->> Templates -->> Tomcat Server -->> Local

三 、Servlet【重点


3.1 概念

  • Servlet:Server Applet的简称,是服务器端的程序(代码、功能实现),可交互式的处理客户端发送到服务端的请求,并完成操作响应。

  • 动态网页技术

  • JavaWeb程序开发的基础,JavaEE规范(一套接口)的一个组成部分。

  • 概念:运行在服务器端的小程序,用于开发动态资源!!!

3.1.1 Servlet作用
  • 接收客户端请求,完成操作。

  • 动态生成网页(页面数据可变)。

  • 将包含操作结果的动态网页响应给客户端。

3.2 Servlet开发步骤

3.2.1 搭建开发环境

1.创建创建JavaEE项目,并导入servlet-api.jar包

3.2.2 编写Servlet

2.定义一个类,继承HttpServlet,重写doGet/doPost方法

3.2.3 配置Servlet

在web.xml中配置

<servlet>
<servlet-name>ServletDemo1</servlet-name>
<servlet-class>com.company.servlet.ServletDemo1</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>ServletDemo1</servlet-name>
<url-pattern>/ServletDemo1</url-pattern>
</servlet-mapping>

3.3 运行测试

启动Tomcat,在浏览器地址栏中输入http://localhost:8080/ServletDemo1访问测试

3.4 常见错误

3.4.1 500错误

服务端出现异常

500错误
3.4.2 404错误

找不到页面,一般是访问的路径不存在

Pictures\007.png

3.5 执行原理

1、当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径

2、查找web.xml文件,是否有对应的<url-pattern>标签体内容。

3、如果有,则在找到对应的<servlet-class>全类名

4、tomcat会将字节码文件加载进内存,并且创建其对象

5、调用其方法

3.5 生命周期

1、Servlet中的生命周期: servlet类对象什么时候创建,什么时候调用什么方法,什么时候销毁。 2、Servlet程序的生命周期由tomcat服务器控制的。 3、Servlet生命周期的方法在Servlet接口中实现。 3.1 构造方法: 创建servlet对象的时候调用,默认情况下,第一次访问servlet的时候创建servlet对象 只调用1次。证明servlet对象在tomcat是单实例的。 3.2 init方法: 创建完servlet对象的时候调用,只调用1次。 3.3 service方法: 每次发出请求时调用,调用n次。 3.4 destroy方法: 停止服务器或者重新部署web项目,销毁servlet对象的时候调用,只调用1次。

3.6 自动加载

默认情况下,第一次访问servlet的时候创建servlet对象,如果servlet的构造方法或init方法中执行了比较多的逻辑代码,那么导致用户第一次访问sevrlet的时候比较慢,我们可以改变servlet创建对象的时机,在servlet的配置信息中,加上一个<load-on-startup>标签,提前到加载web应用的时候创建,标签内数字如果是0或者正数则启动程序时创建,如果是负数,则访问时创建。 数字越小优先级越高。

3.7 多线程并发问题

1、注意: servlet对象在tomcat服务器是单实例多线程的。 2、因为servlet是多线程的,所以当多个servlet的线程同时访问了servlet的共享数据,如成员变量,可能会引发线程安全问题。 解决办法: 1)把使用到共享数据的代码块进行同步(使用synchronized关键字进行同步) 2)建议在servlet类中尽量不要使用成员变量。如果确实要使用成员,必须同步。而且尽量缩小同步代码块的范围。(哪里使用到了成员变量,就同步哪里!!),以避免因为同步而导致并发效率降低。

3.8 Servlet3.0

Servlet3.0 好处:

1、支持注解配置。可以不需要web.xml了。

2、步骤:

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

定义一个类,实现Servlet接口

复写方法

在类上使用@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 "";
}
  • name: Serlvet名字 (可选)

  • value: 配置url路径,可以配置多个

  • urlPatterns:配置url路径 ,和value作用一样,不能同时使用

  • loadOnStartup:配置Servlet的创建的时机,

3.9 Servlet的体系结构

Servlet -- 接口 ​ | GenericServlet -- 抽象类 ​ | HttpServlet -- 抽象类

  • GenericServlet:将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象

  • 将来定义Servlet类时,可以继承GenericServlet,实现service()方法即可

  • HttpServlet:对http协议的一种封装,简化操作

  1. 定义类继承HttpServlet

  2. 复写doGet/doPost方法

3.10 Servlet访问路径相关配置

urlpartten:Servlet访问路径 ​ 1. 一个Servlet可以定义多个访问路径 : @WebServlet({"/xxx","/yyy","/zzz"}) ​ 2. 路径定义规则: ​ 1. /xxx:路径匹配 ​ 2. /xxx/xxx:多层路径,目录结构 ​ 3. *.do:扩展名匹配

注意:url路径访问时,先找动态资源,再找静态资源

posted @ 2021-09-29 21:39  张三疯321  阅读(68)  评论(0编辑  收藏  举报