web容器

关于大型网站技术演进的思考(十一)--网站静态化处理—动静分离策略(3)

£可爱£侵袭症+ 提交于 2020-02-23 11:30:35
  前文里我讲到了网站静态化的关键点是动静分离, 动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路 。由此可见,网站静态化处理的核心就是 动静分离和缓存 两大方面,上篇我简单讲述了动静整合的基础知识,本篇将会讲述两大核心之一的动静分离策略,只有把动静分离策略做好了,缓存才能发挥出它应有的效果。   下面我们要讨论下动静分离的策略了,一个页面什么内容是动态的,什么内容是静态的,这个我们到底该如何来区分了?这个问题学问非常大,我们的标准不同,最后拆分出来的动静资源就会存在很大的不同。在本系列开篇里,我提到了什么样的页面是静态页面,什么样的页面是动态页面,我是以一个url的角度定义的,每个独立的页面都会有一个url,这个url就好比这个页面的门牌号,我们每次访问这个url时候如果得到的响应页面都是一样的那么我们就认为该页面是静态页面,如果访问某个url,我们访问的时间不同,最后展示的页面也不一样那么这个页面就是动态页面,动态页面就是我们要进行动静分离的载体了,我们可以看到我的定义其实是和时间相关的,也就是说访问时间不同,得到的结果会不一致,所以我们可以根据时间这个维度分析页面里那些内容是静态的,那些是动态,但是这个划分在实际情况里就会变得非常复杂

Java Web高级编程(一)

北城以北 提交于 2020-02-23 10:28:08
Servlet 一、创建Servlet类 在Java EE中,Servlet用来接收和响应终端用户的请求。Servlet是所有Web应用程序的核心类,是唯一既可以直接处理和响应用户请求,也可以将处理工作委托给应用中的其它部分的类。除非某些过滤器提前终止了客户端的请求,否则所有的请求都将被发送到某些Servlet中。 所有的Servlet都实现了javax.servlet.Servlet接口,但通常不是直接实现的,Servlet知识一个简单的接口,包含了初始化并销毁和处理请求的方法。无论什么类型的请求都将会调用service方法。 作为响应HTTP请求的java.servlet.http.HttpServlet,并实现了只接受HTTP请求的service方法。提供了响应每种HTTP方法类型的方法的空实现。 方法 Servlet方法 目的 GET doGet() 从指定的URL中获取资源 HEAD doHead() 与GET一致,但是只返回头部数据 POST doPost() 通常用于处理Web表单提交 PUT doPut() 存储URL中提供的实体 DELETE doDelete() 删除URL标识的资源 OPTIOND doOptions() 返回支持的HTTP方法 TRACE doTrace() 用于诊断目的 Servlet将总是继承HttpServlet

面试官:说说你都知道哪些Java框架

核能气质少年 提交于 2020-02-21 17:38:57
前言 自 1995 年推出以来,Java 已被 134861 个网站(如ESPN,SnapDeal,阿里巴巴等)使用。在 24 年的发展历程中,Java 已证明自己是为软件开发而生的顶级通用编程语言。 Java 广泛用于科学和教育,金融,法律和政府等许多行业。在下面提供的饼图中,您可以看到 Java 语言在各个行业中的应用。 Java 是开源和面向对象的,其开发目的是使应用程序开发人员可以编写一次然后在任何地方运行(WORA)。这使编译后的 Java 代码可以在支持 Java 的各个平台上运行。 Java 的最新版本 Java 13 于 2019 年 9 月发布。根据TOIBE 的排行,Java 排名第一。 下表显示了截至 2019 年 11 月和 2018 年 11 月的各种编程语言的排名: Java 始终处于第一位,这使其成为有史以来最著名的软件编程语言之一。及时的更新和新版本发布使 Java 保持着活跃和竞争力。 当然,仅为你的下一个 Web 应用开发选择 Java 是不够的,你还要选择正确的 Java Web 框架。 无疑,这并不容易,你需要深入了解这些 java 框架的利弊,然后为企业或项目开发选择一个最合适的。 下面,就让我们详细探讨一下 2020 年的顶级 Java 框架。 1、Spring Spring 排名第一,因为它具有出色的开发复杂 Web 应用程序的能力

springMVC的简单了解和环境搭建

