Tomcat && Servlet
web相关概念回顾
1、软件架构
1,C/S:客户端/服务器端
2、B/S:浏览器/服务器端
2、资源分类
(浏览器当中含有静态资源的解析引擎)
1、静态资源:所有用户访问看到的效果一样。静态资源可以直接被浏览器解析
如:html,css,JavaScript
2、动态资源:每一个用户访问相同资源得到的效果不太一样。动态资源被访问时,先转换为静态资源,再返回给浏览器
如:servlet,jsp,php,asp....
3、网络通信三要素(TCP三次握手)
1、IP:电子设备(计算机)在网络中的唯一标识
2、端口:应用程序在计算机中的唯一标识。0~65536
3、传输协议:规定了数据传输的规则
1.基础协议
1.TCP:安全协议,三次握手。速度慢
2.UDP:不安全协议,广播。速度快
tomcat(web服务器软件)
是什么?
服务器:安装了服务器软件的计算机(配置高)
服务器软件:接受用户的请求,处理请求,做出响应。
web服务器软件:接受用户的请求,处理请求,做出响应。
* 在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目
* web容器
常见的java相关的web服务器软件:
* Tomcat:Apache基金组织,中小型的JavaEE服务器,仅仅支持少量的JavaEE规范servlet/jsp。开元的,免费的。
Tomacat:web服务器软件
1.下载
2.安装:解压即可(安装目录建议不要有中文和空格)
bin:可执行文件
conf:配置文件
lib:依赖jar包
logs:日志文件
temp:临时文件
*webapps:存放web项目
work:存放运行时的数据
3.卸载:删除就可
4.启动:bin/startup.bat,访问http://localhost:8080或者http://别人的ip:8080
可能遇到的问题:
1.黑窗口一闪而过:
* 原因:没有正确配置JAVA_HOME环境变量
* 解决方案:正确配置JAVA_HOME环境变量
2.启动报错
* 解决方案:
1.暴力:找到占用的端口号,并且找到对应的进程,杀死该进程
查看端口号:netstat -ano
定位具体端口号的进程:netstat -ano | findStr "8080"
终止进程:taskkill /F /PID (PID号)
2.温柔:修改自身的端口号
conf目录中server.xml修改端口号
5.关闭:
1.正常关闭:bin/shutdown.bat或者Ctrl+c
2.强制关闭:点击启动窗口的×
6.配置
怎么用
* 如何将Tomcat集成到idea中,并且创建javaEE项目,部署项目。
run--edit Configrations--Defaults--tomcat(Local)--加载tomcat文件
新建项目--新建module--java Enterprise--Java EE 7--勾选Web Application
设置自动更新以及默认访问路径Run--edit Configrations--Tomcat Server--Server--Update resources
--Deployment--Application context--/项目名
servlet(server applet)--单例多线程 3.0规范
1、是什么?
概念:运行在服务器端的小程序
* servlet就是一个接口,定义了Java类被浏览器访问(tomcat识别)到的规则
* 将来我们自定义一个类,实现Servlet接口,复写方法
快速入门:
1.创建javaEE的项目
2.定义一个类,实现Servlet接口
3.实现接口中的抽象方法
4.配置servlet
在web.xml中进行配置
执行原理:
1.当服务器接收到客户端浏览器的请求后,会解析请求的URL路径,获取访问的Servlet的资源路径
2. 查找web.xml文件,是否有对应的<url-pattern>标签体内容。
3. 如果有,则在找到对应的<servlet-class>全类名
4. tomcat会将字节码文件加载进内存,并创建其对象
5. 调用其方法
怎么引入
写法
生命周期(API)
1.init() //在Servlet被创建时执行,只会执行一次
可以配置执行servlet的创建时机
在<servlet>标签下配置
<load-on-startup></load-on-startup>:里面写0或正整数则项目启动时执行init(),正数最小写2
里面写负数则第一次访问时执行
servlet的init方法,只执行一次,说明一个servlet在内存中只存在一个对象
* 多个用户同时访问时,可能存在线程安全问题
* 解决:尽量不要在servlet中定义成员变量。即使定义了成员变量,也不要对其修改值
2.service() //每次访问地址都会被触发
3.destory() //在服务器正产关闭时执行,只会执行一次
* Servlet被销毁时执行。服务器关闭时,Servlet被销毁。
* 只有服务器正常关闭时,才会执行destory方法。
* destory在servlet被销毁之前执行,一般用于释放资源。
xml
注解
idea工具如何整合我们的项目和tomcat