Servlet类

Servlet

Servlet是在Web服务器中运行的小型Java程序。

Servlet通常通过HTTP(超文本传输协议)接收和响应来自Web客户端的请求。

编写可扩展的通用servlet javax.servlet.GenericServlet 或 javax.servlet.http.HttpServlet 。

生命周期

  1. 收到HTTP请求构造Servlet,然后使用 init()方法初始化。
  2. 响应请求,调用 service()方法响应处理。
  3. 退出服务,调用destroy()方法销毁Servlet对象。

Servlet接口方法

修饰符和类型方法和说明
voiddestroy()由Servlet容器调用以向Servlet指示该Servlet正在退出服务。
ServletConfiggetServletConfig()返回一个ServletConfig对象,其中包含此Servlet的初始化和启动参数。
java.lang.StringgetServletInfo()返回有关servlet的信息,例如作者,版本和版权。
voidinit(ServletConfig) servlet容器调用以向servlet指示该servlet正在准备使用。
voidservice(ServletRequest, ServletResponse)由Servlet容器调用,以允许Servlet响应请求。
public interface Servlet {
    /**
    * 实例化servlet之后,servlet容器仅调用一次init方法。 servlet可以接收任何请求之前,init方法必须成功完成。
    */
    void init(ServletConfig var1) throws ServletException;
	/**
    * 返回一个ServletConfig对象,其中包含此Servlet的初始化和启动参数。ServletConfig 返回的对象是传递给init方法的对象。
    */
    ServletConfig getServletConfig();
	/**
    * 仅在servlet的init()方法完成后才调用,始终发送servlet响应的状态代码,可以同时处理多个请求。
    *  ServletRequest包含客户请求的对象
    *  ServletResponse包含Servlet响应的对象
    */
    void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
	/**
    * 返回有关servlet的信息,例如作者,版本和版权。此方法返回的字符串应该是纯文本.
    */
    String getServletInfo();
	/**
    * 仅在servletservice方法中的所有线程都已退出或经过超时时间后,才调用此方法。调用后,不再再次调用。
    * 此方法使Servlet有机会清理所持有的任何资源(例如,内存,文件句柄,线程),并确保任何持久状态都与Servlet在内存中的当前状态同步。
    */
    void destroy();
}

补充:

GenericServlet类

修饰符和类型	方法和说明
void	destroy()
由Servlet容器调用以向Servlet指示该Servlet正在退出服务。
java.lang.String	getInitParameter(java.lang.String name)
返回一个String包含命名初始化参数值的,null如果该参数不存在,则返回。
java.util.Enumeration<java.lang.String>	getInitParameterNames()
返回servlet的初始化参数的名称作为 Enumeration的String对象或空 Enumeration如果servlet没有初始化参数。
ServletConfig	getServletConfig()
返回此servlet的ServletConfig对象。
ServletContext	getServletContext()
返回ServletContext对该servlet在其中运行的引用。
java.lang.String	getServletInfo()
返回有关servlet的信息,例如作者,版本和版权。
java.lang.String	getServletName()
返回此servlet实例的名称。
void	init()
可以重写的便捷方法,因此无需调用super.init(config)void	init(ServletConfig config)
servlet容器调用以向servlet指示该servlet正在投入使用。
void	log(java.lang.String message)
将指定的消息写到Servlet日志文件中,并以Servlet名称开头。
void	log(java.lang.String message, java.lang.Throwable t)
将给定Throwable异常的解释性消息和堆栈跟踪信息写入 Servlet日志文件,并以Servlet名称为前缀。
abstract void	service(ServletRequest req, ServletResponse res)
由Servlet容器调用,以允许Servlet响应请求。

HttpServlet类 方法

修饰符和类型	方法和说明
protected void	doDelete(HttpServletRequest req, HttpServletResponse resp)
由服务器调用(通过service方法),以允许Servlet处理DELETE请求。
protected void	doGet(HttpServletRequest req, HttpServletResponse resp)
由服务器调用(通过service方法),以允许Servlet处理GET请求。
protected void	doHead(HttpServletRequest req, HttpServletResponse resp)
从受保护的service方法接收HTTP HEAD请求 并处理该请求。
protected void	doOptions(HttpServletRequest req, HttpServletResponse resp)
由服务器调用(通过service方法),以允许Servlet处理OPTIONS请求。
protected void	doPost(HttpServletRequest req, HttpServletResponse resp)
由服务器调用(通过service方法),以允许Servlet处理POST请求。
protected void	doPut(HttpServletRequest req, HttpServletResponse resp)
由服务器调用(通过service方法),以允许Servlet处理PUT请求。
protected void	doTrace(HttpServletRequest req, HttpServletResponse resp)
由服务器调用(通过service方法),以允许Servlet处理TRACE请求。
protected long	getLastModified(HttpServletRequest req)
返回HttpServletRequest 对象的最后修改时间,以格林尼治标准时间197011日午夜以来的毫秒数为单位。
protected void	service(HttpServletRequest req, HttpServletResponse resp)
从公共service方法接收标准的HTTP请求, 并将其分派到此类中定义的doMethod方法。
void	service(ServletRequest req, ServletResponse res)
将客户端请求分派到受保护的 service方法。
package com.kongjs.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
import java.util.Set;

@WebServlet(urlPatterns={"/req"})
public class YourServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=UTF-8");
        resp.getWriter().println("<!DOCTYPE html>" +
                "<html>\n" +
                "<head><title>" + "</title></head>\n" +
                "<body bgcolor=\"#f0f0f0\">\n" +
                "<h1 align=\"center\">"  + "</h1>\n" +
                "<ul>\n"+ req.getParameter("url") + "\n" +
                "</ul>\n" +
                "</body></html>");
        resp.getWriter().write(String.valueOf(req.getRequestURL()));
        resp.getWriter().write(String.valueOf(req.getHeaderNames()));
        resp.getWriter().write(String.valueOf(req.getMethod()));
        System.out.println("req.getMethod() = " + req.getMethod());
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        String userName = req.getParameter("userName");
        String password = req.getParameter("password");
        resp.getWriter().write(String.valueOf(userName));
        resp.getWriter().write(String.valueOf(password));
        Map<String, String[]> parameterMap = req.getParameterMap();
        Set<Map.Entry<String, String[]>> entries = parameterMap.entrySet();
        entries.forEach(entry -> System.out.println("entry = " + entry));
        for (Map.Entry<String,String[]> str : entries){
            System.out.println("str = " + str);
        }

        String[] strings = parameterMap.get("");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值