web容器

Spring

只愿长相守 提交于 2019-12-02 05:14:01
概述   Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。   Spring 框架是一个开源的 Java 平台,它最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下发布。   Spring 是轻量级的框架,其基础版本只有 2 MB 左右的大小。   Spring 框架的核心特性是可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应用程序是需要扩展的。 Spring 框架的目标是使 J2EE 开发变得更容易使用,通过启用基于 POJO 编程模型来促进良好的编程实践。 体系结构   Spring 有可能成为所有企业应用程序的一站式服务点,然而,Spring 是模块化的,允许你挑选和选择适用于你的模块,不必要把剩余部分也引入。下面的部分对在 Spring 框架中所有可用的模块给出了详细的介绍。   Spring 框架提供约 20 个模块,可以根据应用程序的要求来使用。    组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下: 核心容器 :核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory

分布式Session一致性简介

左心房为你撑大大i 提交于 2019-12-02 05:04:32
Session简介 是什么? Session在网络中表示“会话控制”,用于存储特定用户所需的属性和其他的配置信息; Session表示一个特定的时间间隔,可以指用户从登陆系统到注销退出系统之家的时间。 为什么出现? 因为http 是一种无状态协议,如果没有Session的话,服务器无法识别请求是否来自同一个用户! 在一些业务场景中需要知道前面的操作和后台的操作是不是同一个用户的行为,即业务之间是有关联性的。 怎么用? 使用Session结合浏览器Cookie,将服务器Session保存到浏览器cookie中,这样可以保持http会话状态。 Session服务器创建,如Tomcat,浏览器发起请求到Tomcat服务器,然后Tomcat服务器生成SessionId保存在内存中,并将SessionId返回给浏览器,浏览器通过Cookie保存SessionId信息,用户每次通过浏览器访问服务器都会带上SessionId信息,这样就可以判断每次的请求是不是同一个用户,解决http协议无状态问题。 什么是Session一致性问题 单机版的系统,比如一个Tomcat部署,是不存在Session一直性的问题,因为Session保存在一个Tomcat容器中。 Session一致性问题是由架构演进或者业务的演进中发生,从单机演进到集群或者分布式的架构 用户—> 浏览器 ----> Nginx(轮询)

JSP Web过滤器入门

折月煮酒 提交于 2019-12-02 03:09:34
1、定义 过滤器是Web程序中的可重用组件,是一个程序。它先于与之相关的Servlet或JSP页面运行在服务器上。 过滤器可以附加到一个或多个Servlet或JSP页面上 ,并且可以检查进入这些资源的请求信息。 2、处理方式 过滤器是客户端与目标资源间的中间层组件,属于Web容器的一部分 ,用于拦截客户端的请求与响应信息。 处理步骤如下: ①当Web容器接收一个客户端请求时,Web容器判断此请求是否与过滤器对象相关联,如果相关联,容器将这一请求交给过滤器进行处理。 ②在处理过程中,过滤器可以对请求进行操作,如更改请求中的信息数据,在过滤器处理完成之后,再将这一请求交给其他业务进行处理。 ③当所有业务处理完成,需要对客户端进行响应时,容器又将响应交给过滤器处理,过滤器处理响应完成将响应发送到客户端。 注意:在Web程序的应用过程中可以放置多个过滤器,Web容器对多个过滤器的处理方式为链式处理,即容器首先将客户端请求交给第一个过滤器处理,处理完成之后交给下一个过滤器处理,以此类推,直到最后一个过滤器对象。 来源: https://www.cnblogs.com/GjqDream/p/11728051.html

什么是Servlet容器?

