web容器

SpringMVC解析2-ContextLoaderListener

风流意气都作罢 提交于 2019-12-16 16:09:14
对于SpringMVC功能实现的分析,我们首先从web.xml开始,在web.xml文件中我们首先配置的就是ContextLoaderListener,那么它所提供了功能有哪些又是如何实现的?当使用编程方式的时候我们可以将spring配置传入到Spring容器中,如: ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 但是在web下,我们需要更多的是与Web环境相互结合,通常的办法是将路径以context-param的方式注册并使用ContextLoaderListener进行监听读取。 ContextLoaderListener的作用是启动Web容器时,自动装配ApplicationContext的配置信息。因为它实现了ServletContextListener接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法, 使用ServletContextListener接口,开发者能够在为客户端请求提供服务之前向ServletContext中添加任意的对象 。这个对象在ServletContext启动的时候被初始化,然后在ServletContext整个运行期间都是可见的

JAVA web 框架集合

时光毁灭记忆、已成空白 提交于 2019-12-16 13:20:49
“ 框架 ”犹如滔滔江水连绵不绝, 知道有它就好,先掌握自己工作和主流的框架; 在研究好用和新框架。 主流框架教程分享在Java帮帮-免费资源网 其他教程需要时间制作,会陆续分享!!! 152款框架,你还知道其他的吗? 留言你用过的web框架 Java开源web框架汇总 1 Struts2 Struts2是一个web应用框架。它不是一个Struts的新的发布版本,而是一个全新的框架。Struts2 是第二代基于Model-View-Controller (MVC)模型的web应用框架。 Struts2是java企业级web应用的可扩展性的框架。 它是WebWork和Struts社区合并后的产物。 这一版本的Struts2声称,Struts2会接近于原先版本Struts,并且会更容易使用。Struts2没有继承struts 1的血统,而是继承了webwork 的血统。 Struts2 和Struts的构建是社区开发模式的最好实践和证明。事实上,第一版本的Struts设计的第一目标就是使MVC模式应用于web程序设计。 在过去10年,Struts在更好的web应用方面所做的工作是值得肯定的。在某些方面,Struts社区注意到这一框架的局限性,但在这个活跃的社区里,自动识别弱点和顽强不屈的精神,使得克服这些弱点是不困难的。 在深入学习MVC运行模式并同时引入一些新的建筑学方面的设计理念后

四、Spring范围和自动装配

