一、第一个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. Mysql存储过程分析

    为了搞明白为什么mysql的存储过程是高效的,我们需要理解mysql的执行流程是什么,当输入sql语句之后,mysql会先进行sql语句语法正确性检查,然后再进行编译,然后才执行,最后把结果返回.如下 ...

  2. WP Super Cache 安装与设置方法

    1.首先,永久连接不能使用默认格式 2.修改永久链接格式,中文推荐采用 /%post_id%.html (这下你知道我的.orz哪里来了吧) 如果你和我一样蛋疼愿意为每篇文章写一个英语的post sl ...

  3. Python Tcp Socket

    socket(套接字),传输层通信的端点,由IP和端口号组成(IP,Port),可以通过socket精确地找到服务器上的进程并与之通信 python2.6实现,基于AF_INET(网络套接字) 类型S ...

  4. Nasty Hacks <入门练手题>

    Nasty Hacks Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...

  5. UITableView属性和方法

    1.初始化一个UITableView - (id)initWithFrame:(CGRect)frame style:(UITableViewStyle)style struct CGRect { C ...

  6. FATAL:NO bootable medium found!System halted.

    问题描述:致命错误,没有可引导的媒体.系统挂起.以下是在网上查的: 1:检查硬盘的类型,ide或sata接口是否在0,0或是在1,0. 2:光驱是否选择iso文件. 3:iso文件是否损坏4:virt ...

  7. 关于android:focusable属性

    http://www.cnblogs.com/Gaojiecai/archive/2013/06/18/3142783.html Android属性 android:focusableInTouchM ...

  8. windows下编译firefox

    可以自己定制下.估计很简单..... 官方文档扫一遍: https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_I ...

  9. LCS算法思想

    LCS问题就是求两个字符串最长公共子串的问题.解法就是用一个矩阵来记录两个字符串中所有位置的两个字符之间的匹配情况,若是匹配则为1,否则为0.然后求出对角线最长的1序列,其对应的位置就是最长匹配子串的 ...

  10. HDu 5433 Xiao Ming climbing (BFS)

    题意:小明因为受到大魔王的诅咒,被困到了一座荒无人烟的山上并无法脱离.这座山很奇怪: 这座山的底面是矩形的,而且矩形的每一小块都有一个特定的坐标(x,y)和一个高度H. 为了逃离这座山,小明必须找到大 ...