ⅰ亾dé卋堺 提交于 2019-12-02 02:05:29
在本文中,我写了一些关于Web服务器、Servlet容器以及它与JVM的关系的基本概念。我想表达的是,Servlet容器也仅仅不过是一个Java程序。 1. 什么是Web服务器? 想要知道什么是Servlet容器,我们首先要知道什么是Web服务器。 Web服务器使用HTTP协议来传输数据。最简单的一种情况是,用户在浏览器(客户端,client)中输入一个URL(如,www.programcreek.com/static.html),然后就能获取网页进行阅览。因此,服务器完成的工作就是发送网页至客户端。传输过程遵循HTTP协议,它指明了请求(request)消息和响应(response)消息的格式。 2. 什么是Servlet容器? 在这里,我们发现,用户/客户端只能向服务器请求静态网页。如果用户想要根据自己的输入来读取网页,这种方式就不能满足用户的要求。Servlet容器的基本思想是在服务器端使用Java来动态生成网页。因此,Servlet容器是Web服务器和servlet进行交互的必不可少的组件。 Servlet容器就是用来装Servlet的。 3. 什么是Servlet? Servlet 是在javax.serlvet包中定义的一个接口。它声明了servlet生命周期中必不可少的三个方法-init()、service()和destroy()。每个servlet

浅析servlet

