当前位置: 首页 > news >正文

站长工具爱站竞价单页网站制作

站长工具爱站,竞价单页网站制作,网站建设后续的费用,wordpress去除自豪的采用回顾 之前的两篇的文章已经大概的带我们了解了tomcat的一些基本的操作#xff0c;比如从零搭建我们自己的调试环境以及官方文档构建的方式#xff0c;接下来的话#xff0c;我将带大家来了解一下tomcat的一些基础知识#xff0c;这些基础知识将以问题的方式抛出#xff0…回顾 之前的两篇的文章已经大概的带我们了解了tomcat的一些基本的操作比如从零搭建我们自己的调试环境以及官方文档构建的方式接下来的话我将带大家来了解一下tomcat的一些基础知识这些基础知识将以问题的方式抛出然后引起我们自己的思考。 一、 tomcat的产生 这一部门我们从tomcat的产生来进行讨论主要的是tomcat的构成条件。 1.1 tomcat产生的条件 维基百科上是这么说的Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器按照Sun Microsystems提供的技术规范实现了对Servlet和JavaServer PageJSP的支持并提供了作为Web服务器的一些特有功能如Tomcat管理和控制平台、安全局管理和Tomcat阀等。 Tomcat是由该基金会的会员和其他志愿者开发与维护的并且是一个被置于Apache协议之下的开源软件。用户可以根据该协议免费获得其源代码及可执行文件。 简单的说就是SUN公司推出了Servlet的规范和JSP的规范然后tomcat在这个规范上实现了自己的架构然后基于各种设计模式和其他的依赖关系最后在社区工作者的共同努力下构成了我们现在所看到的成品tomcat。 那么这个问题就很好回答了如果对于我们直接的进行面向Servlet进行编程的话毫无疑问编程的难度会增加我们还需要从零开始实现Servlet的规范和JSP的规范毫无疑问对于现在的我们肯定是无法忍受的。后来的tomcat也是经历了时间的检验从推出到现在一直活跃在我们的视野更是作为了SpringBoot的默认嵌入性服务器。个人看来这里有利也有弊虽然它方便了我们的日常开发工作但是也让我们对于这个软件的认知变得更加的模糊只需要编辑配置文件即可面向配置文件编程。 1.2 tomcat vs jetty 在我们的个人认知中可能我们现在比较常用的是tomcat可是在之前也有一个和他性能相近的web容器它就是Jetty。 Jetty 提供 Web 服务器和 servlet 容器此外还提供对 HTTP/2、WebSocket、OSGi、JMX、JNDI、JAAS 和许多其他集成的支持。这些组件是开源的可以免费用于商业用途和分发,并且还可以作为许多框架、云服务、应用程序服务器和设备的嵌入式工具。 Jetty的特性 可以用作 Java 应用程序服务器堆栈的一部分或完整。由于其灵活性可以作为其他框架的一部分应用。支持云式操作。Jetty 用户友好并且比 Tomcat 具有更好的界面。与 Tomcat 相比更适合处理并发用户。该框架的概念权重较小速度非常快而且很薄。内存小工作速度快。用户可以轻松使用它因为所需的知识和技能很少。 tomcat的特性首先tomcat在任何平台上都非常容易安装和配置。尽管它提供了Web 服务器的所有功能但其重量却非常轻。有很多定制选项可以扩展其功能。非常稳定的产品因为它已经存在很长时间了。文档齐全易于学习。提供简单的 Web 应用程序部署选项。支持 Java 企业版。Coyote 引擎可运行多个 Java 企业应用程序包括 Java Persistence API。为用户提供额外的安全级别。 我们可以通过对比发现jetty似乎更轻量级而tomcat更加的重量级轻量的话一般是性能比较好而重量的话功能会更加的完善和稳定当然对于企业级应用来说肯定是追求性能和稳定同在而他们两个的功能不同也同时注定了他们所采用的架构方式不同这里就不进行展开细说之后会慢慢的进行了解tomcat的架构设计到时候会进行统一的对比方便我们掌握他们的各自实现。 1.3 网络请求 这里简单的复习一下基本的网络请求是什么可能我们都学过了很多的网络课程可是当我们把知识当作文字记在脑中时仍然会觉得生硬所以我们来采用类比的方法来理解请求。 1.3.1 网络协议 我们大概是从计算机网络这门课程中都已经了解过七层网络架构这里我们来进行串一下TCP/IP的五层协议这个比较适用于现在计算机软件应用。 应用层 应用层的分层主要为我们解决了数据获取和写入这里的话我们可以通过应用层协议然后把我们需要的数据给封装或者是解封装。如果是我们进行寄信如果我们不进行封装信封填写个人的信息那么我们的信件肯定也是不能准确的投放到我们期望的目的地。 传输层 传输层的设计就涉及到了计算机的一些特性了在计算机中如果向外进行通信的话就必须绑定一个对外的端口这个端口就和这个应用进行了绑定对于不同的协议也是可以绑定相同的端口的。这样的话我们只需要通过知道目标的IP和端口号我们就大概知道了它的具体位置就相等于门牌号。 网络层 网络层的主要部分就是ip网络数据报在不同的网段间进行传输通过ip然后不断的在路由器之间传送这里更像是送信时走过的马路当然每个路由器就相当于是一个指示器能够告诉我们如何能够最快的到达我们想要去的目的地。 数据链路层 数据链路层的最基本的功能是向该层用户提供透明的和可靠的数据传送基本服务。当请求到达了ip时然后就需要通过将ip地址转化为mac地址然后就等于说是到了小区需要然后转化为门牌号。 物理层 物理层则是将字节流转化为电气特性然后进行传播因为在具体的物理传输中是不能直接传输二进制的。 当然其中必然还有保证数据的顺序和校验传输数据的完整性的算法这些共同构成了我们目前所见到的TCP/IP协议簇。 1.3.2 HTTP协议 我们平常使用的最多的便是HTTP协议它是一种传输协议具体的也经历了不断的迭代从1.1到2.0再到3.0。不断的更新迭代让它逐渐的适应了现在的传输要求。 对于最早版本的HTTP协议在每发出一个请求就会新建一个tcp连接毫无疑问这里是不合理的到了http1.1则是通过请求头的keep-alive,然后达到复用tcp连接。 http1.1之前是采用明文传输如果中间被其他人截获后可以很容易的查看到请求的参数以及一些私密的信息于是对于重要的信息都推荐采用https的方式进行通信。 在这里可以看到阿里云的大部分接口已经是http2.0协议。 这里插入一点之前的抓包就是通过抓取http的参数然后定时或者不定时的进行请求接口达到签到的目的在http2就改为了二进制的方式进行传输只是不能直观的观察了但是安全性的问题还是要依靠https而且也进行了请求头压缩将常用的请求头维护在两端这样的话请求的数据量也会变少。 二、Servlet 我们来看一下Servlet4.0的规范来观察一下这个Servlet到底是一个怎样的东西怎么撑起了JAVA的web世界。 2.1 什么是Servlet Servlet用我们自己的话来说就是一个入口JAVA类它接收封装好的网络请求Request然后对外返回响应Response。当它进行配置后放入Servlet容器就可以进行正常的进行工作它是后来JAVA Web框架的基础构成了JAVA Web的基石。 public interface Servlet {public void init(ServletConfig config) throws ServletException;public ServletConfig getServletConfig();public void service(ServletRequest req, ServletResponse res)throws ServletException, IOException;public String getServletInfo();public void destroy(); } 2.2 Servlet容器 Servlet容器是Servlet的具体存放地它可以控制每一个Servlet的声明周期当一个请求到达时他负责将网络请求进行组装为可以识别的Servlet。当数据返回时他又负责装为可供发送的响应response。 2.3 Servlet容器初始化 Servlet的初始化随着程序的启动发生只有当所有的Servlet初始化之后程序才对外提供服务将对应的请求进行绑定到具体的Servlet同时在初始化的时候会进行调用对应的init方法。 2.4 Servlet生命周期 通过initservice和destroy方法等进行控制。 2.5 Request 请求对象封装了来自客户端请求的所有信息。在HTTP协议中此信息从客户端传输到HTTP报头和请求的消息体中的服务器。 public interface ServletRequest {public Object getAttribute(String name);public EnumerationString getAttributeNames();public String getCharacterEncoding();public void setCharacterEncoding(String env)throws java.io.UnsupportedEncodingException;public int getContentLength();public long getContentLengthLong();public String getContentType();public ServletInputStream getInputStream() throws IOException;public String getParameter(String name);public EnumerationString getParameterNames();public String[] getParameterValues(String name);public MapString, String[] getParameterMap();public String getProtocol();public String getScheme();public String getServerName();public int getServerPort();public BufferedReader getReader() throws IOException;public String getRemoteAddr();public String getRemoteHost();public void setAttribute(String name, Object o);public void removeAttribute(String name);public Locale getLocale();public EnumerationLocale getLocales();public boolean isSecure();public RequestDispatcher getRequestDispatcher(String path);Deprecatedpublic String getRealPath(String path);public int getRemotePort();public String getLocalName();public String getLocalAddr();public int getLocalPort();public ServletContext getServletContext();public AsyncContext startAsync() throws IllegalStateException;public AsyncContext startAsync(ServletRequest servletRequest,ServletResponse servletResponse) throws IllegalStateException;public boolean isAsyncStarted();public boolean isAsyncSupported();public AsyncContext getAsyncContext();public DispatcherType getDispatcherType(); } 可以看到主要是封装了方法如获取请求的路径、请求参数、请求类型等等然后这样的话就可以被Servlet容器识别然后进行处理这里的话是一个接口后续的具体的协议实现是看我们使用什么样的应用层协议比如他就有个具体实现HttpServletRequest对应的也有HttpServletResponse和HttpServlet。 这里的话来提一下一个具体的URL构成. domin域名构成了URL的第一层它可以通过DNS服务器映射到我们的服务器的ip地址由此便可以找到服务器的具体位置。port 端口号则是标明了我们需要和服务器的哪个应用进行通信对于传输层的协议来说端口号就是对应的应用身份ID。context Path上下文路径是针对服务器而言的如果没有对项目进行配置的话默认是以项目名为主主要为了区分不同的项目。Servlet Path Servlet主要是区分不同的请求处理如通过对于路径名我们可以区分不同的Servlet操作可以一一的进行映射。Parameter URL后的参数主要是对Servlet传递信息。 2.6 Response 主要封装了对应的响应信息。 2.7 Filter 过滤器是可重用的代码片段它可以用作书写统一的逻辑可以更改初始的请求逻辑或者响应逻辑我们可以用它来进行修改字符编码或者实现一些我们自己的业务逻辑。 过滤器在首次启动就必须初始化完毕因为后续的Servlet都需要经过它才能进行正常的业务处理。一般是通过链式调用将过滤器链上的过滤器全部都需要运行一遍才能真正的走到Servlet。 这里就可以得到filter在JAVA Web的执行优先级还是蛮高的。 2.8 Session 超文本传输协议HTTP被设计为一种无状态协议。为了构建有效的Web应用程序必须将来自特定客户端的请求相互相关联。因此Session就横空出世了它是通过cookie进行跟踪会话机制当客户端发送请求后服务器会向客户端返回一个Session之后的每一次请求都会携带上这个Session ID用作验证是否是同一个客户端当然Session ID是可以复制的。 那么如果不支持Cookie的话我们该怎么办呢我们也可以通过路径重写的方式将对应的SessionID写入请求的URL里面作为参数进行传递。 2.9 Event 可以用于事件的监听对于Web应用的生命周期更好的掌控 2.10 Context 上下文信息用于管理Servlet可以用于获取当前应用的上下文然后动态的进行添加Servlet等。 三、回顾 我们今天了解了tomcat的一些优势以及和其他web容器的对比然后我们也进行大概的了解了Servlet在JAVA Web中的地位至于有更多的知识本文并没有进行提出我们还需要恶补操作系统计算机网络等方面的知识只有不断的强化自己到了最后我们才能屡战屡胜。
http://www.zqtcl.cn/news/753341/

