• 周四. 10 月 3rd, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

java web -tomcat

admin

11 月 28, 2021

一,什么是web服务器

      Web服务器可以解析HTTP协议。当Web服务器接收到一个HTTP请求,会返回一个HTTP响应,例如送回一个HTML页面。为了处理一个请求Web服务器可以响应一个静态页面或图片,进行页面跳转或者把动态响应的产生委托给一些其它的程序例如CGI脚本,JSP脚本,servlets,ASP脚本,服务器端JavaScript,或者一些其它的服务器端技术。无论它们的目的如何,这些服务器端的程序通常产生一个HTML的响应来让浏览器可以浏览。

二,什么是JavaEE

JAVAEE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对JAVAEE中的13种技术规范进行简单的描述

1,JDBC(Java Database Connectivity)   

JDBC API为访问不同的数据库提供了一种统一的途径,象ODBC一样,JDBC对开发者屏蔽了一些细节问题,另外,JDCB对数据库的访问也具有平台无关性。

2,JNDI(Java Name and Directory Interface)   

JNDI API被用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源如DNS和LDAP,本地文件系统,或应用服务器中的对象。

3,EJB(Enterprise JavaBean)  

  JAVAEE技术之所以赢得媒体广泛重视的原因之一就是EJB。它们提供了一个框架来开发和实施分布式商务逻辑,由此很显著地简化了具有可伸缩性和高度复杂的企业级应用的开发。EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用。容器负责提供公用的服务,例如目录服务、事务管理、安全性、资源缓冲池以及容错性。但这里值得注意的是,EJB并不是实现JAVAEE的唯一途径。正是由于JAVAEE的开放性,使得有的厂商能够以一种和EJB平行的方式来达到同样的目的。

4、RMI(Remote Method Invoke)

   正如其名字所表示的那样,RMI协议调用远程对象上方法。它使用了序列化方式在客户端和服务器端传递数据。RMI是一种被EJB使用的更底层的协议。

5、Java IDL/CORBA

   在Java IDL的支持下,开发人员可以将Java和CORBA集成在一起。他们可以创建Java对象并使之可在CORBA ORB中展开, 或者他们还可以创建Java类并作为和其它ORB一起展开的CORBA对象的客户。后一种方法提供了另外一种途径,通过它Java可以被用于将你的新的应用和旧的系统相集成。

6、JSP(Java Server Pages)

   JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。

7、Java Servlet

   Servlet是一种小型的Java程序,它扩展了Web服务器的功能。作为一种服务器端的应用,当被请求时开始执行,这和CGI Perl脚本很相似。Servlet提供的功能大多与JSP类似,不过实现的方式不同。JSP通常是大多数HTML代码中嵌入少量的Java代码,而servlets全部由Java写成并且生成HTML。

8、XML(Extensible Markup Language)

  XML是一种可以用来定义其它标记语言的语言。它被用来在不同的商务过程中共享数据。 XML的发展和Java是相互独立的,但是,它和Java具有的相同目标正是平台独立性。通过将Java和XML的组合,您可以得到一个完美的具有平台独立性的解决方案。

9、JMS(Java Message Service)

  JMS是用于和面向消息的中间件相互通信的应用程序接口(API)。它既支持点对点的域,有支持发布/订阅(publish/subscribe)类型的域,并且提供对下列类型的支持:经认可的消息传递,事务型消息的传递,一致性消息和具有持久性的订阅者支持。JMS还提供了另 一种方式来对您的应用与旧的后台系统相集成。

10、JTA(Java Transaction Architecture)

   JTA定义了一种标准的API,应用系统由此可以访问各种事务监控。

11、JTS(Java Transaction Service)

   JTS是CORBA OTS事务监控的基本的实现。JTS规定了事务管理器的实现方式。该事务管理器是在高层支持Java Transaction API (JTA)规范,并且在较底层实现OMG OTS specification的Java映像。JTS事务管理器为应用服务器、资源管理器、独立的应用以及通信资源管理器提供了事务服务。

12、JavaMail

   JavaMail是用于存取邮件服务器的API,它提供了一套邮件服务器的抽象类。不仅支持SMTP服务器,也支持IMAP服务器。

13、JAF(JavaBeans Activation Framework)

   JavaMail利用JAF来处理MIME编码的邮件附件。MIME的字节流可以被转换成Java对象,或者转换自Java对象。大多数应用都可以不需要直接使用JAF

三,常见web服务器种类

