博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Servlet
阅读量:6406 次
发布时间:2019-06-23

本文共 3301 字,大约阅读时间需要 11 分钟。

Servlet是一个容器,在javaweb开发中,tomcat就是一个servlet容器。

生命周期:构造器、init初始化、service被多次调用、destroy销毁。

ServletConfig对象封装了所有的配置信息:获取service初始化参数和多个参数、获取servlet名字、获取ServletContext(他是web的大管家)。

init:自动生成当前的servletconfig,是arg0参数的形式。

service:自动生成当前的request(封装所有与请求有关的信息)和response(封装反馈的信息),以arg0和arg1的形式。

ServletContext(他是web的大管家):获取web的初始化参数、application范围内的属性、attribute等。

当我们写servlet时,实现Servlet接口有点繁琐,所以我们可以预先设计一个抽象类,然后只需要继承该抽象类,实现抽象方法service即可。同时也可以实现config接口。

如下:

package com;

import java.io.IOException;

import java.util.Enumeration;

import javax.servlet.Servlet;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
// 自定义的servlet 的实现类 抽象类 所有的servlet都可以继承该类 以简化开发。
public abstract class MyGeneralServlet implements Servlet,ServletConfig {

ServletConfig servletConfig=null;

public void destroy() {
// TODO Auto-generated method stub
}
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return servletConfig;
}
public String getServletInfo() {
return null;
// TODO Auto-generated method stub
}
public void init(ServletConfig arg0) throws ServletException {
// TODO Auto-generated method stub
this.servletConfig=arg0;
}
public abstract void service(ServletRequest arg0, ServletResponse arg1);
//以下是ServletConfig接口的方法
@Override
public String getInitParameter(String arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public Enumeration<String> getInitParameterNames() {
// TODO Auto-generated method stub 这是返回sevlet的init参数 而context获取的是web参数。
return servletConfig.getInitParameterNames();
}
@Override
public ServletContext getServletContext() {
// TODO Auto-generated method stub context是某一个web程序具备的 是web应用的管家
return servletConfig.getServletContext();
//通过获取ServletContext 然后调用ServletContext的getInitParameterNames获取init参数。
}
@Override
public String getServletName() {
// TODO Auto-generated method stub
return servletConfig.getServletName();
}

}

但是在实际开发中 用的是HttpServlet (已经实现好了) 是一个继承了GenericServlet的容器。

HttpServlet 原理如下,实现自定义的MyGeneralHttpServlet .则再写的servlet直接继承此,实现doGet 和doPost即可。 request和 response参数已经是实现好的,直接调用。

package com;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//
public class MyGeneralHttpServlet extends MyGeneralServlet{

@Override

public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException {
HttpServletRequest request;
HttpServletResponse response;
try{
request=(HttpServletRequest)arg0;
response=(HttpServletResponse)arg1;
}catch(ClassCastException e){
throw new ServletException("http error");
}
service(request,response);
}
public void service(HttpServletRequest request,HttpServletResponse response){
String method=request.getMethod();
if("GET".equals(method)){doGet(request,response);}
if("POST".equals(method)){doPost(request,response);}
}
private void doPost(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
}
private void doGet(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
}

}

 

转载于:https://www.cnblogs.com/XiaoErDuoFancy/p/6129158.html

你可能感兴趣的文章
Mybatis的ResultMap的使用
查看>>
精选30道Java笔试题解答
查看>>
linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例 --转载
查看>>
IE回车的一个怪异行为
查看>>
Linux shell join命令详解
查看>>
SharePoint如何配置Ipad跳转等问题
查看>>
ASP.NET MVC 初体验
查看>>
js library
查看>>
mysql导出数据库数据及表结构
查看>>
C#设计模式——抽象工厂
查看>>
原创:vsphere概念深入系列四:Nic Teaming若干问题
查看>>
Encapsulating Data 数据封装
查看>>
编程之美 海量数据寻找 K 大数
查看>>
优化网页图片
查看>>
python正则表达式 小例几则
查看>>
数据库脏读、不可重复读、幻象读
查看>>
iOS开发之检查更新
查看>>
[Voice communications] 声音的滤波
查看>>
vs2010中如何编写C语言程序
查看>>
NYOJ 38布线问题
查看>>