public class HttpTomcat总结 {
/**
* WEB服务器
* 概念:
* web资源:一切数据文件;通过网络可以访问到的资源,通常指的是一切放到服务器上的文件
* web资源的分类:
* 静态web资源:内容是一成不变的
* 动态web资源:内容有可能在不同的时间或者不同ip访问的时候发生的
* web技术分类:
* 静态web技术:例如(HTML、CSS、JavaScript)
* 动态web技术:例如(Servlet、JSP)
* 软件的架构:开发角度 、用户角度、后期维护
* C/S架构(Client/Server 客户端/服务器):例如 :QQ、迅雷、支付宝等等APP端
* B/S架构(Browser/Server 浏览器/服务器):例如:京东、天猫、12306等等..
* 区别:
* C/S:需要客户下载客户端,一般页面比较体验比较好比较炫,和服务器交互少,可以在客户端处理部分业务逻辑,可降低服务器的压力,需要维护客户端和服务器端
* B/S:只需要客户有一个浏览器,一切页面都是从服务器加载的,和服务器交互比较频繁,由服务器处理业务逻辑,服务器压力相对大一些
* 通讯机制:基于HTTP协议
* a.浏览器发送给服务器请求->request
* b.服务器返回给浏览器响应->response
* 注意:先有请求 后有响应,一次请求一次响应
* 作用:将我们编好的web项目发布出去,其他人就可以通过网络访问到服务器上的资源
* 常见web服务器:
* weblogic oracle公司 特点:大型的收费支持javaee所有规范的web服务器(Servlet和JSP)
* websphere ibm公司 特点:同上
* Tomcat apache公司 特点:小型免费支持Servlet和jsp规范的web服务器
* Tomcat服务器
* 下载:http://tomcat.apache.org/download-70.cgi
* 目录结构:
* 配置:
* 常见问题:一闪而过 需要查看JAVA_HOME是否配置正确
* 端口占用 可以修改Tomcat端口(Tomcat目录server.xml大约70行,端口号0~65535,0~1024系统预留端口号一般不要使用,可以使用默认端口80端口)
* HTTP协议:
* 协议:规定内容的传输的格式
* http协议:用来制定互联网数据传输格式
* 包含:
* a.浏览器发送给服务器请求->request
* b.服务器返回给浏览器响应->response
* 请求格式:请求行+请求头+请求体 *
* 请求行:
* 请求方式/请求资源/协议/版本(GET/day01/index.html/HTTP/1.1)
* 请求头:
* a.Accept:text/html;image/* ->支持数据格式
* b.Accept-Charset:ISO-8859-1 ->字符集
* c.Accept-Encoding:gzip ->支持压缩
* d.Accept-Language:zh-cn ->语言环境
* e.Host:www.csdn.cn:80 ->访问主机
* f.Cookie
* 重要的头:
* Referer
* 请求体:
* 和请求头之间有个空行
* 响应格式:响应行+响应头+响应体
* 响应行
* 协议版本 响应的状态码 状态码说明(例如:HTTP/1.1 200 OK)
* 状态码:
* a.1xx:请求已发送
* b.2xx:响应已完成
* c.3xx:302重定向、304读缓存
* d.4xx:404用户访问的资源不存在
* e.5xx:500服务器内部异常
* Servlet
* 概述:Servlet就是运行在web服务器上的java程序,本质上就是一个java类,一个类要想通过浏览器被访问到,那么这个类必须直接或间接的实现Servlet接口
* 作用:
* a.接收浏览器的请求
* b.处理请求
* c.生成响应信息
* Servlet API:
* a.init:初始化
* b.service:提供服务(doGet/doPost)
* c.destroy:销毁
* d.getServletConfig():获取当前Servlet的配置对象
* e.getServletInfo:获取Servlet信息
* Servlet生命周期:从创建到死亡的过程
* 同上:abc
* 当浏览器第一次访问该Servlet的时候,服务器会创建该Servlet对象,并调用init()方法进行初始化,init()方法执行后service方法会跟着执行
* 再访问该Servlet的时候,直接调用service()方法提供,并且是访问一次调用一次(服务器不会再创建该servlet的对象,也不会调用init()方法进行初始化)
* 当服务器正常关闭的时候或项目从服务器中移除的时候,服务器会调用destroy()方法,将servlet对象销毁
* 注意:不论访问多少次只有一个Servlet对象
* Servlet配置:
* servlet标签:
* <servlet-name>给Servlet起名称</servlet-name>
* <servlet-class>Servlet类路径<servlet-class/>
* servlet-mapping标签:
* <servlet-name>已经注册好的Servlet名称<servlet-name/>
* <url-pattern>访问路径</url-pattern>
* 注意:一个路径只能对应一个servlet,一个servlet可以对应多个路径
* ServletContext上下文对象
* 上下文对象:全局管理者,一个项目中所有Servlet的一切信息
* 作用:获取全局初始化参数,获取文件的mime类型,资源共享,获取资源的完整路径
* 生命周期:
* a.创建:当服务器启动的时候,服务器会为每一个项目创建ServletContext对象,一个项目只有一个ServletContext对象
* b.销毁:项目从服务器上移除或者服务器正常关闭的时候
* 常用方法:
* a.String getInitParameter(String name) 获取指定的项目初始化参数
* b.Enumeration getInitParameterNames() 获取所有初始化参数名称
* c.String getMimeType(String filename) 获取文件mime类型
* d.setAttribute(String name,Object value) 设置
* e.getAttribute(String name) 获取指定的属性值
* f.removeAttribute(String name) 移除指定的属性
* h.理解:InputStream getResourceAsStream(String filepath)以流的方式返回一个文件
* Cookie&Session
* Cookie会话技术:
* 用来保存用户在访问过程中产生的数据
* 作用:
* 将会话中产生的数据存放在浏览器端
* 工作流程:
* 浏览器访问服务器时,服务器生成Cookie(键值对形势),通过响应(响应头 set-cookie)返回给浏览器,Cookie保存在浏览器上;下次访问服务器的时候,根据一定的规则携带不同的cookie,将cookie装在请求头带到服务器上
* 注意事项:
* cookie不能跨浏览器;不能放中文(如果需要解码,一般不放)
* Session会话技术:
* 服务器端的会话技术
* 作用:
* 在服务器上存放一次会话中的数据
* 工作流程:
* 浏览器访问服务器时,服务器会获取浏览器的数据,判断浏览器是否携带了sessionID
* true:如果带了,服务器要先获取sessionID,根据sessionID找到这个session
* false:如果没带,想使用session,需要创建session(服务器的内存空间,由服务器创建),使用这个session,使用完将sessionID返回浏览器,由浏览器保存sessionID(依赖cookie)
* 获取session:
* 在第一次调用request.getSession()就是创建session空间
* 生命周期:
* a.创建:第一次调用request.getSession()
* b.销毁:服务器非正常关闭;session超时(默认30分钟);手动销毁(session.invalidate())
*域对象(Servlet中的三大域对象)
* ServletContext
* 生命周期:服务器启动的时候,会为每一个项目创建一个servletContext对象,服务器关闭的时候或者移除的时候
* 作用范围:整个项目
* 作用:获取全局初始化参数;获取文件mime类型;获取项目path;存放共享数据;读取文件
* Session
* 生命周期:
* 第一次调用request.getSession()
* 销毁:
* 正常或非正常关闭
* 作用范围:
* 一次会话
* Request
* 生命周期:
* 创建(请求的时候);销毁(响应生成的时候)
* 作用范围:一次请求链
*JSP
* 概述:
* 将页面的展示和内容的生成相分离;(本质上就是一个Servlet,是服务器一种动态的网页技术(简单理解就是html嵌套java代码))
* 作用:
* 展示动态的信息
* 执行流程:
* a.第一次访问jsp页面,服务器接收请求,由jspServlet处理该请求,会找到对应的jsp文件
* b.服务器会将jsp转换成java文件(_jsp.java)
* c.编译java文件,生成class文件
* d.服务器运行class文件,生成动态内容,返回浏览器
* jsp指令:
* 设置当前页面的一些属性和行为
* 格式:
* <%@ 指令name 属性=值%> 指令可以出现多次;可以放在页面的任何位置,一般放到jsp页面上面
* jsp的三大指令
* page:声明当前的一些属性和行为
* 重要属性:
* a.import:声明当前页面所需要的jar包
* b.pageEncoding:设置当前文件mime类型,指定响应流的编码,通知浏览器用什么编码解析
* c.contentType和pageEncoding:若两个编码都是用出现这个编码的,若都没出现使用默认的
* jsp的内置对象(九大内置对象)
* request HttpServletRequest
* response HttpServletResponse
* out JspWriter
* Session HttpSession
* exception Throwable
* page Servlet(this)
* config ServletConfig
* application ServletContext
* pageContext PageContext
* 注意:a.exception只有页面声明一个错误页面的时候才可以用
* b.Session默认可以使用,当页面通过page指令声明 session=false的时候不能使用session
* jsp的四大作用域
* pageContext
* request
* session
* application
* jsp动态标签(了解)
* <jsp:forward page='项目内部path'></jsp:forward> == request.getRequestDispatcher("").forward(req,resp);
* <jsp:include page=''><jsp:include/>
*
*/
}
WEB服务器总结(1)
最新推荐文章于 2023-01-08 19:35:37 发布