一、Servlet配置和映射的要点
二、ServletConfig接口
1、ServletConfig接口的作用
2、重写Servlet中几个方法时需要注意的几点
一、Servlet配置和映射的要点
(1)/代表当前Web应用程序的根目录,而不是整个Web站点的根目录。(因为web.xml中只能配置当前web应用程序中的Servlet所以这里的/代表当前Web应用程序的根目录也是合情合理的,如果代表整个Web站点的根目录不仅不会起到什么用处,还有可能由于不小心写错当前应用程序名称而导致配置错误)
(2)Servlet映射到的URL中也可以使用*通配符,但是只能有两种固定的格式:
一种是 *.扩展名 在*前面不能有目录分隔符"/",例如,*.do 表示匹配以 .do 结尾的所有URL;
另一种是以正斜杠/开头并以/* 结尾,例如, /* 表示配置当前Web应用程序下的所有URL, /action/* 表示匹配当前Web应用程序下的 /action 子路径下的所有URL
总结:
1、* 可以与任何字符匹配,即可以代表目录分割符/,也可以代表路径名action和文件名a.html或a
所以可以认为*本身代表着所有,所以*只能使用在URL最后一级的匹配路径中,因为如果将*放到前面的话,*后面配置的具体路径将没有任何意义。不过如果将*放置到不是最后一级匹配路径的时候*就不代表通配符了而是代表*字符本身的含义了
2、如果URL以/开头的话,*就代表了所有不以/开头的子目录,例如:/yyy/* 中*可以代表 action或action/test 或 action/test/a.html或 action/test/abc/a.do 等;
3、如果URL以*开头的话,*就代表了所有已/开头的扩展名符合配置的所有路径,例如,*.do 中的* 可以代表
/abc/dd.do 或 /ddd.do 或 /action/test/aaa/bbb/ccc.do 中.do之前的所有内容
二、ServletConfig接口
1、ServletConfig接口的作用
(1)ServletConfig接口可以用于直接获取在web.xml中配置的Servlet相关信息,例如:参数名、参数值、Servlet名称等
(2)ServletConfig接口可以获取到ServletContext接口的引用,该引用可以获取ServletContext相关的信息,例如:上下文参数名、上下文参数值、上下文名称、访问WEB-INF下的资源、获取WEB-INF的上级的绝对路径以及对"application"范围内的属性进行操作。
(3)由于一个Web应用程序中的所有Servlet都共享同一个ServletContext对象,所以ServletContext对象被称之为application对象(Web应用程序对象)
2、重写Servlet中几个方法时需要注意的几点
(1)service方法
每当针对某个Servlet的访问请求到达时,Servlet引擎就会调用该Servlet实例对象的service方法来进行响应。HttpServlet中实现的service会根据不同的请求方式进行转发到对应方法处理。HttpServlet类为每一种HTTP 请求方式都定义了一个对应的doXxx方法,例如:与Get请求方式对应的是doGet方法,与Post请求方式对应的是doPost方法。 如果我们重写了service方法,且没有通过super.service()来调用父类方法的话,不管以什么方式访问该Servlet 都无法被转发到doGet或doPost等方法的
(2)doGet和doPost等方法
一般我们都会重写doGet和doPost这两个方法的,不过由于HttpServlet中的doGet和doPost等方法的实现有, resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg);一旦调用了该方法就会向resp对象中放在错误提示信息,Servlet将不会继续向web界面输入内容,所以当重写doGet和doPost等方法的时候不能通过super.doXxx的方式来调用父类的同名方法,否者就会报 HTTP method GET is not supported by this URL 错误
(3)init
init方法会在第一次执行Servlet之前进行调用初始化Servlet的一些信息。init方法是在GenericServlet类中定义的,并且定义了两个init方法,init()和init(ServletConfig config)两个方法,其中init(ServletConfig config)方法中进行了对init()方法的调用;GenericServlet提供这个无参数的init()方法就是提供我们开发人员进行初始化Servlet进行重写的。因为如果没有这个无参数的init()方法的话,我们就只能对有参数的ini(ServletConfig config)进行重写,可是在重写的时候只有通过super.init(ServletConfig config)调用父类的同名同参的方法才能达到GenericServlet类预期的效果,因为GenericServlet类在init(ServletConfig config) 将参数config保存为自己类的一个私有成员变量,并且实现的ServletConfig接口的其他方法会访问该私有变量,如果没有通过super.init(ServletConfig config)调用父类的同名同参方法的话将,将私有参数将为null,例如:
getServletContext()将会包空指针异常错误。可是GenericServlet却不能确保所有的开发人员都不会忘记通过super.init(ServletConfig config)来调用父 类的同名同参方法,所以就添加了一个无参数的init()方法让开发人
员来进行自己的初始化工作而不会对GenericServlet的其它方法有任何影响。
相关推荐
Servlet 是一种服务器端的编程语言,是 J2EE 中比较关键的组成部分,Servlet 技术的推出,扩展了 ava 语言在服务器端开发的功能,巩固了 ...章中将介绍 Servlet 的基础知识,并通过具体的示例介绍 Servlet 的强大功能。
我们已经知道,SUN公司以Java Servlet为基础,推出了Java Server Page。JSP提供了Java Servlet的几乎所有好处,当一个客户请求一个JSP页面时,JSP引擎根据JSP页面生成一个Java文件,即一个servlet。这一章,将对...
Servlet开发基础
用 J2EE 开发企业应用程序时,它向人们提供了众多选项 — 使得为基础结构选择合适的解决方案不是一件简单的任务。J2EE 探险者是专门针对 Java 技术经理、架构设计师和开发人员的系列文章。该系列中的每一篇文章都会...
JSP动态网页设计:第2章 Servlet开发基础.ppt
零基础学Java_Web开发:JSP+Servlet+Struts+Spring+Hibernate+Ajax 很不错一个ppt 大家可以互相看一下
《Java Web开发基础——从Servlet到JSP》源代码v1.0
Servlet技术也是JSP技术(另外一种动态网页开发技术)的基础。一个Servlet程序就是一个实现了特殊接口的 Java类,用于被支持Servlet的WEB服务器调用和运行,即只能运行于具有Servlet引擎的WEB服务器端。一个Servlet...
JSP基础 Servlet初级教程,和实现例子
web应用开发基础技术, servlet 简单概念以及图示。
课程设计、 毕业设计 开发基础; 任何复杂的框架都是简单的知识组合并延伸的,学好基础知识才是最重要的; 此项目简单,便于理解基本原理,为复杂的Servlet、SSH、SSM等复杂项目的开发打下基础。 实现登录 、 注册 ...
0309_Servlet程序开发 0310_表达式语言 0311_Tomcat数据源 0312_JSP标签编程 0313_JSP标准标签库(JSTL) 0314_AJAX开发技术 0400_第四部分:框架开发 0415_Struts基础开发 0416_Struts常用标签库 0417_...
基于javaWeb原生servlet开发的网盘项目源码(期末大作业).zip基于javaWeb原生servlet开发的网盘项目源码(期末大作业).zip基于javaWeb原生servlet开发的网盘项目源码(期末大作业).zip基于javaWeb原生servlet开发的网盘...
全面覆盖据ava web 开发基础JSP+Servlet+Ajax+ssh框架整合 提供大量案例进行分析
ACCP6.0 S2 使用JSP/Servlet/Ajax技术开发新闻发布系统答案
servlet总结 都是基础和重要的知识点 大学软件专业的上课资料 想巩固基础知识请进