一、第一个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. 管理员权限dropfiles和copydata小时失败问题

    //处理低权限向高权限进程发消息的失败的问题 if(windows::version::instance()->IsVistaOrLater()) { typedef BOOL (WINAPI ...

  2. Asp.net mvc 3 file uploads using the fileapi

    Asp.net mvc 3 file uploads using the fileapi I was recently given the task of adding upload progress ...

  3. jQuery插件学习(一)

    由于项目开发需要,经常会用到一些jquery插件,但网上已有的插件常常又不能100%满足业务需求,所以就想自己能看懂插件的代码,进行一些功能上的改动和补充,或者能自己自定义插件就更好了.所以这段时间会 ...

  4. dedecms likearticle 调用附加表的字段调用方式

    [field:id runphp='yes'] $aid = @me; $row = $GLOBALS['dsql']->GetOne("Select 字段名 From `dede_a ...

  5. php代码-1

  6. Dijkstra算法C#实现及其布线运用

    大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang 以下是空调布线对Dijkstra算法的运用,采用C#实现. 问题:室内机多台,室外机一台.寻找室内 ...

  7. TOMCAT之性能跟踪入门

    先扫清前面的障碍,再慢慢进入核心 转一下网上的我关心的话题,实施起来 ~~~ 使用Nginx作为反向代理时,Tomcat的日志记录的客户端IP就不在是真实的客户端IP,而是Nginx代理的IP.要解决 ...

  8. C之函数指针

    这方面的技能,在观察系统调用时,是很需要的. 但我不是很熟悉,另外,要再会函数指针数组的话,那就更强啦~~ 按<HEAD FIRST C>作了个样例: cat find.c #includ ...

  9. bzoj1004 Cards

    Description 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun很快就给出了答案.进一步,小春要求染出Sr张红 ...

  10. C++ 中捕获整数除零错误

    继承自 C 的优良传统, C++ 也是一门非常靠近底层的语言, 可是实在是太靠近了, 很多问题语言本身没有提供解决方案, 可执行代码贴近机器, 运行时没有虚拟机来反馈错误, 跑着跑着就毫无征兆地崩溃了 ...