2016-09-06 J2EE基础知识之不知

1.中间件、容器、Web服务器

1.1中间件

中间件是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通。中间件处于操作系统和更高一级应用程序之间。

J2EE提出的背景:

1)企业级应用框架的需求:在许多企业级应用中,例如数据库连接、邮件服务、事务处理等都是一些通用企业需求模块,这些模块每次再开发如果都由开发人员来完成的话,将会造成开发周期长和代码可靠性差等问题。于是许多大公司开发了自己的通用模块服务,这些服务型的软件系列被称为中间件。

2)通用的规范:因为这些中间件与用户的沟通都各有不同,从而导致用户无法将其组装在一起为自己服务,于是提出标准的概念,J2EE就是基于JAVA技术的一系列标准。

中间件的功能:将应用程序运行环境与操作系统隔离,从而实现应用程序开发者不必为更多系统问题忧虑,而直接关注该应用程序在解决问题上的能力。

商用中间件主要阵营:微软阵营、Java阵营、开源阵营。

常见的中间件:Apache-Tomcat、IBM-WebSphere、BEA-WebLogic、Kingdee-Apusic

1.2 容器

容器就是中间件的一种,充当中间件的角色。

容器的分类:

1)Web容器

给处于其中的应用程序组件(JSP,Servlet)提供一个环境(Jsp容器和Servlet),是组件(JSP,Servlet)直接跟容器中的环境变量接口交互。容器提供的接口严格遵守J2EE规范中的WEB APPLICATION标准,我们把以上标准的WEB服务器就叫做J2EE的WEB容器。

2)EJB容器

Enterprise java bean 容器。它提供给运行在其中的组件EHB各种管理功能。只要满足J2EE规范的EJB放入容器,马上就会被容器进行高效管理,并通过线程的接口获得系统级别的服务,如邮件服务、事务管理等。

3)Web容器与EJB容器的区别

WEB容器和EJB容器在原理上大体相同,它们都是把外界的交互从而减轻应用程序的负担。

主要区别是被隔离的外界环境。WEB容器主要与基于HTTP请求交互,EJB容器主要是跟数据库、其他服务交互。如Servlet不同关心HTTP的细节,直接引用环境变量session,request,response;EJB不用关心数据库连接速度、各种事务控制,直接由EJB容器完成。

1.3 WEB服务器(程序/软件)

提供Web信息浏览服务,向客户浏览器提供服务的程序

1)目前常见web服务器:

  大型:Microsoft IIS、IBM WebSphere、BEA WebLogic、Apache、Tomcat

  小型:nginx、 micro_httpd、mini_httpd、thttpd、 lighttpd、Shttpd

2)支持J2EE的应用服务器:

  WEBSPHERE、WEBLOGIC、JBOSS、ORACLE APPLICATION SERVER、SUN ONE APPLICATION SERVER 等。

2.ServletContext功能作用

2.1 ServletContext

1)是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放,所有用户共用一个servletContext。

2)一个ServletContext对象表示了一个Web应用程序的上下文,是Web服务器中的一个已知路径的根,为了节省空间,提高效率,ServletContext中,要放必须的、重要的、所有用户需要共享的线程又是安全的一些信息。

2.2 Servlet上下文

1) 提供对应用程序中所有Servlet所共有的各种资源和功能的访问。Servlet上下文API用于设置应用程序中所有Servlet共有的信息。Servlet可能需要共享他们之间的共有信息。运行于同一服务器的Servlet有时会共享资源,如JSP页面、文件和其他Servlet。

如,做一个购物类的网站,要从数据库中提取物品信息,如果用session保存这些物品信息,每个用户都访问一便数据库,效率就太低了;所以要用来Servlet上下文来保存,在服务器开始时,就访问数据库,将物品信息存入Servlet上下文中,这样,每个用户只用从上下文中读入物品信息就行了。

2) servlet可以通过名称将对象属性绑定到上下文。任何绑定到上下文的属性可以被同一个web应用的其他servlet使用。ServletContext接口的下列方法允许访问这种功能:

setAttribute

getAttribute

getAttributeNames

removeAttribute

上下文属性对于创建它们的VM来说是本地的。这防止ServletContext属性存储于分布式容器的共享内存中。当信息需要在运行于分布式环境中的servlet之间共享时,信息被放入会话中(参见第7章“会话”),存储于数据库中,或者存储于EJB组件中。