Web服务器根据对javaEE支持的能力分为两大类

 1,        JavaEE服务器(应用服务器)

                     1 )      IBM公司  WebSphere

                     2)      BEA公司  WebLogic

                     3)      JBoss 公司 JBoss

                     4)      Apache组织 Geronimo(免费WebSphere社区版)

 2,        Web容器(servlet/jsp容器)

                     1)      Apache组织 Tomcat

                     2)      Webtide 公司 jetty

,Tomcat背景

自从JSP发布之后,推出了各式各样的JSP引擎。Apache Group在完成GNUJSP1.0的开发以后,开始考虑在SUN的JSWDK基础上开发一个可以直接提供Web服务的JSP服务器,当然同时也支持Servlet, 这样Tomcat就诞生了。Tomcat是jakarta项目中的一个重要的子项目,其被JavaWorld杂志的编辑选为2001年度最具创新的java产品,同时它又是sun公司官方推荐的servlet和jsp容器,因此其越来越多的受到软件公司和开发人员的喜爱。servlet和jsp的最新规范都可以在tomcat的新版本中得到实现。其次,Tomcat是完全免费的软件,任何人都可以从互联网上自由地下载。

,Tomcat版本

Tomcat

JDK

JavaEE

Servlet

JSP

9.x

8及更高的版本

JavaEE8

4.0

2.4?

8.x

7及更高的版本

JavaEE7

3.1

2.3

7.x

6及更高的版本

JavaEE6

3.0

2.2

6.x

5及更高的版本

JavaEE5

2.5

2.1

5.x

1.4及更高的版本

JavaEE1.4

2.4

2.0

4.x

1.3及更高的版本

JavaEE1.3

2.3

1.2

3.x

1.1及更高的版本

JavaEE1.3

2.2

1.1

三,Tomcat安装

 1.exe文件

 2.rar文件

在安装的过程中需要注意的是:tomcat尽量不要存放在目录名称为中文的目录中。

在环境变量中添加CLASSPATH=”%JAVA_HOME%”lib;

,Tomcat目录结构

        1.bin—->这个目录只要是存放了一些bat文件或者sh文件。比如说我们需要启动tomcat的bat就在这个目录下

     启动tomcat的方式:

                     1).点击 startup.bat可以启动tomcat

                    2).在黑窗口下运行 catalina.bat 后面需要跟命令:start启动  stop关闭

                    3).关闭容器 shutdonw.bat或者是直接关闭黑窗口。

           2.conf—>这个目录中存放的都是一些配置文件 xml

          3.lib—->这个目录中存放的是一些jar文件。

                 这里的jar文件重要有两大类:

           1)tomcat自身的jar,

           2)实现javaEE平台下部分标准的实现类(比如:jsp  servlet…)

          4.log—->存放的都是tomcat的日志文件。如果我们想了解黑窗口在启动时的打印信息,可以进到这个目录下

                          找到cataline.log文件在这个文件中可以看到相关记录。

            5.temp—->在这个目录中存放的是tomcat在运行时所产生的一些临时文件。这些文件是否存在并不影响      tomcat的运行,所以这个目录下的内容可以被删除掉。但是:temp文件夹不能删。

            6.webapps—->这个目录主要是存放需要让tomcat去管理的资源的目录。

            7.work—->这个目录主要存放的是tomcat对jsp编译完后得原文件以及class文件。

            8.doc:存放Tomcat文档;

五,Server.xml配置文件简介

     server:          1、port 指定一个端口,这个端口负责监听关闭tomcat的请求 
                           2、shutdown 指定向端口发送的命令字符串 
    service:          1、name 指定service的名字 
    Connector (表示客户端和service之间的连接):
          1、port 指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求 
          2、minProcessors
服务器启动时创建的处理请求的线程数 
          3、maxProcessors
最大可以创建的处理请求的线程数 
          4、enableLookups
如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址 
          5、redirectPort
指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号 
          6、acceptCount
指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理 
          7、connectionTimeout
指定超时的时间数(以毫秒为单位) 
    Engine(表示指定service中的请求处理机,接收和处理来自Connector的请求):
          1、defaultHost
