servlet大致分为2.5版本和3.0版本的,两者都需要继承Httpservlet!
这两个版本的最大区别就是,前者需要在web.xml配置相关信息,后者直接写到注解里面。但现在大部分编译软件已经帮我们解决了这个麻烦,可以直接通过创建不同版本的servlet,后台自动帮你配置。
而本文讲的是编译器无法自动完成初始化参数的操作。
首先,我们得知道servlet可以继承父类的init和destroy方法。
init方法
在收到第一次请求时会自动执行,和dopost/doget的最大区别就是,后者是每次接受到请求就会执行。
当然我们通过一定的设置,可以使得init正在tomcat启动时就执行
具体请看下方
2.5在web.xml的相应《servlet》标签体中加上《load-on-startup》
<servlet>
<servlet-name>WelcomeServlet2</servlet-name>
<servlet-class>org.lanqiao.servlet.WelcomeServlet2</servlet-class>
<load-on-startup>1</load-on-startup><!-- 设置servlet中的初始化在tomcat运行时执行 -->
</servlet>
3.0方式是在注解里面写
@WebServlet(value="/WelcomeServlet",loadOnStartup=1)
destroy方法
在关闭tomcat服务器的时候,程序会默认执行。
现在回归正题*
初始化参数分为局部和全局的
局部的参数只能当前serverlet可以使用,全局的参数是整个项目都能使用,下来具体来讲具体怎么配置和使用。
2.5方式的局部配法
<servlet>
<servlet-name>WelcomeServlet2</servlet-name>
<servlet-class>org.lanqiao.servlet.WelcomeServlet2</servlet-class>
<load-on-startup>1</load-on-startup><!-- 设置servlet中的初始化在tomcat运行时执行 -->
<init-param><!-- 局部初始化参数 -->
<param-name>servletparamname</param-name>
<param-value>servletparamvalue..</param-value>
</init-param>
</servlet>
3.0方式的局部
@WebServlet(value="/WelcomeServlet",loadOnStartup=1,initParams= {@WebInitParam(name="servletparamname30",value="servletparamvalue")})
值得注意的是,无论是2.5还是3.0,全局的初始化参数都必须配置web.xml文件!例如下方的:
<context-param>
<param-name>globalParam</param-name>
<param-value>global value...</param-value>
</context-param>
最后给大家举个2.5使用的例子:(3.0也是一样的,只是我2.5前面的信息写的比极全面,便于读者联系上下文)
public void init() throws ServletException {//第一次访问servlet会被执行
System.out.println("init.....");
//获取当前servlet的初始化参数
String value = super.getInitParameter("servletparamname");
System.out.println("当前servlet的参数servletparamname的值是:"+value);
//获取当前Web容器的初始化参数
ServletContext servletContext = super.getServletContext() ;
String globalValue = servletContext.getInitParameter("globalParam");
System.out.println("当前Web容器的 参数globalValue的值是:"+globalValue);
}
好了,以上就是我的一些看法。