servlet两种配置方法详解

摘要:
由ServletConfig获取初始化参数和由Servlet获取初始化参数的方法是一样的。ServletContext对象可以通过在Servlet中的getServletConfig().getServletContext()方法获得。1@WebServlet2publicclassDemoActionextendsHttpServlet{3}总结:共同点:注解访问servlet和web配置文件访问servlet都能完成对servlet的访问。注解访问servlet:优点:代码少,可读性强,易于理解。

1、web.xml中Servlet的注解

1 <servlet>
2          <!--servlet的内部名称,自定义 -->
3         <servlet-name>DemoAction</servlet-name>
4         <!--servlet的类全名:包名+类名 -->
5         <servlet-class>com.uplooking.controller.DemoAction</servlet-class>
6         <load-on-startup>1</load-on-startup>
7 </servlet>  
8 <!--servlet的映射配置 -->
9 <servlet-mapping>
10         <!--servlet的内部名称,一定要和上面的内部名称保持一致 -->
11         <servlet-name>DemoAction</servlet-name>
12         <!--servlet的映射路径(访问serclet的名称 -->
13         <url-pattern>/DemoAction</url-pattern>
14 </servlet-mapping>

1、首先,从浏览器中发送请求,是从当前工程中的路径与servlet-mapping标签中的url-pattern的标签值进行匹配。

2、根据这个映射值,找到servlet-mapping标签中的servlet-name的值与servlet标签中的servlet-name进行匹

3、匹配到以后,找到servlet标签中的servlet-class标签中对应servlet类的src文件夹下的全路径。

4、从而调用并执行相应的servlet类。

注意:servlet-mapping标签中的servlet-name的值与servlet标签中的servlet-name必须相同。

<init-param>初始化参数

1 <init-param>
2             <param-name>abc</param-name>
3             <param-value>123</param-value>
4 </init-param>

一个Servlet可以配置一个或多个初始化参数。

在应用程序中,可以使用Servlet的getInitParameter(String param)来读取初始化param对应的参数;若要读取所有的初始化参数名称,则可以使用getInitParameterNames()方法获得所有的参数名称,类型为枚举(Enumeration)。

 //获取所有初始化参数
 Enumeration<String>strs=this.getInitParameterNames();
 while(strs.hasMoreElements()) {
 str=strs.nextElement();
 System.out.println(str+"     "+this.getInitParameter(str));
 //-->abc 123
 //-->aaa 111
    }

这些初始化参数也可以由ServletConfig对象获取,Servlet提供getServletConfig()方法提供ServletConfig对象。由ServletConfig获取初始化参数和由Servlet获取初始化参数的方法是一样的。

//两种调用getInitParameter的情况,视情况而定
//this是指ServletConfig的对象config
String str=this.getInitParameter("abc");  //第一种
String str=config.getInitParameter("abc");//第二种

初始化参数的一个有趣应用是进行单个文件的访问加密,原理是将用户名和密码写入初始化参数中,这样的好处是简单、方便,缺点是不灵活,安全性也不高,适用于临时性的措施。

<context-param>上下文参数

1 <context-param>
2          <param-name>root</param-name>
3          <param-value>123</param-value>
4  </context-param>

获取context-param需要使用ServletContext对象。ServletContext对象可以通过在Servlet中的getServletConfig().getServletContext()方法获得。得到ServletContext对象后,使用getInitParameter(String param)方法获取名为param的参数值,通过getInitParameterNames()获取所有的context-param名称。

ServletContext context=this.getServletContext();
String root=context.getInitParameter("root");
System.out.println("root="+root);

2、注解访问servlet

1.只需在对应的servlet类中添加servlet注解即可,从浏览器发送请求时,是用当前“工程”下的路径,会去对应servlet类的上面寻找是否存在对应url名称的@webServlet注解,存在的话,调用并执行对应的servlet类。

1 @WebServlet("/DemoAction")
2 public class DemoAction  extends HttpServlet{
3 }

总结:

共同点:注解访问servlet和web配置文件访问servlet都能完成对servlet的访问。

注解访问servlet:

优点:代码少,可读性强,易于理解。

缺点:如果大量使用servlet注解,servlet类文件数量过多,不便于查找和修改。

web配置文件访问servlet:

优点:集中管理各servlet类路径的映射路径,便于修改和管理。

缺点:代码多,可读性不强,不易于理解。

注意:有时候在服务上运行的web程序数据不能及时更新,记得重启服务器或者清除浏览器缓存。

免责声明:文章转载自《servlet两种配置方法详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇HTML5学习区间dp复习 之 tyvj 1198 矩阵连乘下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JAVA继承初始化过程

我们有必要对整个初始化过程有所认识,其中包括继承,对这个过程中发生的事情有一个整体性的概念。请观察下述代码: //: Beetle.java // The full process of initialization. class Insect { int i = 9; int j; static int x1 = prt("sta...

go基础9-并发

并发 并发机制,多goroutine间的共享变量,并发问题的分析手段,解决模式,goroutine和线程区别 竞争条件 并发:无法判断多个事件执行的顺序的情形;并发安全:函数,方法,类型在线性执行或并发执行时,都能正确的返回结果;包级别的导出函数一般都是并发安全的.因为只要让变量不在多个goroutine内共享,它就一定是并发安全的;但是如果存在共享变量,...

转:程序内存空间(代码段、数据段、堆栈段)

https://blog.csdn.net/ywcpig/article/details/52303745 在冯诺依曼的体系结构中,一个进程必须有:代码段,堆栈段,数据段。 进程的虚拟地址空间图示如下: BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Sym...

[iOS]为什么不要在init初始化方法里调用self.view

首先.如果你调用self.view的时候,就会调用view的getter方法, 这个时候,view是空的,那么系统就会自动给你创建一个view,然后就会触发ViewDidLoad方法.那么这个时候,如果你init方法里有数组初始化.但是你还没走到那步,而直接就给数组赋值了,那么这个值赋值给了一个不存在的数组.这样就容易出现错误.所以,尽量不要在init方法...

nginx upstream模块

upstream模块 upstream模块 (100%) nginx模块一般被分成三大类:handler、filter和upstream。前面的章节中,读者已经了解了handler、filter。 利用这两类模块,可以使nginx轻松完成任何单机工作。而本章介绍的upstream,将使nginx将跨越单机的限制,完成网络数据的接收、处理和转 发。 数据转...

微信小程序 生命周期函数详解

微信小程序 生命周期函数 小程序中 判断当前首页是从其他页面返回,还是由入口打开 由于小程序的数据在我们退出小程序时并没有得到释放,因此再次点击开来数据依然没有变成初始化 解决方法:在小程序 data 数据中声明一个变量 isClose 默认为 true 用于判断 是否为从入口打开,当点击跳转页面或者关闭小程序的时候,会触发 OnHide 函数在此函数中将...