Web流程、Web服务器软件、Servlet
1.Web流程
1.1软件架构
C/S:客户端/服务器端
有指定的客户端,比如PC端淘宝APP或者手机端淘宝APP或者QQ的APP等;需要依赖一个特定的客户端来访问。
B/S:浏览器/服务器端
基于浏览器,比如网页版百度,网页版淘宝等;只要有浏览器,通过地址就可以访问。
1.2资源分类
静态资源
所有用户访问后,得到的结果都是一样的,称为静态资源
静态资源可以直接被浏览器解析,如: html,css,JavaScript
所有用户访问后,得到的结果是一致的。
动态资源
每个用户访问相同资源后,得到的结果可能不一样。称为动态资源。
动态资源被访问后,需要先转换为静态资源,在返回给浏览器,如:servlet/jsp,php,asp…
1.3网络通信三要素
IP:电子设备(计算机)在网络中的唯一标识
端口:应用程序在计算机中的唯一标识。 0~65536
传输协议:规定了数据传输的规则
基础协议
tcp:安全协议,三次握手。 速度稍慢
udp:不安全协议。 速度快
1.4通信流程
前端发送请求
根据路径信息,访问后台接口
请求路径中,包含协议:ip地址、端口号、路径
通过ip地址找到服务器
通过端口号,找到web服务器程序
通过具体路径,找到执行的代码

后端收到请求后
对请求进行处理,完成后响应前端
后端处理数据时
与数据库进行交互,完成数据操作

2.Web服务器软件
2.1概念
服务器:安装了服务器软件的计算机
服务器软件:接收用户的请求,处理请求,做出响应。
web服务器软件:接收用户的请求,处理请求,做出响应。
在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目,实际上可以理解为web容器。
2.2 常见的与java相关的服务器软件
webLogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
webSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
JBOSS:JBOSS公司的,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
Tomcat:Apache基金组织,中小型的JavaEE服务器,仅仅支持少量的JavaEE规范servlet/jsp。开源的,免费的。
2.3 Tomcat
2.3.1简介
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
2.3.2下载安装与卸载
官网下载:http://tomcat.apache.org/
安装:解压压缩包即可
注意:安装目录建议不要有中文和空格
目录介绍
bin :可以执行文件
conf:配置文件
lib:第三方依赖包
logs:日志文件
temp:临时文件夹
webapps:部署项目
启动、访问、关闭
启动
bin/startup.bat ,双击运行该文件即可
访问
浏览器输入http://localhost:8080 访问自己
http://别人的ip:8080 访问别人
关闭
bin/shutdown.bat,双击运行该文件即可
修改端口号
Conf目录下的server.xml文件中

修改8080为想要的端口即可
3.Servlet
3.1 概述
Servlet(Server Applet)是Java Servlet的简称
小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类。
Sevlet是java为了能够进行web服务器端编程而设置的一系列标准。
我们自定义的java类,只要实现了对应的标准,就可以称作servlet。
标准 : javax.servlet.Servlet接口
Servlet运行于支持java的应用服务器中,也就是说servlet的运行需要依赖于容器,而我们安装的Tomcat 就是这个容器。
从原理上来讲,servlet可以响应任何类型的请求。但是绝大多数的情况下servlet只用来扩展基于HTTP协议的web服务器。
所以,我们的servlet实现类,也可以继承HttpServlet;
HttpServlet是基于HTTP协议开发的servlet标准,该类也实现了servlet接口。

3.2 端口冲突问题

报这个错误说明端口被占用了8080 / 8005;
解决方案:
① 如果是tomcat启动了多次,导致端口被占用。把原来的Tomcat关闭,再重新启动即可。
② 如果是其他软件占用了8080的话;
可以更改Tomcat的端口,也可以把其他软件关闭;

任务管理器关闭 对应PID的进程即可

3.3 创建servlet项目
步骤:
1 创建项目
2 创建class
3 实现 servlet接口
4 覆写对应的方法
5 注册和映射
6 请求/响应

web.xml中进行注册和映射
在web.xml中 添加映射关系
进行Servlet注册

映射

注解配置

运行项目
浏览器请求 127.0.0.1:8080/…
请求执行java代码
http://localhost:8080/_01Servlet/hello

3.4 执行原理与流程