给你一囗甜甜゛ 提交于 2019-12-02 01:49:14
目录 Servlet简介 Servlet定义 Servlet的特点 Servlet底层原理 Servlet GenericServlet HttpServlet Servlet的生命周期 Servlet生命周期图 Servlet生命周期简述 正文 回到顶部 Servlet简介 Servlet定义 Servlet是一个Java应用程序,运行在服务器端,用来处理客户端请求并作出响应的程序。 Servlet的特点 (1)Servlet对像,由Servlet容器(Tomcat)创建。 (2)Servlet是一个接口:位于javax.servlet包中。 (3)service方法用于接收用户的请求并返回响应。 (4)用户访问时多次被执行(可以统计网站的访问量)。 回到顶部 Servlet底层原理 Servlet package javax.servlet; import java.io.IOException; public interface Servlet { void init(ServletConfig var1) throws ServletException; ServletConfig getServletConfig(); void service(ServletRequest var1, ServletResponse var2) throws

Win10上的Docker应用:Docker-compose(容器编排)

北城余情 提交于 2019-12-02 00:08:06
阅读目录: Docker应用:Hello World Docker应用:Docker-compose(容器编排) 前言:   昨天完成了Docker入门示例( Docker应用:Hello World ),示例只是粗略展示了单机应用在Docker中部署的大概流程; 但是即使先不考虑大型项目关联的多个应用服务,单单只是单机应用部署来说,过程也是略为复杂。   因为现在的软件公司开发、测试、部署基本上分开,甚至交由不同的人完成各个阶段的工作,如果软件部署要敲写大量的命令, 那还是很容易出错;甚至有些公司只是运维人员、工程人员在部署,一旦出了问题,他们想找到原因基本很难。 所以要求部署必须是接近傻瓜式的,所以有了容器编排技术。 一、遗留问题   昨天的示例是遗留有一些问题的,比如容器重启后IP地址变化,容器重启后应用相关的远程容器服务都将失效,这点是非常致命的。 第二是网络通信问题,昨天的示例中Web调用Mysql是通过ip映射,出到容器外部在访问另外一个容器内部的数据,如下: 1 conn = new MySqlConnection("server=198.198.198.181;User Id=root;password=mima2100;Database=mysql-db"); 198.198.198.181是我本地机器的局域网IP,由于这个IP

Win10上的Docker应用:Kubernetes(容器集群)

别等时光非礼了梦想. 提交于 2019-12-02 00:07:58
阅读目录: Docker应用:Hello World Docker应用:Docker-compose(容器编排) Docker应用:Kubernetes(容器集群) 前言:   终于出第三篇了,上个月就已经弄好了,一直没弄上来,步入正题之前有3个建议给想要学习Kubernetes的同学。   1、在国内因为防火墙的原因,你是不可能在Docker上在线开启的Kubernetes功能的。所以如果你会fan qiang上网,那万事大吉。   2、如果你离香港澳门比较近,那建议你周末抽空过去一趟,上午买罐奶粉,在店里吃个便餐顺便上网把Kubernetes功能开启了, 一天时间不用。又能旅游散心、又把事情办了,一举多得,还是万事大吉。   3、如果上面2种你都没有条件,那真的很遗憾,你要控制住你的双手,一不注意,你可能会把电脑砸掉。还要准备菊花茶,清热解毒 以免怒火攻心长痘痘,板蓝根小柴胡也要买点,不然你气愤身体忽冷忽热的容易感冒。   好了,说这些是想告诉你,你如果不能在线开启Kubernetes功能,那将浪费很多很多。。的时间,别人不知道,反正我就是断断续续的 加起来可能至少2个星期才完成。而且我后边也不会把解决过程发出来,太罗嗦,有怒气你们直接怼防火墙就对了,机智.jpg 一、Kubernetes简单介绍 1、Kubernetes简单点说就是关于Docker的集群方案

Spring在非web应用中关闭IoC容器 (registerShutdownHook)

痴心易碎 提交于 2019-12-01 22:52:42
在基于web的ApplicationContext实现中,已有相应的实现来处理关闭web应用时恰当地关闭Spring IoC容器。 但,如果你正在一个非web应用的环境下使用Spring的IoC容器,如dubbo服务,你想让容器优雅的关闭,并调用singleton的bean相应destory回调方法,你需要在JVM里注册一个“关闭钩子”(shutdown hook)。这一点非常容易做到,并且将会确保你的Spring IoC容器被恰当关闭,以及所有由单例持有的资源都会被释放。 为了注册“关闭钩子”,你只需要简单地调用在org.springframework.context.support.AbstractApplicationContext实现中的registerShutdownHook()方法即可。 package com.hcm.dubbo.service; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; public class DubboServiceStart { private static final Logger LOG = LoggerFactory

web.xml的作用及基本配置

╄→尐↘猪︶ㄣ 提交于 2019-12-01 22:18:12
web工程中的web.xml文件有什么作用呢?它是每个web.xml工程都必须的吗? 一个web中完全可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的。 那什么时候需要,什么时候可以不需要呢? 要想回答上面的问题,得先了解web.xml文件使用来干什么的。web.xml文件是用来配置:欢迎页、servlet、filter等的。当你的web工程没用到这些时,你可以不用web.xml文件来配置你的web工程。 那么web.xml能做的所有事情都有那些? 其实,web.xml的模式(Schema)文件中定义了多少种标签元素,web.xml中就可以出现它的模式文件所定义的标签元素,它就能拥有定义出来的那些功能。web.xml的模式文件是由Sun公司定义的,每个web.xml文件的根元素<web-app>中,都必须标明这个web.xml使用的是哪个模式文件。如: <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml

讨论Web前后端分离的意义

谁说胖子不能爱 提交于 2019-12-01 20:28:00
自然是有很大意义的。下面我可能说的比较多……方便题主能够更全面的了解为什么说是有有意义的。另外,本文是以Java的角度谈前后端分离。放心,大家一定会有种是我了,没错,的感觉。 一、先来明晰下概念   前后端分离是通过Ngnix+Tomcat的方式(也可以中间加一个Node.js)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,iOS等等)打下坚实的基础。这个步骤是系统架构从猿进化成人的必经之路。   它的核心思想是 前端HTML页面通过Ajax调用后端的Restful API接口并使用json数据进行交互。这点题主也有提到。 二、其次,让我们了解下,没有前后端分离的时代(各种耦合)   过去,Java Web项目大多数都是Java程序员又当爹又当妈,又搞前端,又搞后端。   感觉就是,怀疑猿生……   那时的JavaWeb项目都是使用了若干后台框架,Spring MVC/Struts + Spring + Spring JDBC/Hibernate/Mybatis 等等。   大多数项目在Java后端都是分了三层,控制层,业务层,持久层。控制层负责接收参数,调用相关业务层,封装数据,以及路由&渲染到JSP页面。然后JSP页面上使用各种标签或者手写Java表达式将后台的数据展现出来