一、简单的servlet配置
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>xxx.xxx.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
分为两部分,
1. <servlet></servlet>指定处理请求的servlet的name,class
2. <servlet-mapping></servlet-mapping>指定此servlet接收请求的路径
对于部署在tomcat容器里的应用,可以配置tomcat的server.xml,有两种方式:
1. <Context path=”" do
cBase=”D:\\work\\eclipse\\workspace\\HelloServlet\\WebRoot” />
访问路径是:http://localhost:8080/hello
2. <Context path=”helloservlet” docBase=”D:\\work\\eclipse\\workspace\\HelloServlet\\WebRoot” />
访问路径是:http://localhost:8080/helloservlet/hello
要注意的是,最后一个“/”后的字符串必须和servlet-mapping里的url-pattern对应。
web.xml里可以有多个servlet配置,用于处理不同的请求。
二、servlet初始化参数和整个应用公用的参数配置
1. servlet初始化参数配置
由于某些原因需要在servlet初始化的时候传入一些参数,以免硬编码,如:
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>xxx.xxx.HelloServlet</servlet-class>
<init-param>
<param-name>email</param-name>
<param-value>xxx@163.com</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
上面的<init-param></init-param>用来配置servlet初始化参数,可以有多个,后台获取这些参数的代码:
getInitParameter(“email”);或者getServletConfig().getInitParameter(“email”);
原理:
每一个servlet都对应一个ServletConfig实例,在容器建立此servlet时,会读取web.xml里关于此servlet的配置,并将所有的<init-param></init-param>创建名/值对放在ServletConfig实例中,当servlet处理请求时,就可以得到servletConfig实例中的初始化参数了。
注:容器只在servlet初始化时读这些参数,如果以后更改了,需要重新部署此servlet。
2. 整个应用公用的参数配置,又叫上下文初始化参数
相当于公共常量,应用中的每个servlet都可能用到,示例:
<context-param>
<param-name>adminemail</param-name>
<param-value>xxxx@126.com</param-value>
</context-param>
<context-param>
<param-name>breed</param-name>
<param-value>chinese</param-value>
</context-param>
(1) 和servlet初始化参数不一样的地方是,servlet初始化参数放在<servlet></servlet>中,而上下文 参数是和<servlet></servlet>平级的,均放在<web-app></web- app>中。
(2) 后台获取这些参数的代码:
getServletContext().getInitParameter(“adminemail”);
原理和servlet初始化参数类似。
(3) 这种配置只能设定字符串,而对于希望参数是一个数据库DataSource这种对象的设定,上下文参数是无能为力的,有个办法是实现 ServletContextListener接口,上下文参数依然是字符串,但是在listener里根据这些参数构造一个对象出来,然后放在 ServletContext里,这样每个servlet就可以共用这个对象了。
配置:
<listener>
<listener-class>net.flymouse.listener.MyServletContextListener</listener-class>
</listener>
ServletContextListener接口就2个方法:
public void contextDestroyed(ServletContextEvent event) {
}
public void contextInitialized(ServletContextEvent event) {
}
分别是应用起来是做一些事情,在应用关闭时做一些事情,实例:
public class MyServletContextListener implements ServletContextListener {
public void contextDestroyed(ServletContextEvent event) {
}
public void contextInitialized(ServletContextEvent event) {
ServletContext context = event.getServletContext();
String dogBreed = context.getInitParameter("breed");
Dog dog = new Dog();
dog.setBreed(dogBreed);
context.setAttribute("dog", dog);
}
}
一、加载和初始化 init()
容器根据web.xml寻找对应的servlet配置,根据请求的不同,加载不同的servlet类,然后调用servlet的init方法,完成初始化,在servlet没有完全初始化之前绝不能运行servlet的service()方法。
可以重载init方法从而读取servlet初始化参数,在servlet可以处理请求前做一些必要的事情。init方法只会在加载servlet时运行一次。
二、处理请求 service()
当请求到来时,容器开启一个新的线程,调用已经初始化后的servlet的service方法,此方法有两个参数:HttpRequest,HttpResponse,前者用于获取请求的参数,后者用于返回响应的数据。service方法根据get/post等http方法分别调用doGet/doPost方法,一般不重载service方法,而是重载doGet/doPost方法来处理客户端的请求。
注:get 和post区别
(1)get方法把参数放在url的后面,用&符号分割,第一个符号是问号,如:
http://xxxxx/hello?name=robbin&age=22,会向servlet传递两个参数,name和age,值分别是robbin和22.
缺点:参数长度有限制,对于过多的参数不能传递,而且参数暴露出来,安全性有问题。参见p111。
三、销毁 destroy()
和init一样,只会调一次,做一些和init相反的事情的时候可以重载这个方法。
分享到:
相关推荐
Head First Servlet&JSP(清晰中文版) ,Head First系列丛书,就不过多介绍了~~
Head First Servlet&JSP(清晰中文版) ,Head First系列丛书,就不过多介绍了~~
Head First Servlet&JSP(清晰中文版) ,Head First系列丛书,就不过多介绍了~~
Head First Servlet&JSP(清晰中文版) ,Head First系列丛书,就不过多介绍了~~
【标题】"head first servlet&JSP讲解课件java-web" 涉及的是Java Web开发中的核心组件——Servlet和JSP(JavaServer Pages)技术。Servlet是Java平台上的一个标准,用于创建动态Web应用程序,而JSP是Servlet的一种...
Head First Servlets & JSP(完好高清中文版)2.pdf 深入浅出 Servlets & JSP(完好高清中文版)2.pdf
HeadFirst Servlet&Jsp(中文版)part2
HeadFirst Servlet&Jsp(中文版)part4
HeadFirst Servlet&Jsp(中文版)part5
HeadFirst Servlet&Jsp(中文版)part3
HeadFirst Servlet&Jsp(中文版)part6
Head First Servlets&JSP;-第2版-高清扫描版-带详细书签 高清扫描版,书签比较详细,和目录一样
Head First Servlet&JSP(清晰中文版) ,Head First系列丛书,就不过多介绍了~~
Head First Servlets & JSP 完好高清中文版 part1 共6部分 Head First系列的书绝对是初学者的首选!风格生动有趣,讲解由浅入深。 发现网上流传的中文版存在有几处部分页面缺失的问题,花一个下午进行了修复。
《Head First Servlet JSP》是一本非常著名的IT技术书籍,主要介绍了Servlet和JSP这两个Java Web开发中的核心技术。源码通常包含书中示例程序的实现,对于深入理解书中的概念和工作原理非常有帮助。 Servlet是Java...
你是不是要学最新版本J2EE1.5参加Sun认证Web组件开发人员(SCWCD)...你会通过不寻常的方式同Servlet和JSP打交道,可以学得更深入、更快捷。读完全书后,你会看到一个全新的模拟测验,这是模拟实际考试而专门设计的。
以上只是《Head First Servlets & JSP》一书中的部分核心知识点,实际内容还包括过滤器、监听器、MVC设计模式、JSTL等更广泛的主题,旨在帮助读者全面理解和掌握Servlet和JSP技术。通过深入学习,开发者能够构建高效...
《Head First Servlet and JSP》是一本专门为初学者设计的,深入浅出讲解Servlet和JSP技术的书籍。Servlet和JSP是Java Web开发中的核心组件,用于构建动态、交互式的Web应用程序。这本书通过生动有趣的教学方式,...