当我们发生请求的时候,先执行web.xml匹配路由(映射 url-pattern)
未匹配成功 报错 404;
匹配成功,就执行对应的servlet类中的java代码;
先执行init且只执行一次;
然后执行service方法,每次请求都会执行;
当关闭Tomcat服务的时候,destory才会执行且只执行一次。
3.5生命周期

从创建Servlet对象开始一直到死亡的一个执行过程
先执行构造方法,用于创建Servlet对象
执行init()方法做初始化操作
执行service()/doGet()/doPost()方法处理真正的逻辑操作和数据交互
执行destroy()方法进行资源释放和销毁

3.6 HttpServlet
创建一个类,继承HttpServlet类
覆写doGet()/doPost()方法
HttpServletRequest request
代表了客户端向服务器发送过来的请求对象
HttpServletResponse response
代表了服务器向客户端发送回来的响应对象
response.setContentType(“text/html;charset=utf-8”);
设置返回的类型和字符编码
类型有好多,在TomCat的安装路面下,conf/web.xml里面
中的类型都可以进行设置

response.getWriter().println();
向页面输出内容
out.write()是字节输出流的方法
out.print()/out.println()是字符输出流的方法
区别
类不同
print方法是子类JspWriter
write是Writer类中定义的方法
重载不同
重载的print方法可将各种类型的数据转换成字符串的形式输出
重载的write方法只能输出字符、字符数组和字符串等与字符相关的数据
字符串对象的值为null
JspWriter类型的out对象使用print方法和write方法都可以输出字符串
print方法将输出内容为“null”的字符串
write方法则是抛出NullPointerException异常

3.7 Request
Http中请求消息格式
POST /login.html HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost/login.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
请求行
请求方式
请求url 请求协议/版本 GET /login.html HTTP/1.1
HTTP协议有7中请求方式
GET
请求参数在请求行中,在url后
请求的url长度有限制的
不太安全
POST
请求参数在请求体中
请求的url长度没有限制的
相对安全
请求头
客户端浏览器告诉服务器一些信息
格式 请求头名称: 请求头值
常见的请求头
User-Agent
浏览器告诉服务器,我访问你使用的浏览器版本信息
Referer
http://localhost/login.html
告诉服务器,我(当前请求)从哪里来?
作用
防盗链
统计工作
请求空行
空行,就是用于分割POST请求的请求头和请求体的
请求体(正文)
封装POST请求消息的请求参数
3.8 Request对象
request对象和response对象的原理
request和response对象是由服务器创建的。我们来使用它们
request对象是来获取请求消息,response对象是来设置响应消息
HttpServletRequest对象
继承ServletRequest接口
封装HTTP请求消息
Request功能
获取请求消息数据
获取请求行数据
获取请求方式 :GET
String getMethod()
获取虚拟目录
String getContextPath()
获取Servlet路径
String getServletPath()
获取get方式请求参数
String getQueryString()
获取请求URI
String getRequestURI()
StringBuffer getRequestURL()
获取协议及版本
String getProtocol()
获取客户机的IP地址
String getRemoteAddr()
获取请求头数据
String getHeader(String name):通过请求头的名称获取请求头的值
Enumeration getHeaderNames():获取所有的请求头名称
获取请求体数据
只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数
获取流对象
BufferedReader getReader():获取字符输入流,只能操作字符数据
ServletInputStream getInputStream():获取字节输入流,可以操作所有类型数据
再从流对象中拿数据
其他功能
获取请求参数通用方式
不论get还是post请求方式都可以使用下列方法来获取请求参数
String getParameter(String name):根据参数名称获取参数值
String[] getParameterValues(String name):根据参数名称获取参数值的数组
Enumeration getParameterNames():获取所有请求的参数名称
Map<String,String[ ]> getParameterMap():获取所有参数的map集合
请求转发
一种在服务器内部的资源跳转方式
通过request对象获取请求转发器对象
RequestDispatcher getRequestDispatcher(String path)
使用RequestDispatcher对象来进行转发
forward(ServletRequest request, ServletResponse response)
特点
浏览器地址栏路径不发生变化
只能转发到当前服务器内部资源中
转发是一次请求
共享数据
域对象
一个有作用范围的对象,可以在范围内共享数据
request域
代表一次请求的范围,一般用于请求转发的多个资源中共享数据
方法
void setAttribute(String name,Object obj):存储数据
Object getAttitude(String name):通过键获取值
void removeAttribute(String name):通过键移除键值对
获取ServletContext
ServletContext getServletContext()

