Java - servlet

目录

实现一个servlet的方法:

    1.现javax.servlet.Servlet接口    

    2.继承javax.servlet.GenericServlet

    3.继承javax.servlet.http.HttpServlet;

    注册servlet:

    注解方式:

    servlet的生命周期:

总结:


Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求、响应给浏览器的动态资源。但servlet的实质就是java代码,通过java的API 动态的向客户端输出内容。作用在MVC的Controller层。

           servlet规范:包含三个技术点

  1. servlet技术
  2. filter技术---过滤器
  3. listener技术---监听器

servlet的访问方式: 

 


实现一个servlet的方法:


    1.现javax.servlet.Servlet接口
    

实现步骤:

  1. 创建类实现Servlet接口
  2. 覆盖尚未实现的方法---service方法
  3. 在web.xml进行servlet的配置

Servlet接口中的方法:

方法何时执行参数意义
init(ServletConfig config)   

servlet对象创建的时候执行

只执行一次。在请求的时候。类似于构造方法。

ServletConfig : 代表的是该servlet对象的配置信息
service(ServletRequest request,ServletResponse response)每次请求都会执行

ServletRequest :代表请求 认为ServletRequest 内部封装的是 http请求的信息

ServletResponse :代表响应 认为要封装的是响应的信息

destroy()

servlet销毁的时候执行

只执行一次。在服务器关闭时执行。

 
getServletConfig()  
getServletInfo()  

例子:

package controller;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class FirstServlet implements Servlet{//实现接口

	
	public void destroy() {//销毁
		// TODO Auto-generated method stub
		
	}

	
	public ServletConfig getServletConfig() {//获取到servlet的配置方法
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String getServletInfo() {//获取到servlet的信息的方法
		// TODO Auto-generated method stub
		return null;
	}

	//Servlet的初始化方法,仅在第一次请求时执行
	public void init(ServletConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		
	}

	//重点方法   服务方法  每次请求都会执行
	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
	}

}

    2.继承javax.servlet.GenericServlet


    实现service方法。

例子:

package controller;

import java.io.IOException;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class SecondServlet extends GenericServlet{

	@Override
	public void service(ServletRequest arg0, ServletResponse arg1) 
			throws ServletException, IOException {
		System.out.println("执行服务方法!");
		
	}

}


    
    3.继承javax.servlet.http.HttpServlet;

推荐使用。但只能在HTTP协议及其自协议下使用。

实现步骤:

  1. 创建类继承HttpServlet类
  2. 覆盖doGet和doPost
  3. 在web.xml中进行servlet的配置
package controller;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
//第三种实现方法,推荐方式
import javax.servlet.http.HttpServletResponse;


@WebServlet("/three")
public class ThreeServlet extends HttpServlet{
	
	
	private static final long serialVersionUID = 1L;//序列化
	//post请求的服务
	public void doPost(HttpServletRequest request ,HttpServletResponse response) {
		System.out.println("你好,post");//form表单的method="post"
	}
	//get请求的服务
	public void doGet(HttpServletRequest request ,HttpServletResponse response) {
		System.out.println("你好,get");
	}
}


    



    注册servlet:

    在web.xml文件中注册
        

        <servlet>
            <servlet-name>给Servlet起个名字</servlet-name>
            <servlet-class>Servlet类的完整路径</servlet-class>     <!-- 包名.文件名 -->
        </servlet>
        <servlet-mapping>
            <servlet-name>给Servlet起个名字</servlet-name>
            <url-pattern>/网址(路径)</url-pattern>      <!-- /  为根目录,必须含有 -->
        </servlet-mapping>

两者成对出现,有一个<servlet>就有一个<servlet-mapping>,<servlet-name>作用为将两者连接起来。且当有多对时,必须将所有的<servlet>写在<servlet-mapping>前面。

 目的为:敲了哪个网址去执行哪个类。


    注解方式:

    在类的声明前加上  @WebServlet("/three")  括号内为url  其作用与手动注册相同。

例子:

@WebServlet("/three")
public class ThreeServlet extends HttpServlet{
    ……
}

    
servlet的生命周期:

  1. 加载:服务器启动时,加载wab.xml中的所有注册的所有servlet。map结构。但不会new(创建对象),只是加载
  2. 初始化:第一次请求这个servlet时。new->调用init方法->调用服务->加入缓冲池中(方便下次请求)。(单例模式)
  3. 服务:每请求一次,就执行一次服务。
  4. 销毁:服务器关闭时,销毁所有servlet。

请求机制:先看缓冲池,是否有对象。没有就创建对象并使用。    


总结:

  1. Servlet何时创建:默认第一次访问servlet时创建该对象
  2. Servlet何时销毁:服务器关闭servlet就销毁了
  3. 每次访问必然执行的方法:service(ServletRequest req, ServletResponse res)方法
  4. 一个web应用有几个servlet对象?        多个

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值