day27javaweb核心
Tomcat&Servlet
web相关内容回顾
软件架构
C/S
客户端/服务器
B/S
浏览器/服务器
资源分类
静态资源
所有用户访问后得到的结果都是一样的。如html css JavaScript
动态资源
每个用户访问相同资源后,得到的结果可能不一样,如servlet/jsp,php,asp……
客户通过浏览器中地址栏,输入域名,访问对象的网址,浏览器会将请求传输给服务器,客户访问的资源有两种,一种是静态资源,一种是动态资源; 如果客户访问的是静态资源,则服务器会响应请求,直接将静态资源返回给浏览器,浏览器收到静态资源,会用浏览器自带的静态资源解析器进行解析展示在网页上; 如果客户访问的是动态资源,则浏览器会响应请求,先将动态资源转为静态资源,再按照静态资源的方式返回给浏览器
网络通信三要素
IP
电子设备在网络中的唯一标识
端口
应用程序在计算机中的为欸一标识 0~65536,自己写端口号不要写1024以内的端口号
传输协议
规定了数据通信(传输)的规则
基础协议:tcp协议(安全可靠,三次握手)速度稍慢 udp:不安全协议,速度快
Tomcat(8.0版本) web服务器软件
什么是服务器
安装了服务器软件的计算机
服务器软件
接收用户的请求,处理请求,做出响应
web服务器软件
在web服务器软件中,可以部署web项目,让用户通过浏览器来访问项目;例如html主页,css资源等放在web服务器软件中,让客户通过浏览器访问到这些项目 web服务器软件又称为web容器
常见的Java相关的web服务器软件
webLogic: oracle公司的,大型的JavaEE服务器,支持所有的JavaEE规范,收费的
webSpghere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的
JBOSS:JBOSS公司的,大型的JavaEE服务器,支持所有的JavaEE规范,收费的
Tomcat:Apache基金组织的,中小型JavaEE服务器,仅仅支持少量的JavaEE规范 ;开源的,免费的。
JavaEE:Java语言在企业级开发中使用的技术规范的总和,一共规定了13项大的规范
tomcat软件
软件目录结构
bin:可执行文件
conf:配置文件
lib:依赖jar包
logs:日志文件
temp:临文件
webapps:存放web项目
work:存放运行时的数据
启动
bin目录-startup.bat文件,双击运行,开启tomcat软件,在不关闭的情况下,在浏览器中输入:http://127.0.0.1:8080;(8080是tomcat默认的端口号)或者http://localhost:8080
启动中可能遇到的问题
1.黑窗口一闪而过
原因:没有正确配置JAVA_HOME环境变量: 解决方法:正确配置JAVA_HOME环境变量
2.启动报错
原因:端口号被占用 解决方法: 1.找到占用的端口号,并且找到对应的进程,杀死该进程 在dos窗口中输入netstat -ano | findStr "8080" 在本地地址栏中找到结尾是8080的一行, 记住其PID,打开资源管理器,在上方菜单栏中选择查看——选择列,将PID勾选,再查询刚刚记住的PID,找到之后右键结束进程 2.修改本身程序的端口号 在安装目录中找到conf目录,找到server.xml,找到 port="8080",下面还有一个 8443 ,还有其他的端口号,都修改就可以了,不建议这样解决
关闭
正常关闭
在bin目录中点击shutdown.bat
2.在启动的窗口按ctrl+c 关闭
强制关闭 不推荐
点击启动窗口的x
后期会用集成开发软件进行tomcat的启动和关闭
配置(部署项目的方式)
1.直接将项目放到webapps目录下,访问的时候在端口号后面加“/项目的虚拟路径” 简化部署:将项目打成一个war包,放在webapps目录下,会自动解压缩 缺点:需要拷贝
2.配置conf/server.xml文件 在<Host>标签体中配置 <Context docBase="D:\hello" path="/hehe" /> * docBase:项目存放的路径 * path:虚拟目录
3.3. 在conf\Catalina\localhost创建任意名称的xml文件。在文件中编写 <Context docBase="D:\hello" /> * 虚拟目录:xml文件的名称
静态项目和动态项目
Java动态项目的目录结构:
-- 项目的根目录 -- WEB-INF目录: -- web.xml:web项目的核心配置文件 -- classes目录:放置字节码文件的目录 -- lib目录:放置依赖的jar包
将tomcat集成到IDEA中,创建JavaEE的项目,部署项目 (很重要)
Servlet入门学习 (server applet)
概念
运行在服务器端的小程序; Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则
servlet执行原理
用户在浏览器中输入一个url地址的时候,例如http://localhost:8080/ServletDemo01/demo02,首先服务器会通过地址的IP和端口号(localhost:8080)可以找到网络上的具体的某个主机和应用程序,比如8080就找到了tomcat这个程序,接着通过后面的虚拟目录(/ServletDemo01)找到tomcat下面部署的项目,然后再根据后面的资源路径(/demo02),tomcat会进行一个解锁的操作,会去web项目的核心配置文件web.xml里面去找<url-pattern>里面有没有一个demo02的,接着找到通过映射中的<servlet-class>去找到一个类的全类名,接着将全类名对应的类的字节码文件加载进内存,创建对象,然后调用这个类中的server方法,因为这个类实现了servlet接口,就必须要重写servlet中的抽象方法,抽象方法中就有service方法,所以tomcat知道这个类中一定会有service方法,所以在service中的代码会被执行
servlet生命周期
servlet的方法
innt方法:初始化方法;在servlet被创建时执行,只会执行一次
service方法:提供服务方法;每一次servlet被访问时执行,会执行多次
destroy方法:销毁方法;在服务器正常关闭时执行,只会执行一次;
servletConfig:servlet的配置对象 返回servletConfig
getservletinfo:获取servlet一些信息,如版本,作者等……
生命周期的详解
init
servlet什么时候被创建:默认情况下,第一次被访问时,servlet被创建;可以配置指定servlet的创建时机, 在<servlet>标签下配置,<load-on-startup>参数</load-on-startup> 服务器启动时创建,参数为负数,则第一次访问被创建,默认-1,如果时正数或者0(一般给0~10之间);则服务器启动时创建
init方法只执行一次说明一个servlet在内存中只存在一个对象,servlet是单例(有且仅有一个对象)的; 多个用户同时访问时可能存在线程安全问题, 解决方法:尽量不要在servlet中不要定义成员变量。即使要定义成员变量,也不要对其修改值;
service方法
每次访问都被调用一次
每请求一次,tomcat会为创建一个新的线程,在这个线程中调用service()方法
destroy
服务器关闭时,servlet被销毁,前提时正常关闭才执行,一般用于释放资源
servlet注解配置
创建JavaEE项目,选择servlet的版本3.0以上,就可以不创建web.xml
定义一个类,实现Servlet接口,覆写方法
在类的上面使用@WebServlet注解,进行配置 @WebServlet("资源路径")
|
|