♀尐吖头ヾ 提交于 2020-02-19 11:53:06
一,什么mvc 模型-视图-控制器(MVC)是一个众所周知的以设计界面应用程序为基础的设计思想。它主要通过 分离模型、视图及控制器在应用程序中的角色 将业务逻辑从界面中解耦。通常, 模型负责封装应用程序数据在视图层展示。 视图仅仅只是展示这些数据,不包含任何业务逻辑。 控制器负责接收来自用户的请求,并调用后台服务(e service 或者 dao )来处理业务逻辑。处理后,后台业务层可能会返回了一些数据在视图层展示。 控制器收集这些数据及准备模型在视图层展示。C MVC 模式的核心思想是将业务逻辑从界面中分离出来,允许它们单独改变而不会相互影响 二、常见 MVC 框架比较 运行性能上: Jsp+servlet>struts1>spring mvc>struts2+freemarker>struts2,ognl,值栈。 开发效率上,基本正好相反。值得强调的是,spring mvc 开发效率和struts2 不相上下,但从目前来看,spring mvc 的流行度已远远超过 struts2。Struts2 的性能低的原因是因为 OGNL(一种表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,结合 struts2 框架使用)和值栈(简单理解为存放 struts2 action 的堆栈)造成的。所以,如果系统并发量高,可以使用 freemaker 进行显示

spring之bean的作用域scope的值的详解

孤人 提交于 2020-02-18 09:11:19
今天研究了一下scope的作用域。默认是单例模式,即 scope="singleton"。另外scope还有prototype、request、session、global session作用域。scope="prototype"多例。再配置bean的作用域时,它的头文件形式如下: 如何使用spring的作用域: <bean id="role" class="spring.chapter2.maryGame.Role" scope="singleton"/> 这里的 scope 就是用来配置 spring bean 的作用域,它标识 bean 的作用域。 在spring2.0之前bean只有2种作用域即:singleton(单例)、non-singleton(也称 prototype), Spring2.0以后,增加了session、request、global session三种专用于Web应用程序上下文的Bean。因此,默认情况下Spring2.0现在有五种类型的Bean。当然,Spring2.0对 Bean的类型的设计进行了重构,并设计出灵活的Bean类型支持,理论上可以有无数多种类型的Bean,用户可以根据自己的需要,增加新的Bean类 型,满足实际应用需求。 1、singleton 作用域 当一个bean的 作用域设置为singleton, 那么Spring

什么是面向服务的体系结构?看完你就懂了

纵饮孤独 提交于 2020-02-17 15:15:01
通过优锐课的java架构知识讲解中,了解面向服务的体系结构的特征以及什么构成基于 Java的SOA基础结构。分享给大家学习参考。 面向服务的体系结构( SOA)是基于用于同步和异步应用程序的请求/答复设计范例的分布式计算的演变。应用程序的业务逻辑或各个功能被模块化,并作为针对消费者/客户端应用程序的服务呈现。这些服务的关键是它们的松散耦合性质。即服务接口独立于实现。应用程序开发人员或系统集成商可以通过组合一项或多项服务来构建应用程序,而无需了解服务的基础实现。例如,可以在.Net或J2EE中实现服务,而使用该服务的应用程序可以在其他平台或语言上。 SOA的好处是其与平台无关的方法以及Web服务之间更好的互操作性。本文是SOA的概述,包括构建Web服务时使用的一些工具和协议。 SOA和Web服务 面向服务的体系结构是可以使用 Web服务实现的体系结构模式。 有关在Java中构建基于SOAP的RESTful Web服务的教程简介,请参见“ Java SE中的Web服务”(JavaWorld,2017年)。 面向服务的体系结构具有以下关键特征: ·SOA服务在与平台无关的XML文档中具有自描述接口; 用于描述服务的标准是WSDL或Web服务描述语言。 ·SOA服务与通过XML Schema或XSD正式定义的消息进行通信。 消费者与提供者或服务之间的通信通常发生在异构环境中

