一、第一个Servlet的编写过程
1、建立JavaWeb应用的目录
HelloServlet—–应用名称
WEB-INF——–
classes:Servlet就放在此处
lib
web.xml

2、在classes目录中建立Servlet类
一个Servlet必须直接或间接地实现javax.servlet.Servlet接口
一般我们选择继承javax.servlet.GenericServlet或者javax.servlet.http.HttpServlet类

3、编写Servlet类
package com.itheima;
import java.io.*;
import javax.servlet.*;
//第一个Servlet
public class HelloServlet extends GenericServlet{

public void service(ServletRequest req,
ServletResponse res)
throws ServletException,
java.io.IOException{

//向客户端输出数据
String data = “Hello Heima”;
OutputStream out = res.getOutputStream();
out.write(data.getBytes());
}

}

4、编译Servlet类
编译需要用到servlet-api.jar(在Tomcat的lib目录中)
4.1设置classpath:set classpath=%classpath%;C:\apache-tomcat-6.0.32\lib\servlet-api.jar
4.2因为带包名,进入classes目录,使用以下命令进行编译
javac -d . HelloServlet.java

5、配置Servlet的访问路径映射

对于JavaWeb应用的配置都在web.xml中,在web.xml中增加以下配置
<servlet>
<servlet-name>HelloServlet</servlet-name><!–制定一个Servlet名称–>
<servlet-class>com.itheima.HelloServlet</servlet-class><!–制定对应的Servlet类,用类的全名–>
</servlet>

<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/Hello</url-pattern><!–用户访问的映射路径–>
</servlet-mapping>
6、访问
http://localhost:8080/HelloServlet/Hello

二、Servlet规范提供了两个Servlet接口的默认实现
1、GenericServlet:通用的(默认的)的跟协议无关的实现
2、HttpServlet:跟HTTP协议有关的Servlet默认实现。我们编写的Servlet一般只需要继承该类即可
三、编写Servlet时一般需要继承HttpServlet。
1、不要覆盖service方法,默认实现中提供了一些标准的内容
2、应该覆盖掉doXXX方,因为默认实现给了一个错误的提示

