后端杂烩

来源:互联网 发布:ubuntu 字体不好看 编辑:程序博客网 时间:2024/05/01 18:41

Servlet技术可以将http请求和响应封装在标准的java类中实现各种web应用方案。

Jsp(java server page)在html页面中添加java程序段(scriptlet)和jsp标记(tag)形成jsp。

在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。另外Tomcat也提供了一个应用:manager,访问这个应用需要用户名和密码,用户名和密码存储在一个xml文件中。通过这个应用,辅助于Ftp,你可以在远程通过Web部署和撤销应用。当然本地也可以。

Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache.可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet.这种集成只需要修改一下Apache和Tomcat的配置文件即可。

Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展。Apache和Tomcat都可以做为独立的web服务器来运行,但是Apache不能解释java程序(jsp,serverlet)。Apache是普通服务器,本身只支持html即普通网页。不过可以通过插件支持php,还可以与Tomcat连通(单向Apache连接Tomcat,就是说通过Apache可以访问Tomcat资源。(反之不然)。两者都是一种容器,只不过发布的东西不同:Apache是html容器,功能像IIS一样;Tomcat是jsp/servlet容器,用于发布jsp及java的,类似的有IBM的webshere、EBA的Weblogic,sun的JRun等等。Apache只支持静态网页,但像asp,php,cgi,jsp等动态网页就需要Tomcat来处理。Apache和Tomcat整合使用:如果客户端请求的是静态页面,则只需要Apache服务器响应请求;如果客户端请求动态页面,则是Tomcat服务器响应请求;因为jsp是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销。

Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon.com、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。

Tomcat是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器。Tomcat

Server是根据servlet和JSP规范进行执行。

Jsp的工作原理:

Jsp第一次被请求的时候,容器会把jsp转化为servlet。在转化时候,所有的html的标签都会包含到println()语句中,所有的jsp代码都会转化为java代码。如果转化过程出现了错误,转化停止,并向服务器和客户端输出错误信息,如果转化成功,servlet会被编译为class文件,因为编译耗时,所以第一次访问的时候时间会长一些。

Jsp容器还负责调用jsp转化而来的servlet,servlet负责提供相应用户的请求。调用servlet时候先调用的是jspinit()方法,然后调用jspService()方法。对于客户端的每一个请求,jsp容器都会启动一个新的线程处理请求。

如果jsp被修改,服务器将会根据设置决定是否对于该文件重新编译,如果要编译结果取代servlet,并继续以上过程。

当servlet处理完毕后,调用jspDestroy()方法结束生命周期,同时被jvm的垃圾回收器回收。

Jsp的注释方式:

Html注释可见,jsp注释<%--

-->用户不可见。

Jsp声明方式:

在jsp页面定义合法的变量和方法,<%!%>,在当前页面有效,不会产生任何输出。

如果需要产生输出,可以使用jsp表达式或者脚本片段Scriptlets.

Jsp表达式:<%= %>

Jsp脚本片段:<% %>,定义变量,调用方法,进行表达式计算。

Jsp编译指令:

编译指令用于设置整个jsp页面相关的属性,三个指令:page,include,taglib.

<%@ page language=”java”pageEncoding=”GBK”%>

<%@ include file=”路径”%>

<%@ taglib uri=”taglibURI”prefix=”tabPrefix”%>

Jsp动作指令:

动作指令运行脚本动作。7个动作指令。

Jsp内置对象:9个

内置对象,不需要预先定义就可以在jsp页面中直接使用的对象。

1request:获取客户端提交的数据,包括头信息,客户端地址,请求方式等。

2response:对客户端的请求做出动态的响应,向客户端发送数据。

3session:客户打开浏览器连接服务器开始,到用户关闭这个浏览器的整个阶段称为会话。Session对象可以用来存储用户的会话信息会话状态。

4out:向客户端输出各种数据。

5page:指当前页面本身,类似java的this

6application:实现用户间的数据共享,存放全局变量。

7pageContext:管理对属于jsp中特殊可见部分中已经命名对象的访问。

8config:获取服务器初始化配置参数。

9exception:处理jsp页面中的错误和异常。

Servlet通常被部署到容器中,由容器连接到web服务器。当客户端请求的时候,把web服务器的请求转发到servlet容器,容器会调用相关的servlet。Servlet的生命周期由servlet容器控制:

1加载并实例化servlet,即servlet类载入jvm中并实例化。Servlet载入jvm的时机有三种,当服务器启动,当第一次请求调用servlet,根据管理员要求。加载后实例化一个或者多个实例(例如,一个servlet类因为不同的参数有多个定义,或者servlet实现了singleThreadModel而导致容器为之生成一个实例池)。Servlet被实例化以后,容器会在客户端请求钱初始化,即调用init方法。执行完init后即为已初始化状态。

2处理客户端请求。客户端发来请求时,容器创建一个servletRequest和一个servletResponse对象。调用service方法,把请求委托给servlet。如果是http请求的话就是调用相应的doget,dopost方法。

Servlet在处理用户请求的时候可能抛出servletException或者unavailableException。前者来源于常规操作时候出现的异常。后者是无法访问。如果是暂时的,那么在无法服务的期间对该实例的请求为503,服务器暂时忙,不能处理。如果是永久的,要把servlet从服务中删去,404,请求资源不可用。

3卸载servlet。释放系统资源,如数据库连接。调用destroy后,释放实例。垃圾回收。

//标签库稍微了解使用即可。

标签库:简单的可重用的代码结构。

标签处理器,标签库描述,应用程序部署表述符,jsp页面构成。

标签处理器:处理标签定义属性内容等。

标签库描述:.tld文件,记录自定义标签属性,信息位置。

应用程序部署描述符:要在web.xml中定义信息。

Jsp页面:在jsp页面相关说明即可使用。

Filter预处理用户请求,过滤器

在应用程序中存在请求响应的任何地方拦截请求和响应。以查看提取或操作客户端和服务器之间交互的数据。用户日志记录,访问控制,会话控制。

介于与之相关的servlet或jsp页面与客户端之间。

原理:当某个资源与servlet过滤器关联后,对于该资源的所有的请求将会通过servlet过滤器。Servlet过滤器在servlet被调用之前检查请求的对象request,并决定是将请求转发给过滤链中的下一个资源还是中止请求并相应用户。如果请求被转发给过滤链的下一个资源servlet处理以后,servlet过滤器会检查响应对象response,进行处理后返回。

Listener监听器

监听一些重要事情的发生,如监听客户端的请求,web应用上下文信息,会话信息。

监听器对象可以在事情发生前发生后做一些必要处理。

0 0