客户端概述
概述
与用户进行交互,用于接收用户的输入(操作),展示服务器端的数据以及向服务器传递数据
常见客户端
浏览器
手机APP
物联网设备
服务器概述
概述
- 从硬件而言:服务器是计算机的一种,它比普通计算 机运行更快、负载更高、价格更贵。
- 从软件而言:服务器其实就是安装在计算机上的一个软件,根据其作用的不同又可以分为各种不同的服务器,例如 应用服务器、数据库服务器(mysql)、Redis服务器、DNS服务器、ftp服务器等等
作用
与客户端进行交互,接收客户端的数据、处理具体的业务逻辑、传递给客户其需要的数据。
常见硬件服务器
刀片服务器
塔式服务器
机房
软件服务器
tomcat、mysql、redis、es。。。
服务器操作系统
比商用操作系统更加稳定,比如:Linux、Unix、windows server...
-
程序开发三个阶段
-
开发阶段
- windows 、macos,比如:windows版的mysql、macos版的mysql…
-
测试阶段
- linux环境中
-
生产阶段
- linux
-
服务器端应用程序
概述
可以在应用上运行的程序。比如:京东、淘宝、滴滴等等
三种方案
最有钱:硬件+windows sever+tomcat+应用程序
稍微有点
云服务器(阿里云、腾讯云、华为云。。。)+虚拟机+Linux+tomcat+应用程序
没钱
Windows系统+虚拟机+Linux+tomcat+应用程序
tomcat服务器概述
- 概述
- tomcat时apache软件基金会的jakatai项目组的一个核心项目,由apache、sun和其他一些 公司及个人共同开发而成。由于有了sun公司的参与和支持,最新的servlet、jsp规范总是能 在tomcat中得到体现。因为tomcat技术先进、性能稳定,而且免费,所以深受java爱好者 的喜爱并得到了部分软件开发商的认可,成为目前比较流行的web应用服务器。
-
- 概述
- tomcat时apache软件基金会的jakatai项目组的一个核心项目,由apache、sun和其他一些 公司及个人共同开发而成。由于有了sun公司的参与和支持,最新的servlet、jsp规范总是能 在tomcat中得到体现。因为tomcat技术先进、性能稳定,而且免费,所以深受java爱好者 的喜爱并得到了部分软件开发商的认可,成为目前比较流行的web应用服务器。
- 下载
- 安装
- 解压即可
- 启动tomcat、关闭tomcat
- 点击startup.bat
- 点击shutdown.bat
- 验证tomcat启动成功
- 在浏览器中输入"http://localhost:8080/"
- Apache Tomcat® - Apache Tomcat 9 Software Downloads
- 安装
- 解压即可
- 启动tomcat、关闭tomcat
- 点击startup.bat
- 点击shutdown.bat
- 验证tomcat启动成功
- 在浏览器中输入"http://localhost:8080/"
- 在浏览器中输入"http://localhost:8080/"
tomcat相关配置
- JAVA_HOME配置
- tomcat运行需要jdk环境,支持JAVA_HOME环境变量,如果不是这种方式,tomcat会启动失败闪退
- 端口号配置
- tomcat默认端口:8080
- tomcat默认端口:8080
tomcat安装目录结构说明
- 结构说明
结构 | 说明 |
---|---|
bin | 存储tomcat的可执行文件,比如:startup.bat、shutdown.bat |
conf | 存储tomcat的配置文件,比如:server.xml、web.xml |
lib | 存储tomcat运行所需的jar包,比如:servlet-api.jar、jsp-api.jar |
logs | 存储tomcat运行产生的日志文件 |
temp | 存储tomcat运行产生的临时文件 |
webapps | 部署应用程序 |
work | 存储jsp文件转译之后的java文件 |
Web应用程序
概述
可以在服务器中运行,且可以别浏览器访问,也叫web应用
web应用包括:html、css、JavaScript、servlet等等
项目结构
WEB.IF目录
web.xml(当前文本项目的配置文件)
tomcat部署web应用程序
①方式一
直接将web应用存储到webapps目录
②方式二
修改servlet.xml,在host标签中添加如下内容
③方式三
- 在"\conf\Catalina\localhost"新建一个hello.xml,内容如下:
<Context docBase="C:\Users\qiuzhiwei\Desktop\webproject" />
- 项目的访问路径就是xml文件名称
idea部署web应用程序
- 开发步骤
- ①新建javaweb项目
- 2019版idea,创建时勾选Web Application
- 2020版idea及以上,创建后勾选Web Application
- ②当前javaweb项目设置tomcat插件
- ③将当前javaweb项目部署到tomcat
- ④启动服务器并测试
- ①新建javaweb项目
- ①新建javaweb项目
- ②当前javaweb项目设置tomcat插件
- ③将当前javaweb项目部署到tomcat
- ④启动服务器并测试
- http://ip:port/项目访问路径/资源访问路径
idea部署web应用程序补充一
- 总结
- tomcat副本
- 起到隔离的作用,防止当前项目出错,影响到tomcat服务器中的其他项目
- 项目目录 : E:\workspace\211018\web05
- 用于写代码和存放资源的位置
- 部署目录 : E:\workspace\211018\web05\out\artifacts\web05_war_exploded
- 用于部署资源的位置
- tomcat副本
- 注意事项
- settings -> build,execution,deployement -> compiler -> 勾选build project automatically
idea部署web应用程序补充二
- 概述
- 资源在项目目录,但是不一定会到部署目录。
- ①资源在web目录
- 会部署,直接在项目目录下
- ②资源在src目录
- 会部署,在项目目录下的WEB-INF目录下的classes目录下
- ③资源在当前项目下
- 不会部署
- 思考
- 资源在web目录,如果子目录”img/girl4.jpg“,会把子目录和资源一起部署!!!
- 注意事项
- 部署到WEB-INF目录中的资源是受保护的,外部无法直接访问,只能内部访问。
http协议概述
- 概述
- hyper text transfer protocol : 超文本传输协议
- 基于TCP/IP协议
- 客户端和服务器之间交互遵守的规则
- 组成
- http请求
- http响应
http请求概述
- 概述
- 客户端请求服务器
- 组成
- 请求行
- 请求头
- 请求正文
- 请求行
- Request URL :请求资源的路径
- Request Mehtod : 请求范式
- GET :
- 请求参数都会拼接到URL后面
- 安全性低
- 携带的数据量少
- POST
- 请求参数在请求正文
- 安全性高
- 携带的数据量大
- GET :
- protocol
- http协议的版本信息,HTTP/1.1
- 请求头
- Content-Type : 告诉服务器,请求正文的mimeType
- User-Agent : 告诉服务器,浏览器的信息
- Connection : 告诉服务器,连接的状态
- Cookie : 会话技术
- 请求正文
- 首先,有请求参数,其次,必须是post请求。
http响应概述
- 概述
- 服务器响应客户端
- 组成
- 响应行
- Status Code : 响应状态码
- 200 : 响应成功
- 404 : 资源未找到
- 304 : 页面内容没有改变,使用缓存
- 500 : 服务器代码错误
- 302 : 重定向
- …
- Status Code : 响应状态码
- 响应头
- location : 重定向,配合状态码302使用
- Content-Type : 告诉浏览器,响应正文的mimeType
- Content-Disposition : 告诉浏览器,必须打开下载窗口
- Refresh : 告诉浏览器,定时跳转资源
- Set-Cookie : 会话技术
- 响应正文
- 服务器发送给浏览器的数据
- 响应行
Servlet
Servlet介绍及入门
存在问题
之前的java程序无法字啊服务器中运行,没有对应的处理请求和处理响应的API
概述
A servlet is a small Java program that runs within a Web server. Servlets receive and respond to requests from Web clients, usually across HTTP, the HyperText Transfer Protocol.
Servlet是一个可以运行在web服务器中的ava程序。Servlet可以接受和响应来自客户端的请求。通常通过HTTP协议。
开发步骤
-
自定义继承HttpServlet
重写方法 -
配置自定义Servlet
将自定义的Servlet声明到tomcat容器中
给自定义的Servlet设置访问路径 -
①自定义继承HttpServlet
public class Demo01Servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//处理get请求
System.out.println("Hello World");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//处理post请求
doGet(req, resp);
}
}
- ②配置自定义Servlet
<!--将自定义Serlvet声明到tomcat容器中-->
<servlet>
<servlet-name>Demo01Servlet</servlet-name>
<servlet-class>com.atguigu.servlet.Demo01Servlet</servlet-class>
</servlet>
<!--给自定义Servlet设置访问路径-->
<servlet-mapping>
<servlet-name>Demo01Servlet</servlet-name>
<url-pattern>/demo01</url-pattern>
</servlet-mapping>
-
注意事项
Javaweb项目需要手动导入服务器的编译环境
Servlet执行流程
Servlet关系视图
Servlet的其他两种实现方式
- ①继承GenericServlet
public class Demo02Sevlet extends GenericServlet {
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("hello world");
}
}
<servlet>
<servlet-name>Demo02Sevlet</servlet-name>
<servlet-class>com.atguigu.servlet.Demo02Sevlet</servlet-class>
</servlet>
<!--给自定义Servlet设置访问路径-->
<servlet-mapping>
<servlet-name>Demo02Sevlet</servlet-name>
<url-pattern></url-pattern>
</servlet-mapping>
- ②实现Servlet
public class Demo03Servlet implements Servlet {
@Override
public void init(ServletConfig config) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("hello world");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
<servlet>
<servlet-name>Demo03Servlet</servlet-name>
<servlet-class>com.atguigu.servlet.Demo03Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Demo03Servlet</servlet-name>
<url-pattern>/demo03</url-pattern>
</servlet-mapping>
总结
- 这两种实现Servlet的方式,开发中并不使用,因为GenericServlet、Servlet中并没有针对HTTP协议的相关属性和方法。
Servlet生命周期
生命周期:一个事物的出生(创建)到死亡(销毁)
- Servlet的出生由init方法监听。Servlet的死亡有destroy方法j监听
- 如果开发人员想监听Servlet的出生和死亡,重写init和destroy方法
代码实现
总结
- Servlet创建:第一次访问
- 只创建一次Servlet,这就叫单例模式 ,回村子线程安全问题 - Servlet销毁:关闭服务器