Posted in Java, 技术

Servlet & JSP : web.xml 配置学习

Writer      :BYSocket(泥沙砖瓦浆木匠)

微         博:BYSocket

豆         瓣:BYSocket

FaceBook:BYSocket

Twitter    :BYSocket

一.定义

定义时注意:xml元素是区分大小写的,以下必须小写:

<web-app></web-app>

二.url-pattern

1)url-pattern 的值必须以/或者*.开头

  <servlet>
    <servlet-name>TestName</servlet-name>
    <servlet-class>sedion.jeffli.servlet.AServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestName</servlet-name>
    <url-pattern>/UrlTest1</url-pattern>
  </servlet-mapping>
<!--
  <servlet-mapping>
      <servlet-name>TestName</servlet-name>
      <url-pattern>*.urlTest1</url-pattern>
    </servlet-mapping>
-->

2)匹配模式的规则

①优先处理完全匹配

/test1/aa 和 /test1/* 都是一个url-pattern访问路径,则优先请求 http://localhost/webAppTest/test1/aa

②目录映射优先于扩展名映射

/test1/aa 和 /test1/*.html 都是合法的url-pattern访问路径,则优先请求 http://localhost/webAppTest/test1/aa/test.html

③对于重复映射,越长路径越优先

/test1/aa/* 和 /test1/* 都是一个url-pattern访问路径,则优先请求 http://localhost/webAppTest/test1/aa/test.html

三.过滤器

在web.xml文件中使用 filter元素和 filter-name(任意名),filer-class(完全限定类名)声明:

<filter>
  <filter-name>
    TestFilterName
  </filter-name>
  <filter-class>
    sedion.jeffli.testFilter
  </filter-class>
</filter>

通过filter-mapping与

①【servlet-name】一个元素或者多个servlet关联

<filter-mapping>
    <filter-name>TestFilterName</filter-name>
    <servlet-name>SomeServletName</servlet-name>
</fitler-mapping>

【url-pattern】jsp页面关联

<filter-mapping>
    <filter-name>TestFilterName</filter-name>
    <url-pattern>/*</url-pattern>
</fitler-mapping>

四、配置jsp页面

jsp-config 中有两个子元素【taglib】【jsp-property-group】,注意,前者必须出现在后者之前。

【taglib】替代jsp页面中taglib指令

<jsp-config>
    <taglib>
        <taglib-uri>/taglibtest</taglib-uri>
        <taglib-location>/WEB-INF/tlds/test-tags.tld</taglib-location>
    </taglib>
</jsp-config>

配置后,在页面可以用下面简单方式调用标签库

<% taglib uri="/taglibtest" prefix="somePrefix">

五、面向群集环境的开发

例如,tomcat自带一个软件负载器,存在Web应用的tomcat_dir/weapps/blalancer中。

开发一个应用于群集环境的Web应用注意以下几点:

①避免创建实例化变量和静态数据来共享数据。

②不要将数据存储在 ServletContext

③存储在HttpSession中的对象需要实现Serializable接口

如果HttpSession保存的对象不实现Serializable接口,容器便不能迁移会话。

④尽量少在HttpSession中存储信息

在HttpSession中存储大量数据,会降低Web应用性能,特别是请求量相当高时。

泥瓦匠学习的代码都在github上(同步osc git),欢迎大家点star,提意见,一起进步。地址:https://github.com/JeffLi1993

Writer      :BYSocket(泥沙砖瓦浆木匠)

微         博:BYSocket

豆         瓣:BYSocket

FaceBook:BYSocket

Twitter    :BYSocket



发表评论

电子邮件地址不会被公开。 必填项已用*标注