一、Servlet技术
1、Servlet概述
1.1 什么是servlet?
运行在web服务器的一个java小程序,通俗来讲,它就是一个java类,在使用servlet时,需要导入javax.servlet下的jar包。比如:tomcat服务器提供了servlet的servlet-api.jar包,所以在开发时用tomcat服务器就不需要再导入servlet的jar包。
servlet是一个资源,是用来被用户访问的资源,同时也是一个动态资源。
1.2 Servlet的作用
它是基于Http协议的,主要是用来接收客户端发送的请求,处理请求,把数据响应给客户端,
2、Servlet的入门
2.1 Servlet的接口和实现类
Servlet是一个接口,在javax.servlet包下面。
2.1.1 五个方法
(1)destory():执行这个方法,销毁了servlet对象
(2) init(ServletConfig config): 在web服务器创建servlet对象以后,执行这个初始化方法
(3)service(ServletRequest req, ServletResponse res): 服务方法,用来接收客户端发送的请求,并且响应数据到客户端。
(4)getServletConfig()
(5)getServletInfo(): servlet的信息,比如作者、版本和版权,开发中不用
2.1.2 GenericServlet
是一个类,实现了Servlet接口
HttpServlet,是一个类,实现了Servlet接口,同时继承了GenerciServlet
2.2 创建servlet三种方式
直接实现Servlet接口
继承GenericServlet类
继承HttpServlet类
一般在开发中,创建servlet,通常去继承这个HttpServlet
比如:class MyServlet extends HttpServlet(重写所需要的方法)
2.3 servlet的继承关系
HttpServlet继承GenericServlet
GenericServlet实现Servlet接口
3、实现第一个Servlet程序
(1)自己动手创建Servlet,通过Dos命令窗口编译Servlet,把编译好的class文件部署到tomcat服务器运行。
(2)通过Eclipse创建Servlet,部署到tomcat服务器,然后就可以访问所需要的Servlet。
步骤:
创建HelloWordServlet,继承GenericServlt。
重写父类GenerciServlet的service方法。
在服务方法里面,处理客户端的请求后,把数据响应给客户端。
如果没有对应的包,则要先导入jar包:先拷贝对应的jar包,放到WebContent下面的WEB-INF下面的lib文件夹下面。jar的图标就变成小奶瓶。
访问Servlet,提供servlet的访问路径:
/**
*自己创建Servlet, 继承GenericServlet
*重写它的服务方法:service
*
**/
public class HelloWordService extends GenericServlet{
@Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException{
//处理客户端发送的请求,并且把数据响应给客户端
System.out.println("接收了客户端的请求------------");
//把数据响应给客户端 ,与浏览器绑定的输出流,作用向浏览器输出数据
PrintWriter pw = response.getWriter();
pw.print("Hello World");
}
}
在xml文件中写入
<!--配置/hello,访问的servlet-->
<servlet>
<servlet-name>helloWorld</servlet-name>
<servlet-class>cn.itcast.firstmyapp.servlet.HelloWordServlet</servlet-class>
</servlet>
<!--配置浏览器访问servlet的路径-->
<servlet-mapping>
<servlet-name>helloWorld</servlet-name>
<url-pattern>hello</url-pattern>
</servlet-mapping>
访问:
http://localhost:8080/webFirst/hello
就找到对应的HelloWorldServlet,把数据响应给浏览器
4、Servlet的生命周期:
4.1 生命周期(自然界人从出生到最终走向西方极乐世界)
从servlet对象被创建,经过使用servlet对象被销毁,整个过程就是servlet的生命周期。
4.2 生命周期相关的三个方法
(1)init(ServletConfig config) 初始化方法: 首次访问这个Servlet, Servlet对象会被创建,执行初始化方法。
(2)service(ServletRequest req, ServletResponse res) 服务方法:每次访问servlet时,服务方法都会被执行。
(3)destroy()销毁方法:在服务器正常关闭时,会执行销毁方法,执行一次。
4.3 例子
public class LifeServlet extends GenericServlet{
//初始化方法
@Override
public void init(ServletConfig config) throws ServletException{
System.out.println("首次访问LifeServlet时,会执行这个初始化方法。。。");
}
//servlet的服务方法
@Override
public void service (ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException
{
System.out.println("每次访问LifeServlet时,都会执行这个服务方法。。。");
}
//销毁方法
@Override
public void destroy(){
System.out.println("在服务器关闭时,会执行销毁方法。。。");
}
}
在web.xml文件上面配置访问路径
<servlet>
<servlet-name>lifeServlet</servlet-name>
<servlet-class>cn.itcast.firstmyapp.servlet.LifeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>lifeServlet</servlet-name>
<url-pattern>/life</url-pattern>
</servlet-mapping>