当前位置 博文首页 > 努力充实,远方可期:【tomcat】5、调优

    努力充实,远方可期:【tomcat】5、调优

    作者:[db:作者] 时间:2021-08-11 09:59

    • 系列文章目录:https://blog.csdn.net/hancoder/category_10106944.html
    • 0 sevlet的知识,从上面目录中找
    • 1 tomcat的安装与目录结构:https://blog.csdn.net/hancoder/article/details/106765035
    • 2 tomcat源码环境搭建: https://blog.csdn.net/hancoder/article/details/113064325
    • 3 tomcat架构与参数:https://blog.csdn.net/hancoder/article/details/113065917
    • 4 tomcat源码分析:https://blog.csdn.net/hancoder/article/details/113062146
    • 5 tomcat调优:https://blog.csdn.net/hancoder/article/details/113065948

    5 Web 应用配置

    web.xml 是web应用的描述文件, 它支持的元素及属性来自于Servlet 规范定义 。 在 Tomcat 中, Web 应用的描述信息包括

    • tomcat/conf/web.xml 中默认配置
    • 以及 Web 应用 WEB-INF/web.xml 下的定制配置。

    5.1 ServletContext 初始化参数

    我们可以通过<context‐param>添加ServletContext 初始化参数,它配置了一个键值对,这样我们可以在应用程序中使用

    javax.servlet.ServletContext.getInitParameter()方法获取参数。 即req.getServletContext().getInitParameter("")

    <context‐param>
        <param‐name>contextConfigLocation</param‐name>
        <param‐value>classpath:applicationContext‐*.xml</param‐value>
        <description>Spring Config File Location</description>
    </context‐param>
    

    5.2 会话配置

    <session‐config>用于配置Web应用会话,包括 超时时间、Cookie配置以及会话追踪模式。它将覆盖 server.xml 和 context.xml 中的配置。

    HTTP是无状态的,并不知道是否是同一用户

    所以我们使用的是session+cookie的形式

    cookie默认的名称是JSESSIONID

    <session‐config>
        <session‐timeout>30</session‐timeout>
        <cookie‐config>
            <name>JESSIONID</name>
            <domain>www.itcast.cn</domain>
            <path>/</path>
            <comment>Session Cookie</comment>
            <http‐only>true</http‐only>
            <secure>false</secure>
            <max‐age>3600</max‐age>
            </cookie‐config>
        <tracking‐mode>COOKIE</tracking‐mode>
        </session‐config>
    

    配置解析:

    1) session‐timeout : 会话超时时间,单位 分钟

    2) cookie‐config: 用于配置会话追踪Cookie

    • name:Cookie的名称

    • domain:Cookie的域名

    • path:Cookie的路径

    • comment:注释

    • http‐only:cookie只能通过HTTP方式进行访问,JS无法读取或修改,此项可以增加网站访问的安全性。

    • secure:如果是true,此cookie只能通过HTTPS连接传递到服务器,而HTTP 连接则不会传递该信息。注意是从浏览器传递到服务器,服务器端的Cookie对象不受此项影响。

    • max‐age:以秒为单位表示cookie的生存期,默认为‐1表示是会话Cookie,浏览器关闭时就会消失。

      3) tracking‐mode :用于配置会话追踪模式,Servlet3.0版本中支持的追踪模式: COOKIE、URL、SSL

    • COOKIE : 通过HTTP Cookie 追踪会话是最常用的会话追踪机制, 而且Servlet规范也要求所有的Servlet规范都需要支持Cookie追踪。

    • URL : URL重写是最基本的会话追踪机制。当客户端不支持Cookie时,可以采用URL重写的方式。当采用URL追踪模式时,请求路径需要包含会话标识信息,Servlet容器会根据路径中的会话标识设置请求的会话信息。如: http://www.myserver.com/user/index.html;jessionid=1234567890。

    • SSL : 对于SSL请求, 通过SSL会话标识确定请求会话标识。

    req.getSession().getId()

    谷歌浏览器的F11 Application里能看到

    5.3 Servlet配置

    Servlet 的配置主要是两部分, serv let 和 servlet-mapping :

    <servlet>
        <servlet‐name>myServlet</servlet‐name>
        <servlet‐class>cn.itcast.web.MyServlet</servlet‐class>
        <init‐param>
            <param‐name>fileName</param‐name>
            <param‐value>init.conf</param‐value>
            </init‐param>
        <load‐on‐startup>1</load‐on‐startup>
        <enabled>true</enabled>
    </servlet>
    
    <servlet‐mapping>
        <servlet‐name>myServlet</servlet‐name>
        <url‐pattern>*.do</url‐pattern>
        <url‐pattern>/myservet/*</url‐pattern>
        </servlet‐mapping>
    

    配置说明:

    • servlet‐name : 指定servlet的名称, 该属性在web.xml中唯一。
    • servlet‐class : 用于指定servlet类名
    • init‐param: 用于指定servlet的初始化参数, 在应用中可以通过HttpServlet.getInitParameter 获取。
    • load‐on‐startup: 用于控制在Web应用启动时,Servlet的加载顺序。 值小于0,web应用启动时,不加载该servlet,第一次访问时加载。
    • enabled: true , false 。 若为false ,表示Servlet不处理任何请求。
    • url‐pattern: 用于指定URL表达式,一个 servlet‐mapping可以同时配置多个 url‐ pattern。
    Servlet 中文件上传配置:
    <servlet>
        <servlet‐name>uploadServlet</servlet‐name>
        <servlet‐class>cn.itcast.web.UploadServlet</servlet‐class>
        <multipart‐config>
            <location>C://path</location>
            <max‐file‐size>10485760</max‐file‐size>
            <max‐request‐size>10485760</max‐request‐size>
            <file‐size‐threshold>0</file‐size‐threshold>
            </multipart‐config>
    </servlet>
    

    配置说明:

    1) location:存放生成的文件地址。

    2) max‐file‐size:允许上传的文件最大值。 默认值为‐1, 表示没有限制。

    3) max‐request‐size:针对该 multi/form‐data 请求的最大数量,默认值为‐1, 表示 无限制。

    4) file‐size‐threshold:当数量量大于该值时, 内容会被写入文件。

    5.4 Listener配置

    Listener用于监听serv let 中的事件,例如context 、request 、session对象的创建、修 改、删除,并触发响应事件。Listener是观察者模式的实现,在servlet 中主要用于对 context 、request 、session对象的生命周期进行监控。在servlet2.5规范中共定义了8种 Listener。在启动时,ServletContextListener 的执行顺序与web.xml 中的配置顺序一致, 停止时执行顺序相反。

    <listener>
        <listener‐class>org.springframework.web.context.ContextLoaderListener</listener‐class>
    </listener>
    

    5.5 Filter配置

    filter 用于配置web应用过滤器, 用来过滤资源请求及响应。 经常用于认证、日志、加密、数据转换等操作,

    • 在 HttpServletRequest到达 Servlet之前,拦截客户的 HttpServletRequest:根据需要检查 HttpServletRequest,也可以修改 HttpServletRequest头和数据
    • 在 HttpServletResponse到达客户端之前,拦截 HttpServletResponse:根据需要检查 HttpServletResponse,也可以修改 HttpServletResponse头和数据

    配置如下:

    <filter>
        <filter‐name>myFilter</filter‐name>
        <filter‐class>cn.itcast.web.MyFilter</filter‐class>
        <async‐supported>true</async‐supported>
        <init‐param>
            <param‐name>language</param‐name>
            <param‐value>CN</param‐value>
            </init‐param>
    </filter>
    <filter‐mapping>
        <filter‐name>myFilter</filter‐name>
        <url‐pattern>/*</url‐pattern>
        </filter‐mapping>
    

    配置说明:

    1) filter‐name: 用于指定过滤器名称,在web.xml中,过滤器名称必须唯一。

    2) filter‐class : 过滤器的全限定类名, 该类必须实现Filter接口。

    3) async‐supported: 该过滤器是否支持异步

    4) init‐param :用于配置Filter的初始化参数, 可以配置多个, 可以通过 FilterConfig.getInitParameter获取

    5) url‐pattern: 指定该过滤器需要拦截的URL。

    5.6 欢迎页面配置

    welcome-file-list 用于指定web应用的欢迎文件列表。 尝试请求的顺序,从上到下。

    <welcome‐file‐list>
        <welcome‐file>index.html</welcome‐file>
        <welcome‐file>index.htm</welcome‐file>
        <welcome‐file>index.jsp</welcome‐file>
     </welcome‐file‐list>
    

    5.7 错误页面配置

    error-page 用于配置Web应用访问异常时定向到的页面,支持HTT P响应码和异常类两种形式。

    <error‐page>
        <error‐code>404</error‐code>
        <location>/404.html</location>
        </error‐page>
    <error‐page>
        <error‐code>500</error‐code>
        <location>/500.html</location>
        </error‐page>
    
    <error‐page>
        <exception‐type>java.lang.Exception异常类型</exception‐type>
        <location>/error.jsp</location>
        </error‐page>
    

    6.Tomcat 管理配置

    从早期的Tomcat版本开始,就提供了Web版的管理控制台,他们是两个独立的Web应用,位于webapps 目录下。Tomcat 提供的管理应用有用于管理的Host 的host-manager和用于管理Web应用的manager

    6.1 host-manager

    Tomcat启动之后,可以通过 http://localhost:8080/host-manager/html 访问该Web应用。

    host-manager 默认添加了访问权限控制,当打开网址时,需要输入用户名和密码 (conf/tomcat-users.xml中配置) 。

    所以要想访问该页面,需要在conf/tomcat-users.xml 中配置,并分配对应的角色:

    1) admin-gui:用于控制页面访问权限

    2 )admin-script :用于控制以简单文本的形式进行访问

    配置如下:

    <role rolename="admin‐gui"/>
    <role rolename="admin‐script"/>
    <user username="itcast" password="itcast" roles="admin‐script,admin‐gui"/>
    

    登录后,就可以看到我们配置的host标签了。如果我们关掉一个后,他讲访问默认的host。也可以动态添加

    6.2 manager

    manager的访问地址为 http://localhost:8080/manager, 同样, manager也添加了页面访问控制,因此我们需要为登录用户分配角色为:

    <role rolename="manager‐gui"/>
    <role rolename="manager‐script"/>
    <user username="itcast"
          password="itcast" 
          roles="admin‐script,admin‐gui,manager‐gui,manager‐script