一、什么是servlet

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

总结:

Servlet就是sun公司开发动态web的一门技术
(1)Sun在这些API中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个步骤:
    a.编写一个类,实现Servlet接口
    b.把开发好的lava类部署到web服务器中。
把实现了Servlet接口的Java程序叫做,Servlet

二、Mapping问题

(1)一个servlet指定一个映射路径

(2)一个servlet可以指定多个映射路径

(3)一个servlet可以指定通用映射路径(不建议使用

<servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello/*</url-pattern>
 </servlet-mapping>

(4)指定一些后缀或前缀等等。。。。

        如下代码中的do就是指定后缀(后缀可以任意指定)

<servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>*.do</url-pattern>
</servlet-mapping>

(5)默认请求路径

<servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/*</url-pattern>
</servlet-mapping>

(6)优先级问题

指定了固有的映射路径的优先级高,如果找不到就会走默认的请求处理;

三、ServletContext

(1)共享数据

          在一个Java类中创建数据

ServletContext context = this.getServletContext();
String username = "李锋";
resp.setContentType("text/html");
resp.setCharacterEncoding("UTF-8");
context.setAttribute("username",username);

         在另一个Java类中接收数据,实现数据共享

ServletContext context = this.getServletContext();
String str = (String)context.getAttribute("username");
//resp.setContentType("text/html");
//resp.setCharacterEncoding("UTF-8");
注释行实现操作防止页面的文字出现乱码
resp.getWriter().print(str);

(2)获取初始化参数

         设置初始化参数

<context-param>
        <param-name>url</param-name>
        <param-value>jdbc:mysql://localhost:myredis</param-value>
</context-param>

          获取参数

ServletContext context = this.getServletContext();
String url =(String)context.getInitParameter("url");
resp.getWriter().print(url);

(3)请求转发

ServletContext context = this.getServletContext();
context.getRequestDispatcher("/gp").forward(req,resp);
//引号中为需要转发的页面路径

(4)读取资源文件

InputStream is = this.getServletContext().getResourceAsStream("/com/lifeng/servlet/dbcom");
//此处信号中为文件的相对路径
Properties prop = new Properties();
prop.load(is);
//String user = prop.getProperty("username");
//String password = prop.getProperty("password");
resp.getWriter().print(user+","+password);
//注释为文件中的内容

四、Servlet的生命周期

1.加载web.xml文件。

2.通过构造函数创建servlet对象。

3.通过init方法初始化servlet。

4.通过service,或者doGet、doPost提供服务。

5.在重启或关闭时自动对servlet进行销毁。