JavaWeb学习笔记(Servlet技术)

Servlet接口

Servlet是一种实现servlet接口的类,是由Web容器负责创建并调用,用于接受和响应用户请求,有五个抽象方法:

方法声明 功能描述
void init(ServletConfig config) 负责Servlet初始化工作。在容器创建好后调用此方法,该方法接收一个ServletConfig类型的参数,service通过这个参数向Servlet传递初始化配置消息。
ServletConfig 返回容器调用的
String getServletInfo 返回一个字符串,其中包含关于Servlet信息,
void service(ServeletRequest request,SERVLETresponse respose) 负责响应用户的请求,当容器接收到客户端访问Servlet对象的请求时,就会调用这一个方法。容器会构造一个表示客户端请求信息的ServletRequest对象和一个用于响应客户端的ServletResponse对象作为参数传递给service()方法,在Service方法中可以通过ServletRequest对象得到客户端的相关信息和请求消息,在对请求进行处理后,调用ServletResponse对象的方法设置响应消息。
void destroy() 负责释放Servlet对象占用的资源,当Servlet对象销毁时会调用此方法。

Servlet程序

(1)在D:\cn\itcast\firstapp\servelt建立一个Java文件代码如下:

package cn.itcast.firstapp.servlet;
import java.io.*;
import javax.servlet.*;
public class HelloWorldServlet extends GenericServlet{
	public void service(ServletRequest request,ServletResponse response) throws ServletException,IOException{
		PrintWriter out = response.getWriter();
		out.println("Hello World");
	}
}


(2)使用cmd对其进行编译
在这里插入图片描述
发现其报错。错误为javax.servlet文件不存在
(3)由于Servlet是一个JavaEE程序不是一个JavaSE程序所以所有的jar文件都需要自己手动加入到classpath环境变量中。
在tTomcat下的lib目录下有许多的jar文件,其中的servlet-api.jar是属于Servlet相关的jar文件。
在这里插入图片描述
(4)打开命令行窗口,通过set classpath命令将servlet-api.jar添加刀CLASSPATH环境变量中。
在这里插入图片描述
(5)重新编译HelloWordServlet.java,成功编译会产生一个HelloWorldServlet.class文件
在这里插入图片描述
在这里插入图片描述
(6)在Tomcat的webapps下创建目录chapter04,然后创建\WEB-INF\classes目录,将HelloWorldServlet.class复制到刀classes下,注意要将cn等包目录也一起复制过去。
(7)进入到WEB-INF目录下,编写一个web.xml文件,代码可以参照Tomcat目录下的examples\WEB-INF子目录下的web.xml文件。代码如下:
在这里插入图片描述

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0">
   <servlet>
      <servlet-name>HelloWorldServlet</servlet-name>
      <servlet-class>cn.itcast.firstapp.servlet.HelloWorldServlet</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>HelloWorldServlet</servlet-name>
      <url-pattern>/HelloWorldServlet</url-pattern>
    </servlet-mapping>
</web-app>

其中的< servlet>用于注册Servle,其中两个子元素分别指定Servlet名称及其完整类名,servlet-mapping用于映射Servlet对外访问的虚拟路径,其中子元素servlet-name必须和Servlet的servlet-name相同。url-pattern用于指定访问的Servlet的虚拟路径。
(8)启动Tomcat服务器,在浏览器的地址栏中输入URLhttp://localhost:9090/chapter04/HelloWordServlet访问HelloWordServlet。
在这里插入图片描述

Servlet生命周期

Servlet生命周期分为三个阶段,分别是初始化阶段,运行阶段,销毁阶段。

初始化阶段

当用户向Servlet容器发送HTTP请求访问Servlet时,Servlet容器首先会解析请求,检查内存中是否存在该Servlet请求,如果没有就会创建一个Servlet对象,然后通过init()方法实现Servlet初始化工作。Servlet整个生命周期init()只调用一次。

运行阶段

在这个阶段,Servlet容器会为请求创建代表HTTP请求的ServletReques对象和代表的HTTP响应的ServletResponse对象,然后将它们作为参数传递给Servlet的service()方法。service()在Servlet整个生命周期中会调用多次。

销毁阶段

当服务器关闭或Web应用被移除容器时,Servlet随着Web应用的销毁而销毁,在销毁Servlet之前,Servlet容器会调用Servlet的destroy()方法,以便让Servlet对象释放它所占的资源。在Servlet整个生命周期中,destroy()只调用一次。
示例:
对之前的Servlet进行修改代码如下:

package cn.itcast.firstapp.servlet;
import java.io.*;
import javax.servlet.*;
public class HelloWorldServlet extends GenericServlet {
	public void init(ServletConfig config)throws ServletException{
		System.out.println("init methed is called");
	}
	public void service(ServletR
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值