00 00JavaWeb之Servlet学习一

1 Servlet是什么

Servlet是JavaWeb的三大组件之一,它属于动态资源,Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要:
(1)接收请求数据;
(2)处理请求;
(3)完成响应。

例如客户端发出登录请求,或者输出注册请求,这些请求都应该由Servlet来完成处理!Servlet需要我们自己来编写,每个Servlet必须实现javax.servlet.Servlet接口。

2 Servlet之接口和类的介绍

实现Servlet有三种方式:
(1)实现javax.servlet.Servlet接口;
(2)继承javax.servlet.GenericServlet类;
(3)继承javax.servlet.http.HttpServlet类;
Servlet接口定义如下:

public interface Servlet {
	 public void init(ServletConfig config) throws ServletException;
	 public ServletConfig getServletConfig();
	 public void service(ServletRequest req, ServletResponse res)
			throws ServletException, IOException;
   	public String getServletInfo();
   	public void destroy();
}

Servlet的方法大多数不由我们来调用,而是由Tomcat来调用。并且Servlet的对象也不由我们来创建,而是由Tomcat来创建,其方法如下:
(1)public void init(ServletConfig config) throws ServletException;:生命周期方法,它会在Servlet对象创建之后马上执行,并且只执行一次。
(2)public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;:生命周期方法,它会被调用多次,每次处理请求都会调用这个方法。
(3)public void destroy();:生命周期方法,它会在Servlet被销毁之前调用,并且它只会被调用一次,但是这个并不是Servlet的销毁方法。
(4)public String getServletInfo();:获取Servlet的信息。
(5)public ServletConfig getServletConfig();:可以用来获取Servlet的配置信息。

package org.lks.servlet;

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 BServlet implements Servlet {

	/**
	 * 生命周期方法,初始化对象后立即调用,只调用一次
	 */
	@Override
	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("I'm born");
	}

	/**
	 * 返回Servlet配置信息
	 */
	@Override
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * 生命周期方法,客户端每发送一次请求就调用一次
	 */
	@Override
	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
		// TODO Auto-generated method stub

	}

	/**
	 * 返回Servlet的基本信息
	 */
	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * 在Servlet对象回收前调用,只调用一次
	 */
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("Oh-h-h-h, I'll be back!");
	}

}

3 Servlet的生命周期

Servlet特性:
(1)Servlet是单例模式设计。
(2)线程不安全的,但是效率较高。

Servlet类由我们来写,但是对象由服务器来创建,并且由服务器来调用相应的方法。

4 ServletConfig介绍

ServletConfig类的定义:public interface ServletConfig。其拥有的方法如下:
(1)public java.lang.String getServletName():获取的是<servlet-name>中的内容;
(2)public ServletContext getServletContext():获取Servlet上下文对象;
(3)public java.lang.String getInitParameter(java.lang.String name):通过名称获取指定初始化参数的值。
(4)public java.util.Enumeration getInitParameterNames():获取所有初始化参数的名称。

接口对象如果自己没实现SetvletConfig接口,Tomcat会替我们实现。

5 Servlet相关类之ServletRequest和ServletResponse

1、ServletRequest接口介绍
(1)接口的定义:public interface ServletRequest
(2)接口常用方法:
|——根据属性名获取属性:public java.lang.Object getAttribute(java.lang.String name)
|——得到客户端国家编码:public java.util.Locale getLocale()
|——根据变量名获取变量值:public java.lang.String getParameter(java.lang.String name)
|——根据变量名获取所有变量值(如果有多个):public java.lang.String[] getParameterValues(java.lang.String name)
|——设置字符编码:public void setCharacterEncoding(java.lang.String env) throws java.io.UnsupportedEncodingException
2、ServletResponse接口介绍
(1)接口的定义:public interface ServletResponse
(2)接口常用方法:
|——设置文档返回类型:public void setContentType(java.lang.String type)
|——设置对客户端响应的Locale对象(国际化程序开发):public void setLocale(java.util.Locale loc)
|——用于响应消息的返回:public java.io.PrintWriter getWriter() throws java.io.IOException

6 GenericServlet介绍

GenericServlet是一个抽象类,其定义如下:

public abstract class GenericServlet
extends java.lang.Object
implements Servlet, ServletConfig, java.io.Serializable{}

示例代码:

package org.lks.servlet;

import java.io.IOException;

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

public class CServlet extends GenericServlet{
	private ServletConfig config;
	
	@Override
	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		this.config = config;
	}

	@Override
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return this.config;
	}

	@Override
	public ServletContext getServletContext() {
		// TODO Auto-generated method stub
		return this.config.getServletContext();
	}

	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return "Uh-h-h-h, what do you want to know me?";
	}

	@Override
	public String getServletName() {
		// TODO Auto-generated method stub
		return this.config.getServletName();
	}

	@Override
	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("program by yourself!!!");
	}

}

7 HttpServlet介绍

下面是HttpServlet类的介绍:

下面是HttpServlet的请求调用示意图。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值