javaweb学习笔记之servlet01

一、Servlet概述

A servlet is a small Java program that runs within a Web server. Servlets receive and respond to requests from Web clients, usually across HTTP, the HyperText Transfer Protocol.

1ServletSUN公司制定的一套开发动态网页的技术。

2JavaEE相关的类,包名一般都是以javax开头

3、Servlet规范和服务器的关系

、编写第一个Servlet案例应用

0、To implement this interface, you can write a generic servlet that extends javax.servlet.GenericServlet or an HTTP servlet that extends javax.servlet.http.HttpServlet.

方法一:继承GenericServlet 

GenericServlet :          

Defines a generic, protocol-independent servlet. To write an HTTP servlet for use on the Web, extend HttpServlet instead.

GenericServlet implements the Servlet and ServletConfig interfaces. GenericServlet may be directly extended by a servlet, although it's more common to extend a protocol-specific subclass such as HttpServlet.//现在更习惯于继承 HttpServlet

GenericServlet makes writing servlets easier. It provides simple versions of the lifecycle methods init and destroy and of the methods in the ServletConfig interface. GenericServlet also implements the log method, declared in the ServletContext interface.

To write a generic servlet, you need only override the abstract service method.

方法二:继承HttpServlet

HttpServlet:

Provides an abstract class to be subclassed to create an HTTP servlet suitable for a Web site. A subclass of HttpServletmust override at least one method, usually one of these:

  doGet, if the servlet supports HTTP GET requests 
  doPost, for HTTP POST requests 
  doPut, for HTTP PUT requests 
  doDelete, for HTTP DELETE requests 
  init and destroy, to manage resources that are held for the life of the servlet 
  getServletInfo, which the servlet uses to provide information about itself 
There's almost no reason to override the service method. service handles standard HTTP requests by dispatching them to the handler methods for each HTTP request type (the doXXX methods listed above).

 

1、建立一个标准的JavaWeb应用目录

FirstApp:

  WEB-INF:

               classes

               lib:

               web.xml

2、进入classes目录,建立一个文本文件(所有的Servlet类都必须间接或直接实现javax.servlet.Servlet接口)

复制代码
 1 package cn.itcast.servlet;
 2 
 3             import java.io.*;
 4             import javax.servlet.*;
 5 
 6             public class FirstServlet extends GenericServlet{
 7                 public void service(ServletRequest req,
 8                                          ServletResponse res)
 9                                   throws ServletException,
10                                          java.io.IOException{
11                     OutputStream out = res.getOutputStream();
12                     out.write("Hello Servlet".getBytes());
13                     out.close();
14                                          
15                 }
16 
17             }
复制代码

 

3、进入classes目录,对FirstServlet进行编译:

前提:把servlet-api.jar加入到你的构建路径中.set classpath=%classpath%;C:\apache-tomcat-6.0.35\lib\servlet-api.jar

执行:javac -d . FirsetServlet.java

4、修改web.xml,对FirsetServlet进行url地址映射,配置如下:

复制代码
 1 <?xml version="1.0" encoding="ISO-8859-1"?>
 2 
 3 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
 4 
 5    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 6 
 7    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 8 
 9    version="2.5">
10 
11 <servlet>
12 
13 <servlet-name>FirstServlet</servlet-name>
14 
15 <servlet-class>cn.itcast.servlet.FirstServlet</servlet-class>
16 
17   
18 
19 </servlet>
20 
21 <servlet-mapping>
22 
23 <servlet-name>FirstServlet</servlet-name>
24 
25 <url-pattern>/hello</url-pattern>
26 
27 </servlet-mapping>
28 
29 </web-app>
复制代码

服务器的搜索顺序:

<servlet-mapping> ---> 
                      <url-pattern>:例子中的hello  --->  <servlet-name>:FirstServlet  ---> 往上搜索
<servlet> ---> 
              <servlet-name>:FirstServlet匹配 ---> <servlet-class>:确定 cn.itcast.servlet.FirstServlet

5、把你的应用部署到Tomcat中。

6、访问地址:http://localhost:8080/FirstApp/hello就可以看到写的Servlet类的输出结果了。

 

Servlet的生命周期

容器最终要调用service方法为客户进行服务

1Servlet接口中的常用方法:

public void init(ServletConfig config):初始化。Servlet类被实例化后就执行,且执行一次,由容器进行调用

public void destroy():销毁Servlet对象。由容器进行调用

在内存中一个Servlet只有一个实例。针对不同的用户请求,容器采用多线程的机制调用service方法的。

 

Servlet实例对象和初始化方法,默认情况下,只有第一次访问时才执行,且只执行一次。

 

 希望在应用被Tomcat加载完毕后(此时还没有任何人访问),就实例化并完成初始化Servlet的工作?

1 <servlet>     
2     <servlet-name>FirstServlet</servlet-name>
3     <servlet-class>cn.itcast.servlet.FirstServlet</servlet-class>
4     <load-on-startup>2</load-on-s>
5 </servlet>

2、第一个Servlet程序的执行原理和过程

 

Servlet的孩子们(模板方法设计模式)

如果设计与HTTP协议有关的Servlet,一般选择集成javax.servlet.http.HttpServlet.

不要覆盖其中的service(ServletRequest req,ServletResponse resp)方法,而应该覆盖掉,doXXX()。

doXXX就是根据你的请求方式来的。

HttpServlet中的service方法是典型的模板方法设计模式的具体应用。

 

Servlet配置

1、一个Servlet可以被映射到多个URL地址上

2URL地址映射还支持通配符*

方式一:以*开头,以扩展名结尾。比如 <url-pattern>*.do</url-pattern>

方式二:以/前缀开头,以*结尾。 比如<url-pattern>/action/*</url-pattern>

3、多个Servlet使用通配符时,有可能有多

"/"开头(方式二)要比"*"开头(方式一)优先级高

都以"/"开头,还是有多个匹配,找最匹配的(最像的)

4、如果一个Servlet的映射为一个"/",就称之为默认的Servlet,它负责处理没有映射路径的URL请求的响应。

多个配置的Servlet,到底执行哪一个?

原则:优先级

        绝对匹配

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值