• 从零深入 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

  • 相关阅读:
    ORM和JDBC
    四种会话跟踪技术以及jstl介绍
    GC、进程和线程的定义
    数组和链表的理解,及各自的优缺点
    JSP和Servlet及浏览器与tomcat交互过程
    多线程、同步实现方法及Error和Exception的区别与联系
    Eclipse创建一个普通maven项目详细步骤
    Eclipse创建一个动态maven项目详细步骤
    Myeclipse项目出现红叉解决方案
    数据结构和算法 — 平衡二叉树的实现
  • 原文地址:https://www.cnblogs.com/tengpan-cn/p/4693231.html
Copyright © 2020-2023  润新知