四、利用MyEclipse可以直接创建Servlet。模板太烂
1、MyEclipse6.6:打开MyEclipse的安装目录,搜索Servlet.java的文件,该文件即为模板文件。
2.MyEclipse8.5:打开MyEclipse的安装目录,搜索com.genuitec.eclipse.wizards_8.5.0.me201003052220.jar。
打开其中的templates找到Servlet.java文件
3、修改Servlet.java模板文件(停掉MyEclipse,注意备份)
五、Servlet映射
可以使用通配符*
两种格式:
*.扩展名(注意*前面没有其他内容)
/abc/*(注意以*结尾,以/开头)
六、如果请求的资源在应用的web.xml中找不到对应的url-pattern映射,会交由缺省的Servlet处理。
缺省的Servlet的url-pattern的值为”/”。在Tomcat的conf/web.xml中已经配好了一个缺省的Servlet。
当请求HTML或其他静态资源时,实际上都是有缺省的Servlet进行处理的。
七、Servlet的生命周期
1、Servlet在默认情况下,第一访问时容器才会创建它的实例,并驻留内存
2、要想在容器启动时就实例化Servlet对象,可以做以下配置
<servlet>
<servlet-name>ServletDemo1</servlet-name>
<servlet-class>com.itheima.ServletDemo1</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<load-on-startup>的取值说明了启动顺序

八、ServletConfig对象
1、作用:获取为Servlet配置的初始化信息。
可以在web.xml的<servlet>元素中通过<init-param>为Servlet制定初始化的参数
2、ServletConfig对象在实例化Servlet对象时由容器传递给Servlet。通过ServletConfig对象的getInitParameter(String paramName)就可以获得web.xml中针对该Servlet的配置参数的值。或者使用getInitParameterNames获取所有的初始化参数
九、ServletContext对象
1、作用:JavaWeb应用的一个全局对象,一个应用只有一个ServletContext对象。在应用启动时,容器就会创建该对象
2、获得ServletContext对象的引用:
2.1ServletConfig.getServletContext()
2.2从HttpServlet类中继承的方法getServletContext()也可以获得
3、根据ServletContext特点,可以将该对象看做是整个web应用的总管家
4、应用
4.1实现多个Servlet之间的数据共享
4.2配置web应用的全局参数
4.3实现Servlet的转发
转发的特点:
1、请求的地址栏的地址不变
2、两者共享request和response对象
3、转发前和转发后页面上的内容都不会输出
4.4ServletContext读取资源配置文件
1、getRealPath:获取指定相对路径资源的绝对路径。相对路径必须以”/”开头
2、读取classes目录中的配置文件:
a、利用ClassLoader.getResourceAsStream():不适合加载很大的配置文件
b、利用ServletContext.getRealpath(“/相对路径”)
3、读取非classes目录中的配置文件
采用利用ServletContext.getRealpath(“/相对路径”)

解析路径

请求转发的过程

得到WEB-INF下的配置文件

相对路径和绝对路径

压缩数据

下载图片

解决线程并发问题

1、Servlet 2、ServletConfig 3、ServletContext 4、HttpUrlConnection的更多相关文章

  1. JavaWeb(一)Servlet中的ServletConfig与ServletContext

    前言 前面我介绍了一下什么是servlet,它的生命周期,执行过程和它的原理.这里我们做一个简单的回顾! 什么是Servlet? servlet 是运行在 Web 服务器中的小型 Java 程序(即: ...

  2. JavaEE:Servlet简介及ServletConfig、ServletContext

    Servlet简介 1.Servlet是sun公司提供的一门用于开发动态web资源的技术*静态web资源:固定数据文件*动态web资源:通过程序动态生成数据文件2.Servlet技术基于Request ...

  3. Servlet第二篇【Servlet调用图、Servlet细节、ServletConfig、ServletContext】

    Servlet的调用图 前面我们已经学过了Servlet的生命周期了,我们根据Servlet的生命周期画出Servlet的调用图加深理解 Servlet的细节 一个已经注册的Servlet可以被多次映 ...

  4. Servlet】(2)有关Servlet实现的几个类:GenericServlet、HttpServlet、ServletConfig、ServletContext

    一.GenericServlet 1.所有的成员方法: 1.在javaWeb项目中: 2.web.xml <?xml version="1.0" encoding=" ...

  5. JavaWeb学习之什么是Servlet、如何使用servlet、为什么这样使用、servlet的虚拟路径、关于缺省Servlet(2)

    1.什么是Servlet? * 服务器端Java程序,servlet需要交给服务器来运行. * 与javax.servlet.Servlet接口有关的java程序 2.如何使用servlet?[必须] ...

  6. 面试之jsp、Servlet相关知识——生命周期, 区别等

    1.servlet生命周期 所谓生命周期,指的是servlet容器如何创建servlet实例.分配其资源.调用其方法.并销毁其实例的整个过程. 阶段一: 实例化(就是创建servlet对象,调用构造器 ...

  7. Java中Filter、Servlet、Listener的学习

    1.Filter的功能filter功能,它使用户可以改变一个 request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个reques ...

  8. 转 Java中Filter、Servlet、Listener的学习

      1.Filter的功能filter功能,它使用户可以改变一个 request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个requ ...

  9. jsp、Servlet相关知识介绍(转)

    1.servlet生命周期 所谓生命周期,指的是servlet容器如何创建servlet实例.分配其资源.调用其方法.并销毁其实例的整个过程. 阶段一: 实例化(就是创建servlet对象,调用构造器 ...

随机推荐

  1. 《APUE》-第五章标准IO库

    大多数UNIX应用程序都使用I/O库,本章说明了该库所包含的所有函数,以及某些实现细节和效率方面的考虑.同时需要重点关注标准I/O使用了缓冲的技术,但同时也是因为它的出现,产生了很多细节上的问题. 流 ...

  2. Linux下运行C++程序出现"段错误(核心已转储)"的原因

    今天写程序出现了“段错误(核心已转储)"的问题,查了一下资料,加上自己的实践,总结了以下几个方面的原因. 1.内存访问出错  这类问题的典型代表就是数组越界. 2.非法内存访问 出现这类问题 ...

  3. javascript操作DOM的方法与属性

    文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构. 将HTML代码分解为DOM节点层次图: ...

  4. Django数据迁移

    http://www.ziqiangxuetang.com/django/django-data-migration.html

  5. javascript中遍历EL表达式List集合中的值

    http://www.cnblogs.com/limeiky/p/6002900.html

  6. java.lang.NoSuchMethodError: main Exception in thread "main"

    java.lang.NoSuchMethodError: main Exception in thread "main" 一般是主函数出问题 检查核对一下 public stati ...

  7. GetSystemTime API可以得到毫秒级时间

    用Now返回的日期格式中年只有2位,即2000年显示为00, 这似乎不太令人满意. 此外Now和Time都只能获得精确到秒的时间,为了得到更精确的毫秒级时间,可以使用API函数GetSystemTim ...

  8. POJ_Fibonacci POJ_3070(矩阵快速幂入门题,附上自己写的矩阵模板)

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10521   Accepted: 7477 Descri ...

  9. hdu3410-Passing the Message(RMQ,感觉我写的有点多此一举。。。其实可以用单调栈)

    What a sunny day! Let’s go picnic and have barbecue! Today, all kids in “Sun Flower” kindergarten ar ...

  10. SharePoint excel service web part 连接到 filter web part

    本文讲述SharePoint excel service web part 连接到 filter web part的一个简单应用场景. SharePoint excel service web par ...