1、web.xml中Servlet的注解

 <servlet>
<!-- servlet的内部名称,自定义 -->
<servlet-name>DemoAction</servlet-name>
<!-- servlet的类全名:包名+类名 -->
<servlet-class>com.uplooking.controller.DemoAction</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- servlet的映射配置 -->
<servlet-mapping>
<!-- servlet的内部名称,一定要和上面的内部名称保持一致 -->
<servlet-name>DemoAction</servlet-name>
<!-- servlet的映射路径(访问serclet的名称 -->
<url-pattern>/DemoAction</url-pattern>
</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>初始化参数

 <init-param>
<param-name>abc</param-name>
<param-value>123</param-value>
</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>上下文参数

 <context-param>
<param-name>root</param-name>
<param-value>123</param-value>
</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类。

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

总结:

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

注解访问servlet:

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

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

web配置文件访问servlet:

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

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

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

servlet两种配置方法详解的更多相关文章

  1. JavaScript中数组的两种排序方法详解(冒泡排序和选择排序)

    一.冒泡排序的原理(从小到大) 相邻两个数进行比较,如果前一个数大于后一个数,那么就交换,否则不交换 原理剖析 比如有一组含有6个数字的数:5.3.7.2.1.6一共6个数字,做5次循环,每次循环相邻 ...

  2. 【Python】Linux crontab定时任务配置方法(详解)

    CRONTAB概念/介绍 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行. cron 系统调度进程. 可以使用它在 ...

  3. 局域网内远程连接OPC配置方法详解

    局域网内远程连接OPC配置方法详解 https://wenku.baidu.com/view/20fb8ea6d1d233d4b14e852458fb770bf78a3bcc.html   OPC服务 ...

  4. CentOS防火墙iptables的配置方法详解

    CentOS系统也是基于linux中的它的防火墙其实就是iptables了,下面我来介绍在CentOS防火墙iptables的配置教程,希望此教程对各位朋友会有所帮助. iptables是与Linux ...

  5. visualvm远程监控jvm两种配置方法

    参考:http://blog.itpub.net/17203031/viewspace-765810 一.Jstatd RMI远程监控方法 VisualVM在监控本地JVM的时候是很方便的.只要应用程 ...

  6. iOS同一项目多个Target的快速实现方法 - 两种使用场景详解

    我们项目中,默认建好是只有一个target的,但是,一些场景中,多target能帮助我们更好的使用项目. 场景1: 同一项目,一般会分不同环境:开发环境.测试环境.正式(生产)环境. 这就涉及到一个请 ...

  7. servlet web.xml配置选项详解

    一般的web工程中都会用到web.xml,web.xml主要包括一些配置标签,例如Filter.Listener.Servlet等,可以用来预设容器的配置,可以方便的开发web工程.但是web.xml ...

  8. Android四大组件之服务的两种启动方式详解

    Service简单概述 Service(服务):是一个没有用户界面.可以在后台长期运行且可以执行操作的应用组件.服务可由其他应用组件启动(如:Activity.另一个service).此外,组件可以绑 ...

  9. caffe-windows环境配置(github上官方BVLC/caffe的推荐配置方法详解)

    [转载来的文章:如有侵权,请联系我!我将马上删除!] 首先声明一下,如标题,本教程是caffe在windows系统上的配置方法,而且是github上官方BVLC/caffe目前推荐的配置方法,并不是使 ...

随机推荐

  1. 关于表格table嵌套,边框合并问题的解决方法,table嵌套(转)

    原文地址:http://www.cnblogs.com/zhangym118/archive/2016/05/16/5496931.html [问题] 外层table与内层table嵌套,内外表格都需 ...

  2. CentOS7编译安装SVN(subversion1.9.7)

    参考连接0:http://www.programering.com/a/MDMzYDMwATg.html参考连接1:http://www.zsythink.net/archives/13180.系统信 ...

  3. Linux 系统的启动过程

    1.基本概念 BIOS  中文名  主板BIOS  外文名  Basic Input/Output System  全    称  基本输入输出系统(全称是ROM-BIOS,是只读存储器基本输入/输出 ...

  4. php 当前日期加一天和指定日期加一天

    1.给当前时间加一天?一小时? <?phpecho "今天:",date('Y-m-d H:i:s'),"<br>";echo "明 ...

  5. C#发送内置图片的html格式邮件的代码

    将写内容过程经常用的内容段备份一次,下面的内容是关于C#发送内置图片的html格式邮件的内容,应该对码农们也有用处.MailMessage m = new MailMessage();m.Subjec ...

  6. IP通信基础学习第八周

    安装完华三模拟器,拖多台设备到工作区,全部启动及配置,建立好拓扑图,之后启动命令行终端. 配置登录用户,口令的指令有: <H3C>                       //用户直行 ...

  7. qemu中的内存管理

    qemu负责模拟虚机的外设,因此虚机的线性地址空间主要由qemu进行管理,也就是确定线性地址空间中哪段地址属于哪个设备或者DRAM或者其他的什么. 1.数据结构 1.RAMBLOCK (最直接接触ho ...

  8. 对于react-redux的理解

    一.redux与组件 React-Redux提供connect方法,用于从UI组件生成容器组件 二.react-redux的基本使用 1.引入 import {Provider} from " ...

  9. linux awk用法

    awk是一个强大的文本分析工具,在对数据进行分析并生成报告时显得尤为强大. 使用方法:awk [options]  'BEGIN{ commands } pattern{ commands } END ...

  10. 湖南省队集训 Day 2

    从这里开始 Problem A 走路 Problem B 游戏 Problem C 有趣的字符串题 暴力分又没骗满sad..... Problem A 走路 $O(n^2)$动态规划是显然的. 更新方 ...