相关文章:

  • 网站分类目录大全购物网站大全棉鞋
  • 网站镜像做排名建立外贸英文网站应该怎么做
  • 上海做网站就用乐云seo手机网站cms 下载
  • 做网站需要固定ip么灵犀科技网站建设
  • 深圳高端做网站建设网站备案与不备案区别
  • 家居企业网站建设公司苏州高新区建设局网站管网
  • 体育门户网站模板seo网络推广有哪些
  • 石家庄网站建设教程百度云下载
  • 怎样查看网站建设时间公司网站关键词优化
  • 网站淘宝推广怎么做网站seo基本流程
  • miit网站备案济南哪里做网站
  • 做网站软件的公司前端优化
  • 哪个网站有做形象墙汉沽网站建设制作
  • 网站alexa排名查询免费发帖的平台有哪些
  • 德国网站后缀濮阳房产网站建设
  • 漕泾网站建设做网站php语言用什么工具
  • 专业营销的网站建设公司哪家好专门做二手书的网站
  • 建新网站开发流程图电子商务网站开发综合实训报告
  • 临汾网站建设销售长沙网站建设1681989
  • 最近国内外重大新闻事件贺贵江seo教程
  • 网站开发源码网站运营建设方案
  • 网站建设公司 跨界鱼科技专业简述网站的制作步骤
  • 手机网站cms网站优化推广哪家好
  • 网站被k换域名qq空间 wordpress
  • 网站模板种类昆明cms建站模板
  • wordpress em企业网站做seo的优势
  • 设计师做私单网站全球最大的电商平台
  • 外贸联系网站wordpress 优惠券 插件
  • 公司网站开发费用兴田德润官方网站深圳百度快照优化
  • 做网站需要备案么行业网站策划