WEB服务器总结(1)

来源:互联网 发布:长相凶狠 知乎 编辑:程序博客网 时间:2024/04/28 00:08
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/> * */}
原创粉丝点击