1、什么是Servlet
Servlet是一个运行在服务器端的Java小程序,通过HTTP协议用于接收来自客户端请求,并发出响应。
2、Servlet中的方法
public void service(ServletRequest req,ServletResponse res)
throws ServletException,java.io.IOException
ServletRequest req:代表着请求对象,该对象中有HTTP协议的请求部分的所有内容。它的实现类由服务器提供的,封装数据也是服务器来做的。
ServletResponse res:代表着响应对象,该对象中由我们写数据(HTTP协议的响应部分)进去。它的实现类也是由服务器提供的。
service:由服务器调用,每次请求都会调用一次。服务器采用的是多线程机制。
1、编写一个类实现javax.servlet.Servlet接口,或者继承javax.servlet.GenericServlet。
2、编译Servlet的源码
3、映射Servlet
修改web.xml
4、把应用部署Tomcat中,访问地址:http://localhost:8080/firstServlet/hello
明确:规范 服务器 应用间的关系
实例 class代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package
com.it.Serlvet;
import
java.io.IOException;
import
javax.servlet.GenericServlet;
import
javax.servlet.ServletException;
import
javax.servlet.ServletRequest;
import
javax.servlet.ServletResponse;
public
class
SerlvetDemo1
extends
GenericServlet {
@Override
public
void
service(ServletRequest req, ServletResponse res)
throws
ServletException, IOException {
// TODO Auto-generated method stub
res.getWriter().write(
"this is yif's page "
);
}
}
|
web 定义及映射
<servlet>
<!--定义Servlet:给Servlet类取一个名字-->
<servlet-name>SerlvetDemo1</servlet-name>
<servlet-class>com.it.Serlvet.SerlvetDemo1</servlet-class>
</servlet>
<servlet-mapping>
<!--映射Servlet:给Servlet一个访问地址-->
<servlet-name>SerlvetDemo1</servlet-name>
<url-pattern>/SerlvetDemo1</url-pattern>
</servlet-mapping>
1、javax.servlet.GenericServlet:通用的Servlet实现,抽象类
(经常用)2、javax.servlet.http.HttpServlet:与HTTP协议有关的,抽象类
继承HttpServlet,然后覆盖掉doGet或doPost方法即可,不要覆盖掉service方法。
*Servlet规范中的核心接口类图
1、生命周期(必须清晰):诞生--活着--死亡。人有这个过程,内存中的对象也有。
2、Servlet对象的生命周期
l 诞生:用户第一次访问时,由容器创建他的实例。
l 活着:一旦创建就驻留内存(单例)。每次用户的访问,容器都会调用sevice方法发出响应(多线程)
l 死亡:应用被卸载或者Tomcat关闭了
实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
public
class
ServletDemo3
extends
HttpServlet {
//用户第一次访问时,只执行一次
public
ServletDemo3(){
System.out.println(
"调用了Servlet的默认构造方法"
);
}
//用户第一次访问时,执行一次。用于对象的初始化
public
void
init()
throws
ServletException {
System.out.println(
"调用了Servlet的初始化方法"
);
}
//每次用户访问都执行
public
void
doGet(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
System.out.println(
"执行了Service方法"
);
}
public
void
doPost(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
doGet(request, response);
}
//调用一次。用于清理工作
public
void
destroy() {
System.out.println(
"调用了Servlet的销毁方法"
);
}
}
|