放肆的年华 提交于 2019-12-15 14:37:42
Spring Scopes and Autowiring - 章节 Scopes 5 scopes 适用于任何配置 - Singleton - Prototype 仅在支持web的Spring项目中有效 - Request - Session - Global Singleton - 单例scope One instantiation 默认的bean scope 每个Spring容器一个实例 @Scope注解 需要 AOP jar 示例: Singleton - Java配置 Prototype 每个请求 保证独特的 与单例相反 Prototype - Java配置 Web Scopes Spring MVC知识 Request Session GlobalSession Autowired - 自动装配 @ComponentScan({“com.*"}) @Bean By Name Instance Type @Autowired - Java配置 Stereotypes @Component @Repository @Service Stereotypes注解-Java配置 自动装配到构造函数上 总结: Scopes - Singleton - Prototype Web scopes - Request - Session - GlobalSession Autowiring

k8s探测机制之pod健康检查

邮差的信 提交于 2019-12-14 21:42:06
一:需求来源: 首先来看一下,整个需求的来源:当把应用迁移到 Kubernetes 之后,要如何去保障应用的健康与稳定呢?其实很简单,可以从两个方面来进行增强: 1,首先是提高应用的可观测性; 2,第二是提高应用的可恢复能力。 从可观测性上来讲,可以在三个方面来去做增强: 1,首先是应用的健康状态上面,可以实时地进行观测; 2,第二个是可以获取应用的资源使用情况; 3,第三个是可以拿到应用的实时日志,进行问题的诊断与分析。 当出现了问题之后,首先要做的事情是要降低影响的范围,进行问题的调试与诊断。最后当出现问题的时候,理想的状况是:可以通过和 K8s 集成的自愈机制进行完整的恢复。 二:介绍两种探测方式:livenessProbe和ReadnessProbe livenessProbe: [活跃度探测],就是根据用户自定义的规则判断容器是否健康。也叫存活指针,如果 Liveness 指针判断容器不健康,此时会通过 kubelet 杀掉相应的 pod,并根据重启策略来判断是否重启这个容器。如果默认不配置 Liveness 指针,则默认情况下认为它这个探测默认返回是成功的。 ReadnessProbe: [敏捷探测],用来判断这个容器是否启动完成,即 pod 的 状态(期望值)是否 为ready。如果探测的一个结果是不成功,那么此时它会从 pod 上 Endpoint 上移除

Spring MVC 复习

ε祈祈猫儿з 提交于 2019-12-14 08:58:33
概念 三层架构 将整个业务应用划分为三层 ​ 表现层:用来和客户端进行数据交互,一般采用 MVC 设计模式 ​ 业务层:处理公司具体业务逻辑 ​ 持久层:用来操作数据库 MVC模型 Model View Controller模型视图控制器 ​ Model:数据模型,JavaBean的类,用来封装数据 ​ View:通过jsp, html等展示数据 ​ Controller:接收用户请求,整个流程的控制器 Spring MVC spring提供的mvc框架 ​ 与struts2的区别:前者入口为servlet,后者用filter接收请求;前者基于方法,后者基于类(每次执行都会新建一个对象,效率低);前者使用更方便;前者使用JSTL表达式执行效率高,后者使用OGNL表达式开发效率高 ​ 应用 环境搭建 新建maven项目(不使用骨架) 完善目录结构 在main目录下新建webapp/WEB-INF/web.xml文件并导入约束和新建jsp.index文件 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Web Application<

java和java Enterprise的区别

ぃ、小莉子 提交于 2019-12-14 01:40:20
java就是普通的用java写的程序,直接就能运行的   Java Enterprise 主要是针对Java EE 项目的开发设计的“帮助我们开发和部署可移植、健壮、可伸缩且安全的服务器端 Java应用程序”,所以web项目大多都在这个视图中进行开发。功能较前者多一些。   web project,web service project不能直接运行,必须在容器里面运行,这个容器就是web server,例如tomcat,jboss。web project就是web工程,简单的讲做网站的工程,web service project是以http为通信协议xml为媒介来传输数据以达到运行调用java程序的目的。   1、当你是web应用时,比如说要建个网站,需要发布到服务器时,应该要建Web Project 。   2、当你是做分布式系统时,也就是你做的只是一个服务,对外发布也只是一个服务的时候,需要建立Web Services Project(不理解可以先研究下webservices)。   3、当你仅仅是需要JDK来运行一些本地代码的时候,只需要建Java Project就可以了。   4、Web Project就是普通的jsp项目,基于J2EE标准,符合mvc规范,你可以理解为BS模式的程序。   5、Web Service Project 也是BS程序,只是要用到网络中其他的数据

SpringBoot系列教程web篇Listener四种注册姿势

自闭症网瘾萝莉.ら 提交于 2019-12-13 13:13:32
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> java web三要素Filter, Servlet前面分别进行了介绍,接下来我们看一下Listener的相关知识点,本篇博文主要内容为SpringBoot环境下,如何自定义Listener并注册到spring容器 <!-- more --> I. 环境配置 1. 项目搭建 首先我们需要搭建一个web工程,以方便后续的servelt注册的实例演示,可以通过spring boot官网创建工程,也可以建立一个maven工程,在pom.xml中如下配置 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project

Dockerfile常用指令

大城市里の小女人 提交于 2019-12-12 17:04:17
Dockerfile常用指令 1.FROM:构建镜像基于哪个镜像 语法:FROM <image>[:<tag>] 例如:FROM centos:7 解释:设置要制作的镜像基于哪个镜像,FROM指令必须是整个Dockerfile的第一个指令,如果指定的镜像不存在默认会自动从Docker Hub上下载。 2.MAINTAINER:镜像维护者姓名或邮箱地址 语法:MAINTAINER <name> 例如:MAINTAINER adam 解释:MAINTAINER指令允许你给将要制作的镜像设置作者信息 3.RUN:构建镜像时运行的shell命令 语法: ①RUN <command> #将会调用/bin/sh -c <command> ②RUN ["executable", "param1", "param2"] #将会调用exec执行,以避免有些时候shell方式执行时的传递参数问题,而且有些基础镜像可能不包含/bin/sh 例如: RUN [“yum”,”install”,”httpd”] RUN yum -y install httpd 解释:RUN指令会在一个新的容器中执行任何命令,然后把执行后的改变提交到当前镜像,提交后的镜像会被用于Dockerfile中定义的下一步操作,RUN中定义的命令会按顺序执行并提交,这正是Docker廉价的提交和可以基于镜像的任何一个历史点创建容器的好处

左耳朵耗子给出的学习指南

妖精的绣舞 提交于 2019-12-12 15:35:50
左耳朵耗子给出的学习指南 参考文档:https://blog.csdn.net/haoel 建议: 不要乱买书,不要乱追新技术新名词,基础的东西经过很长时间积累而且还会在未来至少10年通用。 ps:数据库发展很快,sql语法长存,java变化也很快,基础语法保留; 回顾一下历史,看看历史上时间线上技术的发展,你才能明白明天会是什么样。 一定要动手,例子不管多么简单,建议至少自己手敲一遍看看是否理解了里头的细枝末节。 一定要学会思考,思考为什么要这样,而不是那样。还要举一反三地思考。 注:你也许会很奇怪为什么下面的东西很偏Unix/Linux,这是因为我觉得Windows下的编程可能会在未来很没有前途,原因如下: · 现在的用户界面几乎被两个东西主宰了,1)Web,2)移动设备iOS或Android。Windows的图形界面不吃香了。 · 越来越多的企业在用成本低性能高的Linux和各种开源技术来构架其系统,Windows的成本太高了。 · 微软的东西变得太快了,很不持久,他们完全是在玩弄程序员。详情参见《Windows编程革命史》 所以,我个人认为以后的趋势是前端是Web+移动,后端是Linux+开源。开发这边基本上没Windows什么事。 启蒙入门 1、 学习一门脚本语言,例如Python/Ruby 可以让你摆脱对底层语言的恐惧感,脚本语言可以让你很快开发出能用得上的小程序

Java Servlet工作原理问答

坚强是说给别人听的谎言 提交于 2019-12-12 12:16:12
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 导读 本文来自stackoverflow的问答,讨论了Java Servlet的工作机制,如何进行实例化、共享变量和多线程处理。 问题:Servlet是如何工作的?Servlet 如何实例化、共享变量、并进行多线程处理? 假设我有一个运行了大量 Servlet 的 web 服务器。通过 Servlet 之间传输信息得到 Servlet 上下文,并设置 session 变量。 现在,如果有两名或更多使用者向这个服务发送请求,接下来 session 变量会发生什么变化?究竟是所有用户都是用共同的变量?还是不同的用户使用的变量都不一样?如果是后者,服务器如何区分不同用户? 另一个相似的问题,如果有 *n* 名用户访问一个特定的 Servlet,那么该 Servlet 是仅在第一个用户首次访问的时候实例化,还是分别为每个用户实例化? 回答(BalusC): ServletContext 当 Servlet 容器(比如 Apache Tomcat )启动后,会部署和加载所有 web 应用。当web 应用被加载,Servlet 容器会创建一次 ServletContext ,然后将其保存在服务器的内存中。web 应用的web.xml 被解析,找到其中所有 servlet、filter 和 Listener 或