3)ServletContext接口

ServletContext接口定义了运行servlet的web应用的servlet视图。使用ServletContext对象,servlet可以记录事件日志,获取资源的URL地址,并且设置和保存上下文内可以访问的其他servlet的属性。

容器中部署的每一个web应用都有一个ServletContext接口的实例对象与之关联。如果容器被分布在多个虚拟机上,一个web应用将在每一个VM中有一个ServletContext实例。

4)初始化参数

ServletContext接口的初始化参数允许servlet访问与web应用相关的上下文初始化参数,这些由应用开发人员在部署描述符中指定:

getInitParameter

getInitParameterNames

应用开发人员利用初始化参数传送配置信息。典型的例子是web管理员的e-mail地址或者一个持有关键数据的系统名称。

3.HTTP会话

在HTTP连接间维护用户与统一用户发出的不同请求之间关联的情况称为维护一个会话(session)。

3.1 会话的特征

1)不同用户的会话应当是相互独立的

2)会话一旦建立就应当一直存在,直到用户空闲时间超过了某一个时间界限,容器才应当释放该会话资源

3)在会话的存活期间,用户可能给服务器发送了很多请求,该用户的这些请求信息都可以存储在会话中

3.2 建立过程

1)建立tcp连接
2)发出请求文档
3)发出响应文档
4)释放tcp连接

4.GET与POST请求方式的区别

4.1 GET方法

使用GET请求方式,查询字符串以键值对方式连接在URL后面被被一起传送至服务器。

GET方法特点:

1)GET请求能被缓存;

2)GET请求主要用于获取数据;

3)GET请求的长度有限制;

4)GET请求保存在浏览器的历史记录中;

5)GET请求的URL能保存为书签。

6)请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输

4.2 POST方法

视同POST请求方式,查询字符串在POST请求中单独存在,和HTTP请求一起发送至服务器。

POST方法特点:

1) POST请求不能被缓存下来

2)POST请求不会保存在浏览器浏览记录中

3)以POST请求的URL无法保存为浏览器书签

4)POST请求没有长度限制

4.3 GET与POST区别

  GET POST
点击刷新或返回按钮 没有影响 重新发送数据
添加书签 不能添加 可以添加
缓存 不存在缓存 存在缓存
历史记录 存在历史记录 不存在历史记录
URL长度限制 有长度限制 没有长度限制
编码类型 application/x-www-form-urlencoded
application/x-www-form-urlencoded or multipart/form-data

若传送二进制数据,则需要为其设定multipart编码

传送数据类型 只允许ASCII字符型 没有限制,可为二进制类型
安全性 不要用GET方式提交敏感数据 传输敏感数据请加密
查询字符串可见性 可见 不可见

5.Servlet转发与重定向

response.sendRedirect("a.jsp");——转发;request.getRequestDispatcher("a.jsp").forward(request,response)——重定向

区别:

1)转发在服务器端完成的;重定向是在客户端完成的

2)转发的是同一次请求;重定向是两次不同请求

3)转发不会执行转发后的代码;重定向会执行重定向之后的代码

4)转发浏览器地址栏没有变化;重定浏览器向地址栏有变化

5)转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成

时间: 2024-08-24 21:20:13

2016-09-06 J2EE基础知识之不知的相关文章

J2EE 基础知识积累

1. 面向对象的思维: 1. 有哪些类 那些对象      2. 这些类中,每种类应该具有某种属性和方法      3. 考虑类与类之间应该具有什么样的关系 3. 1. 成员变量可以使用java语言中的任何一种数据类型(包括基本类型和引用类型) 2. 在定义成员变量时可以使其初始化,如果不对其初始化,java使用默认的值对其初始化 3. 成员变量的租用范围为整个类型 4. 如何在内存中区分类和对象 1. 类是静态的概念,代码区 2. 对象是new出来的,位于堆内存,类的每个成员变量在不同的对象中

J2EE基础知识(九)

1.BS与CS的联系与区别. C/S是Client/Server的缩写.服务器通常采用高性能的PC.工作站或小型机,并采用大型数据库系统,如Oracle.Sybase.InFORMix或SQL Server.客户端需要安装专用的客户端软件. B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或InternetExplorer,服务器安装Oracle.Sybase.InFORMix或SQL Server等数据库.在这种结构

