文章目录
1. Web概述和Tomcat服务器
1.1 使用tomcat前的准备
- 安装并配置jdk
- 下载并解压Tomcat
- 配置环境变量
变量名:CATALINA_HOME
变量值:刚刚安装的路径
1.2 tomcat的目录结构
目录名 | 作用 |
---|---|
bin | 专门用来存放Tomcat服务器的可执行程序 |
conf | 存放Tomcat的配置文件 |
lib | 存放Tomcat的jar包 |
logs | 存放Tomcat服务器运行时输出的日志 |
temp | 存放Tomcat运行时产生的临时数据 |
webapps | 存放部署的Web工程 |
work | Tomcat的工作时目录 |
1.3 启动和关闭Tomcat服务器
启动Tomcat服务器
-
找到Tomcat目录下的bin中的startup.dat, 双击启动。
-
打开命令行, cd到bin下, catalina run指令
关闭Tomcat服务器
-
关闭命令窗口
-
找到bin下的shutdown.bat执行
-
将Tomcat服务窗口置于当前页面, ctrl+c
测试Tomcat
-
http://locathost:8080
-
http://127.0.0.1:8080
-
http://真实IP:8080
1.4 Tomcat的其他设置
-
修改端口号
找到Tomcat目录下的conf目录, 找到Server.xml修改端口号
-
配置主机名
-
部署web工程
把Web工程目录拷贝到Tomcat目录下的webapps中
-
用手托的方式和在http:ip 端口号/工程名访问的区别
用手托使用的是file://协议
在浏览器中输入http://使用的是http协议当我们在浏览器地址栏中输入访问地址, 没有工程名时, 默认访问的是root工程
当我们在浏览器地址栏中输入访问地址, 没有资源名时, 默认访问index文件
网站访问的原理
1. 输入域名,回车
2. 在本地的c:/windows/System32/drivers/Etc/Hosts配置文件下有没有这个域名映射
有 返回对应的ip地址
没有 去dns服务器中寻找 找到放回
1.5 Web概述
-
JavaWeb是什么?
JavaWeb是动态Web资源开发技术, 所有通过Java语言编写可以通过浏览器访问的程序总称, 叫做JavaWeb JavaWeb是基于请求和响应来开发的
-
什么是请求?
请求(Request)是指客户端给服务器发送数据。
-
什么是响应?
响应(Response)是指服务器给客户端回传数据。
-
两者之间的联系?
有请求就有响应!
-
Web资源的分类
Web资源按实现的技术和呈现的效果不同, 又分为静态资源和动态资源两种
静态资源: html css js txt MP4 jpg
动态资源: jsp页面 Servlet程序… -
常用的Web服务器
Tomcat jboss GlassFish Resin WebLogic.....
1.6 动态Web工程目录
2. Servlet程序
2.1 Servlet介绍
- Servlet是JavaEE的规范之一,规范就是接口。
- Servlet是JavaWeb三大组件之一, 三大组件分别是:Servlet程序, listener监听器, filter过滤器。
- Servlet是运行在服务器端的一个java小程序, 它可以接收客户端的请求, 并响应数据。
2.2 实现Servlet的方式
-
方式1: 实现Servlet接口
1. 编写类实现Servlet接口 2. 实现Service方法, 处理请求并响应数据 3. 在Web.xml中配置Servlet程序的访问地址
-
方式2: 继承HttpServlet
1. 编写类继承httpServlet 2. 重写doGet doPost方法(Service方法做了分发处理) note: 如果重写了init方法需要在第一行加上super.init(config); 3. 到web.xml中配置Servlet的访问地址
Web.xml的执行过程
配置Web.xml
Mapping的配置
-
mapping可以指定多个资源路径(多指定几个Servlet-mapping)
-
mapping可以指定通用路径(*)
-
mapping可以自定义后缀
*.xxx
2.3 Servlet的继承体系
2.4 Servlet生命周期
1. 类加载,然后执行Servlet构造方法
2. web容器执行init()初始化方法初始化Servlet容器
前两步, 是在第一次创建Servlet程序时会调用
3. 执行service方法
每次执行都会调用
4. 执行destroy销毁方法
工程停止时会调用
2.5 Servlet实现原理
1.浏览器向服务器发出GET请求(请求服务器ServletA)
2.服务器上的容器逻辑接收到该url,根据该url判断为Servlet请求,此时容器逻辑将产生两个对象:请求对象(HttpServletRequest)和响应对象(HttpServletResponce)
3.容器逻辑根据url找到目标Servlet(本示例目标Servlet为ServletA),且创建一个线程A
4.容器逻辑将刚才创建的请求对象和响应对象传递给线程A
5.容器逻辑调用Servlet的service()方法
6.service()方法根据请求类型(本示例为GET请求)调用doGet()(本示例调用doGet())或doPost()方法
7.doGet()执行完后,将结果返回给容器逻辑
8.线程A被销毁或被放在线程池中
注意:
- 在容器中的每个Servlet原则上只有一个实例
- 每个请求对应一个线程
- 多个线程可作用于同一个Servlet(这是造成Servlet线程不安全的根本原因)
- 每个线程一旦执行完任务,就被销毁或放在线程池中等待回收
2.6 Servlet常用类
2.6.1 ServletConfig
ServletConfig在访问Servlet程序时由Tomcat创建, 是Servlet的配置文件
ServletConfig的作用
- 获取别名
this.getServletConfig().getServletName(); - 获取初始化参数init-param(需要在servlet下配置)
this.getServletConfig().getInitParameter(“root”); - 获取ServletContext上下文对象
this.getServletConfig().getServletContext();
2.6.2 ServletContext
-
ServletContext介绍
1. ServletContext是一个接口, 它表示Servlet的上下文对象 2. 一个Web工程只有一个ServletContext对象实例(全局唯一性) 3. ServletContext是一个域(存取数据的操作范围)对象 类似map对象 存操作 setAttribute() 取操作 getAttribute() 删除操作 removeAttribute() 4. ServletContext在web工程部署时启动, 在停止工程时销毁
-
ServletContext的作用
- 共享数据(域对象) 、请求转发、获取上下文参数context-param
getServletConfig().getServletContext().getInitParameter(“String s”) - 获取当前的工程路径, 格式:/工程路径
getContextPath()
获取工程部署后在服务器硬盘上的绝对路径
getRealPath("/")
注: /被服务器解析地址为: http://ip:port/工程名/ 映射到IDEA代码web目录上 - 像map一样存取数据
setA
- 共享数据(域对象) 、请求转发、获取上下文参数context-param