Web流程、Web服务器软件、Servlet相关推荐

  1. Web服务器软件--Servlet入门学习

    Web相关概念 软件架构 1. C/S:客户端/服务器端 2. B/S:浏览器/服务器端 资源分类 静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源.静态资源可以直接被浏览器解析 如: h ...

  2. Web常用的服务器软件整理(Win+Linux)

    本文编辑:富哥 素材整理:葵芳IDC (1)ApacheApache是世界使用的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上.Apache源于NCSAhttpd服务器,经过多次修改,成 ...

  3. java day37【web相关概念回顾 、web服务器软件:Tomcat 、Servlet入门学习】

    第一章  web相关概念回顾 1. 软件架构 1. C/S:客户端/服务器端 2. B/S:浏览器/服务器端 2. 资源分类 1. 静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源.静态资 ...

  4. 主流七款WEB服务器软件点评

    如今互联网的WEB平台种类繁多,各种软硬件组合的WEB系统更是数不胜数,下面就来介绍一下几种常用的WEB服务器: 1.Microsoft IIS Microsoft的Web服务器产品为Internet ...

  5. web服务器软件_概述

    * 服务器:安装了服务器软件的计算机 * 服务器软件:接收用户的请求,处理请求,做出响应 * web服务器软件:接收用户的请求,处理请求,做出响应.     * 在web服务器软件中,可以部署web项 ...

  6. 一、Web服务器——Tomcat Servlet学习笔记

    今日内容 web相关概念回顾 web服务器软件:Tomcat Servlet入门学习 一.web相关概念回顾 软件架构 C/S:客户端/服务器端 B/S:浏览器/服务器端 资源分类 静态资源:所有用户 ...

  7. 常用的web服务器软件有哪些

    (1)ApacheApache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上.Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软 ...

  8. 免费开源的几款Web服务器软件简介

    由于最近在部署云服务器主机,在对Web服务器软件的选型方面进行了摸索,把笔记记下来,便于以后查阅. 一.NGINX 俄罗斯人Igor Sysoev从2002年开始开发NGINX,并在2004年发布了第 ...

  9. 常用的web服务器软件整理(转载)

    (1)ApacheApache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上.Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软 ...

最新文章

  1. TCP连接的状态转换图深度剖析
  2. 刚进美团,就被各种Code Review,真的有必要吗?
  3. Thrift Java Servers Compared
  4. boost::mp11::construct_from_tuple相关用法的测试程序
  5. 51nod 1572 宝岛地图 (预处理四个方向的最大步数优化时间,时间复杂度O(n*m+k))
  6. java j2se1.5_用J2SE1.5建立多任务的Java应用程序...
  7. android 字定义GridView 引用自己的定义布局
  8. Navicat工具安装及建表语句
  9. 2018年9月杭州云栖大会Workshop - 基于日志的安全分析实战
  10. Fast dev didn't succeed, trying another location
  11. 《C++ Primer Plus》14.2 私有继承 学习笔记
  12. Fiddler-半自动构造少量数据
  13. js之面向对象编程,封装 继承 多态(详细篇)
  14. python中tab的用法_详解Python中expandtabs()方法的使用
  15. Matlab R2009b 版 license 到期问题
  16. 敏捷软件开发第26章STAIRWAY TO HEAVEN设计模式C++源码
  17. 苹果软件上app注意事项
  18. MySQL之高性能的索引策略(索引优化)
  19. You probably need to get an updated matplotlibrc file from解决方法
  20. 凯云水利水电工程造价系统 (五) 补充定额

热门文章

  1. 泰拉瑞亚自建服务器,Terraria泰拉瑞亚服务器开服架设教程windows
  2. 【面试篇】寒冬求职季之你必须要懂的原生JS(中)
  3. TexLive安装报错does not map to cp936
  4. 做数据集的代码在这里
  5. 记录一段js代码匹配JSON的值
  6. 什么是死锁,怎么检查死锁?
  7. 如果写一个点击view带动画的下滑展开显示隐藏内容的控件
  8. Python Tkinter 按钮鼠标悬停事件显示说明信息设置
  9. string类型转LPCWSTR
  10. 小米什么时候宣布搭载鸿蒙系统,“小米使用鸿蒙系统”乌龙对后续会有影响吗...