2016.3.22--js各种基础知识(一)

今天学了js一些基础的对象,在说对象之前,先说说js的语言特性: js具有动态语言特性,和之前所学的java不一样,它逐行执行代码,同时js基于原型模式,通过clone来创建一个一模一样的对象. 创建对象的方式方法也多是多样.今天也接触了一些比较基础的对象使用方式 1.Date,可以通过get/set各类时间(年,月,日,时,分,秒),获得时间可以在主页记录,为了方便观看,需要做一些设置,比如星期的表现之类的 2.字符串,可以通过对象去解析,自己没怎么用好的有:indexOf(用于检索是否有字符

[转] J2EE基础知识

Servlet总结 阐述Servlet和CGI的区别? CGI的不足之处: Servlet的优点: Servlet接口中有哪些方法及Servlet生命周期探秘 get和post请求的区别 什么情况下调用doGet()和doPost() 转发(Forward)和重定向(Redirect)的区别 自动刷新(Refresh) Servlet与线程安全 JSP和Servlet是什么关系 JSP工作原理 JSP有哪些内置对象.作用分别是什么 Request对象的主要方法有哪些 request.getAtt

编程必备基础知识|计算机组成原理篇(06):计算机的字符与编码集

计算机基础方面的知识,对于一些非科班出身的同学来讲,一直是他们心中的痛,而对于科班出身的同学,很多同学在工作之后,也意识到自身所学知识的不足与欠缺,想回头补补基础知识.关于计算机基础的课程很多,内容繁杂,但无论是相关书籍还是大学课程,都有点脱离工作.特别地,计算机基础知识体系庞杂,想要从零学习或者复习都耗时耗力. 有鉴于此,本系列文章将带你更快的补足编程必备基础知识,涵盖计算机领域三大基础知识:计算机组成原理.操作系统.计算机网络,这些都是大学计算机课程里面最重要的内容.文章对这些内容做了提炼和

编程必备基础知识|计算机组成原理篇(09):CPU的控制器和运算器

计算机基础方面的知识,对于一些非科班出身的同学来讲,一直是他们心中的痛,而对于科班出身的同学,很多同学在工作之后,也意识到自身所学知识的不足与欠缺,想回头补补基础知识.关于计算机基础的课程很多,内容繁杂,但无论是相关书籍还是大学课程,都有点脱离工作.特别地,计算机基础知识体系庞杂,想要从零学习或者复习都耗时耗力. 有鉴于此,本系列文章将带你更快的补足编程必备基础知识,涵盖计算机领域三大基础知识:计算机组成原理.操作系统.计算机网络,这些都是大学计算机课程里面最重要的内容.文章对这些内容做了提炼和

RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙

消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以简单地描述为: 当不需要立即获得结果,但是并发量又需要进行控制的时候,差不多就是需要使用消息队列的时候. 消息队列主要解决了应用耦合.异步处理.流量削锋等问题. 当前使用较多的消息队列有RabbitMQ.RocketMQ.ActiveMQ.Kafka.ZeroMQ.MetaMq等,而部分数据库如Re

python基础知识9——模块2——常见内置模块

内置模块 内置模块是Python自带的功能,在使用内置模块相应的功能时,需要[先导入]再[使用] 1.sys 用于提供对Python解释器相关的操作: 1 sys.argv 命令行参数List,第一个元素是程序本身路径 2 sys.exit(n) 退出程序,正常退出时exit(0) 3 sys.version 获取Python解释程序的版本信息 4 sys.maxint 最大的Int值 5 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 6 sys.platf

linux入门基础知识及简单命令介绍

linux入门基础知识介绍 1.计算机硬件组成介绍 计算机主要由cpu(运算器.控制器),内存,I/O,外部存储等构成. cpu主要是用来对二进制数据进行运算操作,它从内存中取出数据,然后进行相应的运算操作.不能从硬盘中直接取数据. 内存从外部存储中取出数据供cpu运存.内存的最小单位是字节(byte) 备注:由于32的cpu逻辑寻址能力最大为32内存单元.因此32位cpu可以访问的最大内存空间为:4GB,算法如下: 2^32=2^10*2^10*2^10*2^2 =1024*1024*1024