zoukankan      html  css  js  c++  java
  • 从零深入 tomcat

    1、tomcat的安装使用

      tomcat是实现了J2EE标准的最简单轻巧的WEB服务器,所以使用tomcat必须安装JDK咯!

      ① 安装JDK并设置环境变量;

      ②设置tomcat的环境变量;

      这两小步随便一百度就OK,没有什么难度。

      运行“命令提示符”输入startup  即可正常启动,如果出现闪退,就是环境变量设置的有问题。。需要重新设置环境变量!

    2、tomcat目录结构

         

        受本人水平限制,只是简单说明tomcat的目录结构

        bin    此文件夹中是一些批处理命令(.bat文件,其中包括启动/关闭( startup.bat/shutdown.bat ))命令;还有一些动态链接库、jar包等。

        config   此文件夹中是服务器的一些配置文件,其中最主要的是service.xml文件  服务器监听的端口号就在此配置 默认为8080

        lib    jar包

        log    服务器的日志存在此文件夹内

        temp      存放临时文件

        wepapps 默认站点的文件就放在这里面

        work  存放JSP生成的Servlet源文件和字节码文件

    3、搭建自己的站点

       ① 在webApps文件夹下新建一个文件夹,命名为myWebApp (可随意命名);

       ② 在myWebAPP文件夹下新建一个文件(index.html)和文件夹(WEB-INF)  文件和文件夹的名字不能随意命名

       ③ 拷贝其他示例中的WEB-INF文件夹下的web.xml到自己的WEB-INF文件夹下

       ④ 修改web.xml文件内容如下:

    <?xml version="1.0" encoding="ISO-8859-1"?>  
     
    <!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>My Web Application</display-name>  
    <description>  
    A application for test.  
    </description>  
    </web-app>  

       ⑤ 在index.html文件中添加自定义内容,如:

    1 <html>
    2   <head>
    3     <title>Myself Webstation</title>
    4   </head>
    5   <body>
    6     <h1>利用tomcat搭建自己的站点</h1>
    7   <body>
    8 </html>

      OK了,现在在浏览器中输入:http://localhost:8080/myWepApp/index.html   就可以看到自己创建的HTML页面了。局域网内部,就可以通过你的http://你的IP:8080/myWepApp/index.html    访问了

      那么,如果想像examples 一样 输入:http://localhost:8080/myWepApp   就可以访问了,该怎么做呢?

      修改web.xml文件,添加如下内容就OK了,(这是如果加上index.xml就不管用了。。)

     <welcome-file-list>
            <welcome-file>index.html</welcome-file>
            <welcome-file>index.xhtml</welcome-file>
            <welcome-file>index.htm</welcome-file>
            <welcome-file>index.jsp</welcome-file>
     </welcome-file-list>

     4、细说server.xml

      server.xml是tomcat服务器的配置文件,其中各个标签含义如下:

    <Server port=”8005″ shutdown=”SHUTDOWN” debug=”0″>

      在8005端口处监听服务器的关闭请求,如果收到“shutdown” 就关闭服务器。可以在命令行中输入:telnet localhost 8005然后输入shutdown tomcat即关闭;

      <service>元素,<service>中包含一个<engine>元素和多个<Connector>元素,<service>可以理解为一个“容器”,但实际上并不是容器,只是<Connector>(连接器)的组合。

      

    <Connector port=”8080″ maxThread=”50″ minSpareThreads=”25″  maxSpareThread=”75″ enableLookups=”false” redirectPort=”8443″  acceptCount=”100″ debug=”0″ connectionTimeout=”20000″  disableUploadTimeout=”true” />

      <Connector> 连接器,代表一个请求或应答所需要的端点,只是传递请求,不处理请求。处理请求是通过<container>容器; 

          enableLookups属性:开启或关闭DNS查询  默认是开启,但比较影响性能;

          acceptCount属性   :线程超过100时,后来的请求返回 connector refused;

          maxThreads 属性  : tomcat可创建的最大线程数  可以根据机器的内存可性能调整 最大可以在800左右

          minSpareThreads :初始化线程数目

          maxSpareThreads :一旦线程数目超过此值,tomcat 就会关掉不再需要的socket线程

          connectionTimeout:网络连接超时时间  设置为0 永不超时

       <Engine name="Catalina" defaultHost="localhost">
          
          <Realm className="org.apache.catalina.realm.LockOutRealm">
            
            <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                   resourceName="UserDatabase"/>
          </Realm>
    
          <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true">
    
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="localhost_access_log." suffix=".txt"
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    
          </Host>
        </Engine>

      一个<service>元素只能有一个我<engine>元素

      defaultHost:  处理客户请求的默认主机名

        每一个<Host>元素定义了一个虚拟主机,一个<engine>元素可以有一个或多个虚拟主机

        appBase:虚拟主机的目录  

        autoDeploy:设置为true  当虚拟主机下有目录添加进来是,tomcat会自动部署

        unpackWARs:设置为true 表示会将war文件先展开,然后运行;设置为false 表示可以直接运行.war文件

      <host>元素下的<context>元素  一个<context>元素代表一个web应用

    <!– Context,对应于一个Web App  path : 该Context的路径名是”",故该Context是该Host的默认Context docBase : 该Context的根目录是webapps/mycontext/ reloadable:如果这个属性设为true,  Tomcat服务器在运行状态下会监视在WEB-INF/classes和Web-INF/lib目录CLASS文件的改运.如果监视到有class文件 被更新,服务器自重新加载Web应用 useNaming:指定是否支持JNDI,默认值为了true cookies指定是否通过Cookies来支持Session,默认值为true –> 
     <Context path=”" docBase=”mycontext” debug=”0″/>

      下面总结一些server.xml的结构:

    <server>
        <service>
            <engine>
                <Host>
                </Host>
            </engine>
            <Connector>
            </Connector>
            <Connector>
            </Connector>
        </service>
    </server>

      对应的示意图如下:

                

        大概就是这个样子的!

     5、tomcat处理一个请求的过程

      加入客户的请求是:http://localhost:8080/wsota/wsota_index.jsp

      ① 请求被发送到主机的8080端口,被在8080端口侦听的connector获取;

      ② connector 将请求交给他所在service的engine处理 并等待engine的回应

      ③ engine首先匹配虚拟主机  找到localhost,匹配不到 则交给默认主机处理

      ④ 虚拟主机获得请求 wsota/wsota_index.jsp

      ⑤ 虚拟主机根据请求路径”/wsota“匹配他所拥有的context  匹配不到交由默认的context去处理

      ⑥ path=”/wsota”的Context获得请求/wsota_index.jsp

      ⑦ Context 根据请求在他的mapping table 中找对应的servlet,对应于JSPservlet类

      ⑧ 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServletdoGetdoPost方法(暂时不太懂)

      ⑨ Context把执行完了之后的HttpServletResponse对象返回给Host

      ⑩ HostHttpServletResponse对象返回给Engine

      ⑪ EngineHttpServletResponse对象返回给Connector 

      ⑫ ConnectorHttpServletResponse对象返回给客户browser

    6、web.xml详解

      web.xml是针对每一个具体的web站点而进行的配置,如果没有配置 则默认使用config中的web.xml

        web.xml文件中的标签比起service.xml中的标签容易理解好多 在此不详细描述,只介绍个别标签  百度”tomcat web.xml 配置详解“ 很容易得到想要的东西。

    <servlet-mapping>
         <servlet-name>calculate</servlet-name>
         <url-pattern>/getvalue</url-pattern>
    </servlet-mapping>

      <servlet-mapping>  是定义在servlet 和URL之间的一种映射,context就是通过这种映射去根据URL请求去匹配servlet的。

      在<servlet-mapping> 下包含两个标签  <servlet-name>和<url-pattern>  当接受到getvalue请求时,便用名字为calculate的servlet去处理。

    <init-param>
                <!-- 请求对应的commandid -->
                <param-name>name1</param-name> 
           <param-value>value</param-value>
    </init-param>

      在web.xml中使用<init-param>标签的作用,就是为了在servlet中通过方法获取值,如:

    this.getInitParameter("name1")

      返回值即为:   value

     7、tomcat实现基础认证(base64)

      首先修改tomcat—user.xml文件(在conf文件夹下,这个文件默认包含了三个用户 (tomcat、role1、both) 的定义);这时候创建了用户角色。

      下面需要为用户角色分配权限(设置用户角色的属性)

      为了配合测试,在webapp目录下新建一个目录 authority,里面放一个文件 important.html   下面修改WEB-INF下面的web.xml配置文件。

      添加如下内容

    <security-constraint>        <!--此标签的作用是限制访问资源-->
             <web-resource-collection>
                     <web-resource-name>
                         Restricted Area
                     </web-resource-name>
                     <url-pattern>/authority/*</url-pattern>   <!--通过URL的方式 限制访问资源;  也可以通过<http-method>  限制访问方法的方式限制-->
             </web-resource-collection>
            <auth-constraint>                     <!--具有访问权限的用户-->
                         <role-name>tomcat</role-name>
             </auth-constraint>
    </security-constraint>
         
     <login-config>
             <auth-method>BASIC</auth-method>    <!--用于指定验证方法 有BASIC、DIGEST、FORM、CLIENT-CERT-->
             <realm-name>Authenticate yourself</realm-name>   <!--如果选用 BASIC 方法进行验证的时候,标准登录对话框中的一个描述名称。-->
     </login-config>

      好了,现在通过http://localhost:8080/webapp/authority/important.html  访问,就会出现对应需要输入用户名和密码的对话框了!

     8、使用tomcat实现HTTPS安全访问

      首先需要生成两个文件,.keystore   和 .cer文件,然后导入JVM,之后修改配置文件,就OK !这些操作都是通过key-too命令完成的。百度一下,就可以了,自己试过  不过过了几天,就不想再整理了。

    9、使用tomcat 实现摘要验证

    10、tomcat 配置serverlet程序

      http://www.cnblogs.com/tengpan-cn/p/4908964.html

  • 相关阅读:
    FEniCS 1.1.0 发布,计算算术模型
    Piwik 1.10 发布,增加社交网站统计
    淘宝褚霸谈做技术的心态
    CyanogenMod 10.1 M1 发布
    Druid 发布 0.2.11 版本,数据库连接池
    GNU Gatekeeper 3.2 发布
    Phalcon 0.9.0 BETA版本发布,新增大量功能
    EUGene 2.6.1 发布,UML 模型操作工具
    CVSps 3.10 发布,CVS 资料库更改收集
    Opera 移动版将采用 WebKit 引擎
  • 原文地址:https://www.cnblogs.com/tengpan-cn/p/4693231.html
Copyright © 2011-2022 走看看