CGI: html
CGI(Common Gateway Interface) 是WWW技术中最重要的技术之一,有着不可替代的重要地位。CGI是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程。CGI规范容许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。 java
ODBC: web
开放数据库互连(Open Database Connectivity,ODBC)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它创建了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。 数据库
1997年,Sun公司退出了Servlet规范,java有了web开发的利器.1998年JSP技术产生,Servlet,JSP加上javaBean让javaweb开发同时拥有了CGI的集中处理能力和PHP的嵌入html的功能.1998年Sun公司发布了EJB1.0的规范,99年Sun发布J2EE的第一个版本.2001年微软提出了ASP.NET技术. apache
Servlet容器为javaweb应用提供运行时环境,它负责管理servlet和JSP的声明周期,以及管理他们的共享数据.也称javaweb的应用容器. 编程
目前最流行的servlet容器软件有:Tomcat(apache),Resin,J2EE服务器(Weblogic,websphere,jboss)也内置了Servlet容器,EJB. 浏览器
Servlet在Web应用中担任重要角色。Servlet运行于Servlet容器中,能够被Servlet容器动态加载,来扩展服务器的功能,并提供特定的服务。Servlet按照请求/响应的方式工做。在Struts和Tapestry框架中,控制器组件就是由Servlet来构成的。 服务器
当用户请求访问某个Servlet时,Servlet容器将建立一个ServletRequest对象和ServletResponse对象。在ServletRequest对象中封装了用户请求信息,而后Servlet容器把ServletRequest对象和ServletResponse对象传给用户所请求的Servlet。Servlet把响应结果写入ServletResponse中,而后由Servlet容器把响应结果传给用户。 session
Serlet容器响应用户请求的过程:
app
在Java Servlet API中有如下几个比较重要的类,它们决定了Web应用的请求/响应方式及各类共享数据的存放地点:
HttpServletRequest: Servlet容器把HTTP请求信息包含在HttpServletRequest对象中,Servlet组件从request对象中读取用户的请求数据。此外,HttpServletRequest能够存放request范围内的共享数据。 HttpServletResponse:用户生成HTTP响应结果。
HttpSession : Servlet容器为每一个HTTP会话建立一个HttpSession实例,HttpSession能够存放session范围的共享数据。
ServletContext: Servlet容器为每一个Web应用建立一个ServletCntext实例,ServletCntext能够存放application范围的共享数据。
在传统的HTML文件中加入Java程序片断和JSP标签,就构成了JSP网页。
当JSP容器接收到Web用户的一个JSP文件请求时,它对JSP文件进行语法分析并生成Java Servlet源文件,而后对其编译。通常状况下。Servlet源文件的生成和编译仅在初次调用JSP时发生。若是原始的JSP文件被更新,JSP容器将检测所作的更新,在执行它以前从新生成Servlet并进行编译。
JSP容器初次执行JSP的过程:
共享数据有4中存在范围。
Page:共享数据的有效范围是用户请求访问的当前页面。
Request:共享数据的有效范围为“用户请求访问的当前Web组件,以及和当前Web组件共享同一个用户请求的其余Web组件。”若是用户请求访问的是JSP网页,那么该JSP网页的<%@include>指令以及<forward>标记所包含的其余JSP文件也能访问共享数据。Request范围内的共享数据实际上存放在HttpServletRequest对象中。
Session:共享数据存在于整个HTTP会话的生存周期内,同一个HTTP会话中的Web组件共享它。Session范围内的共享数据其实是存放在HttpSession对象中。
Application:共享数据存在月整个Web应用的生命周期内,Web应用中的全部Web组件都能共享它,共享数据实际上存放在ServletCntext对象中。
共享数据在Web应用中的范围:
当客户第一次访问Web应用中支持会话的某个网页时们就会开始一个新的HTTP会话,Servlet容器为这个会话建立一个HttpSession对象。接下来,当客户浏览这个Web应用的不一样网页时,始终处于同一个会话中。会话拥有特定的生命周期。在如下状况中,会话将结束生命周期,Servlet容器会将HTTP会话所占有的资源释放掉:
客户端关闭浏览器
会话过时
服务器端调用了HttpSession的invalidate()方法
JavaBean是一种符合特定规范的JAVA 对象。在JAVABean中定义了一系列的属性,并提供了访问和设置这些属性的公用方法。JavaBean能够做为共享数据,存放在page,request,session,application范围内。在JSP文件中,能够经过专门的标签来定义和范围JavaBean。如
<jsp:useBean id="calendar" scope="page/request/session/application" class="employee.Calendar" /> <h2>Calendar of <jsp:getProperty name="calendar" property="username" /></h2>
EJB组件是基于标准分布式对象技术,CORBA和RMI的服务端JAVA组件,EJB组件和JavaBean组件同样,都用于实现企业应用的业务逻辑,它们的根本区别在于,EJB组件老是分布式的,EJB组件运行于EJB服务器中,而JavaBean组件能够和Servlet或JSP运行于同一JAVA虚拟机中。
请求转发
URL重定向
包含
请求转发容许把请求转发给同一应用中的其余Web组件。这种技术一般用于Web应用控制层的Servlet流程控制器,它检查HTTP请求数据,并将请求转发到合适的目标组件,目标组件执行具体的请求处理操做,并生成响应结果。
一个Servlet把请求转发给另外一个JSP组件的过程:
若是在Servlet组件转发请求给一个JSP组件,能够在Servlet的service()方法中执行如下代码:
RequestDispatcher rd = request.getRequestDispatcher(“hello.jsp”); Rd.forward(request.response);
若是在JSP页面中,能够使用<jsp:forward>标签来转发请求,例如:
<jsp:forward page=”hello.jsp”/>
对于请求转发,转发的源组件和目标组件共享request范围内的数据。
请求重定向相似请求转发,可是有一些重要区别:
Web组件能够将请求重定向到任一URL,而不进进是同一应用中的URL。
重定向的元组件和目标组件之间不共用同一个HttpServletRequest对象,所以不能共享request范围内的共享数据。
显示一个Servlet把请求重定向给另外一个JSP组件的过程:
若是当前应用的Servlet组件要把请求转发给URL。能够在Servlet的service方法中执行:
response.sendRedirect(URL);
包含关系容许一个Web组件汇集来自同一个应用中的其余Web组件的输出数据,并使用被汇集的数据来建立响应结果。这种技术一般用于模板处理器,它能够控制网页的布局。模板中每一个页面区域的内容都来自不一样的URL,从而组成单个页面。
显示了一个Servlet包含另外一个JSP组件的过程:
Servlet类使用javax.servlet.RequestDispatcher.include()方法包含其余的Web组件。
例如,若是当前饿Servlet组件包含了三个JSP文件:header.jsp,main.jsp和 footer.jsp,则在Servlet的service()方法中执行以下代码:
RequestDispatcher rd; Rd=req.getRequestDispatcher(“/header.jsp”)); Rd.include(req,res); Rd=req.getRequestDispatcher(“/main.jsp”)); Rd.include(req,res); Rd=req.getRequestDispatcher(“/footer.jsp”)); Rd.include(req,res);
在JSP文件中,能够经过<include>指令来包含其余的Web资源,例如:
<%@ include file=”header.jsp”%> <%@ include file=”main.jsp”%> <%@ include file=”footer.jsp”%>
参考: http://maymay.iteye.com/blog/1278961
20150618
JAVAWEB学习笔记系列
--------------------------------------------
联系方式
--------------------------------------------
Weibo: ARESXIONG
E-Mail: aresxdy@gmail.com
------------------------------------------------