Java Web Application——servlet

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-16 08:08:05
概述 是一个部署于web服务器中的实现了servlet接口的Java类,用于响应web请求 Web容器(也称为servlet容器)本质上是与servlet交互的Web服务器的组件。Web容器负责管理servlet的生命周期,将URL映射到特定的servlet,并确保URL请求者具有正确的访问权限。 和CGI相比更有性能优势 流程 假设用户请求访问 URL 。 浏览器为此URL生成HTTP请求。 将此请求发送到适当的服务器。 HTTP请求由Web服务器接收并转发到servlet容器。 容器将此请求映射到特定的servlet。 动态检索servlet并将其加载到容器的地址空间中。 容器调用servlet 的init()方法。 仅当servlet首次加载到内存中时才会调用此方法。 可以将初始化参数传递给servlet,以便它可以自行配置。 容器调用servlet 的service()方法。 调用此方法来处理HTTP请求。 servlet可以读取HTTP请求中提供的数据。 servlet还可以为客户端制定HTTP响应。 servlet保留在容器的地址空间中,可用于处理从客户端收到的任何其他HTTP请求。 每个HTTP请求都会调用service()方法。 每个 请求 都在自己独立的线程中提供服务。 Web容器为每个请求调用servlet 的service()方法。该service(

.NET CORE MVC

拟墨画扇 提交于 2020-02-14 17:20:01
本次使用的是.NET CORE 2.1版本。看的教学视频是杨旭老师的,微软MVP。 1.创建ASP.NET CORE Web项目 选择空项目 。 2.Program.cs 这里面包含了Main函数,Main函数调用下面的静态方法完成了Web宿主的创建和运行。那么下面那个方法的作用是创建默认的WebHost并且完成默认的配置。运行的Web服务会在IIS后面,IIS Express是一个代理服务器。那么这个Web启动之后就可以监听Http和https的请求了。默认配置里面提一下的是Kestrel Web Server Core内置的,跨平台,另外还有IIS集成。常用的还有是Configuration服务。 3.Startup.cs 3.1 简介 上面这个方法英文写的很清楚给容器中添加服务。 上面这个方法配置HTTP响应的处理管道。通俗的说是,一个Http请求进来的之后会依次响应的操作。 public void Configure(IApplicationBuilder app, IHostingEnvironment env,IConfiguration configuration)其中 configuration参数是自己加的参数,通过appsettings.json可以配置字符串。 appsettings.json的代码如上图。JSON格式。 启动后,取Welcome键的value

Dynamic Web Project 和 Static Web Project的区别

ぃ、小莉子 提交于 2020-02-14 12:19:02
1)Dynamic web project :动态web 页面中可以包含动态信息,如:JSP页面等。创建动态信息的工程,需要指定Web运行的容器(Tomcat,Jboss等) 2)Static web project :静态web 页面中不能包含动态信息,全部内容都是写死的,直接点击就可以看到效果. 来源: CSDN 作者: LifeOases 链接: https://blog.csdn.net/qq_43026206/article/details/104307233

html5——标签介绍与使用

家住魔仙堡 提交于 2020-02-13 03:47:43
HTML5 规范包括一系列新的语义元素,用于提供 Web 页面的各个区域或部分的意义,例如页眉、页脚、导航等等。在以前版本的 HTML 中,通常使用 <div> 元素来创建这些部分,使用 ID 或 类属性来区分它们。这样做的问题是这没有任何语义意义,因为没有定义严格的规则来指定要使用的类名称或 ID,使软件极其难以确定特定区域的操作。HTML5 应该可以帮助解决这些问题,使 Web 浏览器更容易分析文档的语义结构。 值得指出的是继续在 HTML5 中使用 <div> 元素仍旧有效,但是为了将来检查您的工作,建议您在相关的地方使用语义元素。另一方面,还建议您避免将这些新元素用于它们不应用于的目的。例如,<nav> 元素不应用于任何链接组;该元素旨在环绕页面上的主要导航块。 HTML 5 引入的主要语义元素包括: <header> 此元素用于定义 Web 页面的某些部分的标题,可以是整个页面、<article> 元素或 <section> 元素。 <footer> 与 <header> 元素类似,此新元素定义页面的某些部分的页脚。页脚不一定是在页面、文章或区域的结尾,但是它通常是在那个位置。 <nav> 这是 Web 页面上主要导航链接的容器。此元素不应用于所有链接组,而是应仅用于主要导航块。如果您有一个 <footer> 元素包含导航链接,不需要将这些链接封装在 <nav> 元素中