指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的 
    Context (表示一个web应用程序):
          1、docBase 应用程序的路径或者是WAR文件存放的路径 
          2、path 表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/**** 
          3、reloadable 这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib
和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序 
    host (表示一个虚拟主机):
          1、name 指定主机名 
          2、appBase 应用程序基本目录,即存放应用程序的目录 
          3、unpackWARs 如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序 
    Logger (表示日志,调试和错误信息):
          1、className 指定logger使用的类名,此类必须实现org.apache.catalina.Logger
接口 
          2、prefix 指定log文件的前缀 
          3、suffix 指定log文件的后缀 
          4、timestamp 如果为true,则log文件名中要加入时间,如下例:localhost_log.2001-10-04.txt
  Realm (表示存放用户名,密码及role的数据库):
          1、className 指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口 
   Valve (功能与Logger差不多,其prefix和suffix属性解释和Logger 中的一样):
          1、className 指定Valve使用的类名,如用org.apache.catalina.valves.AccessLogValve类可以记录应用程序的访问信息 
    directory(指定log文件存放的位置):
    1、pattern
有两个值,common方式记录远程主机名或ip地址,用户名,日期,第一行请求的字符串,HTTP响应代码,发送的字节数。combined方式比common方式记录的值更多

Tomcat的可视化界面管理
用户配置
      在进行具体Tomcat管理之前,先给tomcat添加一个用户,使这个用户有权限来进行管理。 
      打开conf目录下的tomcat-users.xml文件,在相应的位置添加下面一行: 
    <user name=”user”password=”user”
roles=”standard,manager”/> 
    然后重起tomcat,在浏览器中输入http://localhost:8080/manager/,会弹出对话框,输入上面的用户名和密码即可。

一,关于tomcat的部署项目的方式:

  1,静态部署

tomcat部署项目三种方式:

1.放到webapps目录下:

    直接将web项目文件件拷贝到webapps
目录中

     Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。所以可以将web项目打包成一个 war包放在目录下,服务器会自动解开这个war包,并在这个目录下生成一个同名的文件夹。一个war包就是有特性格式的jar包,它是将一个web程序的所有内容进行压缩得到。具体如何打包,可以使用许多开发工具的IDE环境,如Eclipse等。也可以用 cmd 命令:jar -cvf mywar.war  myweb

     webapps这个默认的应用目录也是可以改变。打开Tomcat的conf目录下的server.xml文件,找到下面内容:

<Host name=”localhost” appBase=”webapps”

      
unpackWARs=”true” autoDeploy=”true”

      
xmlValidation=”false” xmlNamespaceAware=”false”>

将appBase修改即可。

2.修改server.xm 的host节点。添加<Context  path=”/访问资源目录”
docBase=”e:/xxx”/>

在server.xml中指定。在Tomcat的配置文件中,一个Web应用就是一个特定的Context,可以通过在server.xml中新建Context里部署一个web应用程序。打开server.xml文件,在Host标签内建一个Context,内容如下。

在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加:

<Context path=”/hello” docBase=”D:
workspacehelloWebRoot” debug=”0″
privileged=”true”>

</Context>

或者

<Context path=”/myapp” reloadable=”true”
docBase=”D:myapp” workDir=”D:myappwork”/>

或者

<Context path=”/sms4″
docBase=”D:workspacesms4WebRoot”/>

说明:

path是虚拟路径;

docBase 是应用程序的物理路径;

workDir 是这个应用的工作目录,存放运行时生成的与这个应用相关的文件;

debug 则是设定debug level,  0表示提供最少的信息,9表示提供最多的信息

privileged设置为true的时候,才允许Tomcat的Web应用使用容器内的Servlet

reloadable 如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,可以在不重起tomcat的情况下改变应用程序,实现热部署

antiResourceLocking 和antiJARLocking  热部署是需要配置的参数,默认false避免更新了某个webapp,有时候Tomcat并不能把旧的webapp完全删除,通常会留下WEB-INF/lib下的某个jar包,必须关闭Tomcat才能删除,这就导致自动部署失败。设置为true,Tomcat在运行对应的webapp时,会把相应的源文件和jar文件复制到一个临时目录里。

3.在conf目录下找到或者是新建文件夹(Catalina—->localhost—–>访问资源的   xml—–><Context……/>)

创建一个Context文件在conf目录中,新建
Catalina\localhost目录,在该目录中新建一个xml文件,名字不可以随意取,要和path后的那个名字一致,按照下边这个path的配置,xml的名字应该就应该是hello(hello.xml),该xml文件的内容为:

<Context path=”/hello”
docBase=”E:workspacehelloWebRoot” debug=”0″
privileged=”true”></Context>

2,动态部署也称之为热部署

发表回复