关于Servlet的一些小知识

来源:互联网 发布:单片机与plc的区别知乎 编辑:程序博客网 时间:2024/06/03 21:32

关于Servlet映射的一些知识

1,可以在项目的web.xml文件中添加以下代码

<servlet>

<servlet-name>error</servlet-name>

<servlet-class>com.test.ErrorServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>error</servlet-name>

<url-pattern>/*</url-pattern>

</servlet-mapping>


该Servlet用于匹配url出错时的错误显示页面,一旦用户输入的url错误,没有该页面,就会转向该servlet中进行处理


2,在web.xml文件对struts的匹配中有

<servlet-mapping>

<servlet-name>struts</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

在<url-pattern>*.do</url-pattern>中不要写成<url-pattern>/*.do</url-pattern>

而且该匹配形式的等级是最低的,比上一种情况还低,只能在别的URL匹配失败是才会执行这个匹配结果


3,servlet在运行时是单例的,在第一次访问时初始化一次(init方法),在服务器关闭时销毁(destory方法),每次用户访问时都会调用doGet或者doPost方法

当需要访问servlet的中的成员变量时注意同步问题,如:

synchronized(this){

//放入你要同步的语句

}


4,servlet可以随着服务器的启动而装载,可以再给servlet的init方法中进行业务处理,如每隔一定时间发送邮件,初始化数据库等

<servlet>

<servlet-name>error</servlet-name>

<servlet-class>com.test.ErrorServlet</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

其中1是指有多个servlet需要装载(随着服务器的启动而装载)时,servlet的装载顺序,数字越小越提前装载


5,在servlet中配置初始化参数

<servlet>

<servlet-name>error</servlet-name>

<servlet-class>com.test.ErrorServlet</servlet-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

</servlet>

初始化参数是encoding,值是UTF-8

在servlet中取出可以使用

String encoding = this.getServletConfig().getInitParameter("encoding");

注意:初始化参数可以有多个(即添加多个init-param元素)

6,为所有的servlet配置全局的初始化参数

<context-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</context-param>

初始化参数是encoding,值是UTF-8

在servlet中取出同样可以使用

String encoding = this.getServletConfig().getInitParameter("encoding");


注意:初始化参数可以有多个(即可以添加多个context-param元素)


7,以循环形式取出所有的初始化参数

Enumeration<String> names = this.getServletConfig().getInitParameters();

while(names.hasMoreElements()){

String name = names.nextElement();

String value = this.getServletConfig().getInitParameter(name);

}