web容器

ServletListener详解

两盒软妹~` 提交于 2020-03-12 14:13:17
title: ServletListener详解 category: 学习笔记 tags: Java Java Web ServletListener详解 在 Servlet API 中有一个 ServletContextListener 接口,它能够监听 ServletContext 对象的生命周期,实际上就是监听 Web 应用的生命周期。 当Servlet 容器启动或终止Web 应用时,会触发ServletContextEvent 事件,该事件由ServletContextListener 来处理。在 ServletContextListener 接口中定义了处理ServletContextEvent 事件的两个方法。 java代码 1 /** 2 * 当Servlet 容器启动Web 应用时调用该方法。在调用完该方法之后,容器再对Filter 初始化, 3 * 并且对那些在Web 应用启动时就需要被初始化的Servlet 进行初始化。 4 */ 5 contextInitialized ( ServletContextEvent sce ) 6 7 8 /** 9 * 当Servlet 容器终止Web 应用时调用该方法。在调用该方法之前,容器会先销毁所有的Servlet 和Filter 过滤器。 10 */ 11 contextDestroyed (

request.getParameter() 和request.getAttribute() 区别

假装没事ソ 提交于 2020-03-12 08:14:31
getParameter 是用来接受用post个get方法传递过来的参数的. getAttribute 必须先setAttribute. request.getParameter() request.getParameter() 取得是通过容器的实现来取得通过类似post,get等方式传入的数据,request.setAttribute()和getAttribute()只是在web容器内部流转,仅仅是请求处理阶段。 request.getParameter() 方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据。request.getParameter()方法返回String类型的数据。 request.getAttribute() request.setAttribute() 和 getAttribute() 方法传递的数据只会存在于Web容器内部 还有一点就是,HttpServletRequest 类有 setAttribute() 方法,而没有setParameter() 方法。 详情参看此博 https://blog.csdn.net/zhaohongjuan/article/details/53641160?ticket=ST-466600-QjV6fOMxPaG2ypNz5pHe-passport.csdn.net ----------------

深入理解 Ingress

大城市里の小女人 提交于 2020-03-09 10:09:55
Ingress为弥补NodePort不足而生 NodePort一些不足: • 一个端口只能一个服务使用,端口需提前规划 • 只支持4层负载均衡 nginx 动态感知pod ip 的变化,根据变化动态设置nginx 的upstream,并实现负载均衡 ingress controller 动态刷新 pod ip 列表 更新到 nginx 的配置文件 Pod与Ingress的关系 通过Service相关联 通过Ingress Controller实现Pod的负载均衡 - 支持TCP/UDP 4层和HTTP 7层 Ingress Controller 1. 部署Ingress Controller Nginx:官方维护的Ingress Controller 部署文档:https://github.com/kubernetes/ingress-nginx/blob/master/docs/deploy/index.md 注意事项: • 镜像地址修改成国内的:registry.aliyuncs.com/google_containers/nginx-ingress-controller:0.26.1 • 使用宿主机网络:hostNetwork: true wget https://raw.githubusercontent.com/kubernetes/ingress-nginx

有状态部署StatefulSet控制器

江枫思渺然 提交于 2020-03-09 10:05:39
1.StatefulSet概述 部署有状态应用 解决Pod独立生命周期,保持Pod启动顺序和唯一性 1. 稳定,唯一的网络标识符,持久存储 2. 有序,优雅的部署和扩展、删除和终止 3. 有序,滚动更新 应用场景:数据库 StatefulSet与Deployment区别: 有身份的! 身份三要素: 域名 主机名 存储(PVC) 无状态的适用:web,api,微服务的部署,可以运行在任意节点,不依赖后端持久化存储。 有状态的适用: 需要有固定ip,pod有各自的存储,可以按一定规则进行扩缩容。 2.正常service和headlessService对比 normal sevice: 通过一个cluster-ip 10.0.0.224:80 来反向代理 endpoints 10.244.0.58:8080 10.244.1.78:8080 10.244.1.88:8080 headless service: 无头服务,需要将 clusterIP: None 并且不能设置nodePort web-headlessService.yaml apiVersion: v1 kind: Service metadata: labels: app: web name: headless-svc namespace: default spec: clusterIP: None ports: -

干货 | 速速收藏:五分钟带你了解Spring IOC原理!

岁酱吖の 提交于 2020-03-08 22:34:10
spring容器高层视图 Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之间的依赖关系,为上层应用提供准备就绪的运行环境。 Bean缓存池:HashMap实现 IOC容器介绍 Spring 通过一个配置文件描述 Bean 及 Bean 之间的依赖关系,利用 Java 语言的反射功能实例化 Bean 并建立 Bean 之间的依赖关系。 Spring 的 IoC 容器在完成这些底层工作的基础上,还提供了 Bean 实例缓存、生命周期管理、 Bean 实例代理、事件发布、资源装载等高级服务。 BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身; ApplicationContext 面向使用 Spring 框架的开发者,几乎所有的应用场合我们都直接使用 ApplicationContext 而非底层的 BeanFactory。 BeanFactory BeanFactory体系架构: BeanDefinitionRegistry : Spring 配置文件中每一个节点元素在 Spring 容器里都通过一个 BeanDefinition 对象表示,它描述了 Bean 的配置信息。而 BeanDefinitionRegistry

JavaWEB总结--(3)Tomcat

孤者浪人 提交于 2020-03-08 16:42:52
JavaWEB项目部署 JavaWEB项目,需要部署在Web服务器上才能够接收用户的客户端发送的请求并且响应。 Web服务器 最常用的Web服务器时tomcat服务器,在旧的项目也用过resin部署。 Tomcat(Apache):当前应用最广的JavaWeb服务器; JBoss(Redhat红帽):支持JavaEE,应用比较广EJB容器 –> SSH轻量级的框架代替 GlassFish(Orcale):Oracle开发JavaWeb服务器,应用不是很广; Resin(Caucho):支持JavaEE,应用越来越广; Weblogic(Orcale):要钱的!支持JavaEE,适合大型项目; Websphere(IBM):要钱的!支持JavaEE,适合大型项目 Tomcat目录结构 Tomcat环境配置(windows环境) ① 新建环境变量CATALINA_HOME=解压目录 ② 在Path环境变量中加入Tomcat解压目录\bin目录 点击bin目录下的startup,然后在浏览器访问localhost:8080 如果出现界面,即安装成功: eclipse配置tomcat 添加tomcat 在eclise的Window-Preferences-Server-Runtime Environment,点击Add添加对应的tomcat,并且配置当前环境下的jdk版本。 测试

web.xml的简单解释以及Hello1中web.xml的简单分析

微笑、不失礼 提交于 2020-03-08 03:32:14
一、web.xml的加载过程 ①当我们启动一个WEB项目容器时,容器包括(JBoss,Tomcat等)。首先会去读取web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目才能正常的被启动起来。 ②启动WEB项目的时候,容器首先会去读取web.xml配置文件中的两个节点:<listener> </listener>和<context-param> </context-param>。 ③紧接着,容器创建一个ServletContext(application),这个web项目的所有部分都将共享这个上下文。 容器以 <context-param></context-param>的 name作为键, value作为值,将其转化为键值对,存入 ServletContext。   ④在容器创建 <listener></listener>中的类实例,根据配置的 class类路径 <listener-class>来创建监听, ⑤ 接着,容器会读取 <filter></filter>,根据指定的类路径来实例化过滤器。 ⑥如果系统中有 Servlet,则 Servlet是在第一次发起请求的时候被实例化的,而且一般不会被容器销毁,它可以服务于多个用户的请求。所以, Servlet的初始化都要比上面提到的那几个要迟。 二、标签 ①<web-app></web-app> <web-app><

servlet工作原理

安稳与你 提交于 2020-03-07 08:31:17
首先提出几个问题: 1.servlet容器是如何工作的; 2.一个Web工程在servlet容器中是如何启动的; 3.servlet容器如何解析你在web.xml中定义的servlet; 4.用户的请求是如何被分配给指定的servlet的; 5.servlet容器如何管理servlet生命周期; servlet容器 servlet与servlet容器彼此依存,相互独立发展。这是为了适应工业化生产而解耦,通过标准化接口来相互协作。所以接口是连接servlet与servlet容器的关键。 servlet容器作为一个独立发展的标准化产品,种类很多,以Tomcat为例: 在Tomcat 的容器等级中,Context 容器直接管理Servlet在容器中的包装类 Wrapper,所以Context容器如何运行将直接影响Servlet 的工作方式。 Tomcat 的容器分为4个等级: 【Container【Engine【Host【Context【 Wrapper 1, Wrapper 2...】, Context【 Wrapper 1, Wrapper 2...】... 】】】 真正管理Servlet的容器是Context容器,一个Context对应一个web工程,在Tomcat的配置文件中可以很容易地发现这一点 如下:<Context path="/projectOne" docBase="D

shiro

这一生的挚爱 提交于 2020-03-06 05:05:34
shiro官网: http://shiro.apache.org 1, 什么是shiro Apache Shiro 是Java 的一个安全框架。Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE 环境,也可以用在JavaEE 环境。Shiro 可以帮助我们完成: 认证 、 授权 、 加密 、 会话管理 、 与Web 集成 、 缓存 等。 2,为什么要学shiro 1,既然shiro将安全认证相关的功能抽取出来组成一个框架,使用shiro就可以非常快速的完成认证、授权等功能的开发,降低系统成本。 2,shiro使用广泛,shiro可以运行在web应用,非web应用,集群分布式应用中越来越多的用户开始使用shiro。 java领域中spring security(原名Acegi)也是一个开源的权限管理框架,但是spring security依赖spring运行,而shiro就相对独立,最主要是因为shiro使用简单、灵活,所以现在越来越多的用户选择shiro。 3,基本功能 1,Authentication 身份认证/登录,验证用户是不是拥有相应的身份; 2, Authorization 授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用 户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用 户对某个资源是否具有某个权限;

Docker Compose 项目打包部署

百般思念 提交于 2020-03-05 22:57:15
Docker Compose 前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知使用 Docker Compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具 Docker 和 Compose兼容性看下图: Docker版本变化说明: Docker从1.13.x版本开始,版本分为企业版EE和社区版CE,版本号也改为按照时间线来发布,比如17.03就是2017年3月。 Docker的linux发行版的软件仓库从以前的https://apt.dockerproject.org和https://yum.dockerproject.org变更为目前的https://download.docker.com, 软件包名字改为docker-ce和docker-ee。 docker compose是什么: Compose是一个定义和管理多容器的工具,使用Python语言编写。 使用Compose配置文件描述多个容器应用的架构,比如使用什么镜像、数据卷、网络、映射端口等; 然后一条命令管理所有服务,比如启动、停止、重启等。