Servlet基础知识点整理

这学期学Java Web,把相关知识点理了一下

Servlet接口

public interface Servlet {
    void init(ServletConfig var1) throws ServletException;

    ServletConfig getServletConfig();

    void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

    String getServletInfo();

    void destroy();
}
  • void init(ServletConfig var1):该方法接收一个ServletConfig类型的参数,Servlet容器通过这个参数向Servlet传递初始化配置信息
  • ServletConfig getServletConfig():返回Servlet的ServletConfig对象,ServletConfig对象中包含Servlet的配置信息
  • void service():生成HTTP响应
  • String getServletInfo():返回一个包含该Servlet信息的字符串
  • void destroy():当服务器关闭或者Servlet对象被移除时,Servlet容器便会调用这个方法销毁Servlet对象

一般自己实现的Servlet类都继承自HttpServlet,而响应HTTP请求也不是直接重写service()方法而是重写HttpServlet的doGet()和doPost()方法,并且使用HttpServletRequset和HttpServletResponse而不是ServletRequest和ServletResponse

Servlet的实现,ServletConfig与ServletContext

@WebServlet(name = "MyServlet",urlPatterns = {"/myservlet"},
    initParams = {@WebInitParam(name = "age",value = "20"),
                @WebInitParam(name = "name",value = "MerryiTuXz")})
public class MyServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletConfig servletConfig = getServletConfig();
        String name = servletConfig.getInitParameter("name"); //获取初始化参数
        System.out.println(name); // 'MerryiTuXz'

        ServletContext servletContext = getServletContext();
        servletContext.setAttribute("date",new Date());
        Date date = (Date) servletContext.getAttribute("date");
        System.out.println(date); // 打印访问页面的时间

        Enumeration<String> attributeNames = servletContext.getAttributeNames();
        while (attributeNames.hasMoreElements())
            System.out.println(attributeNames.nextElement());
        /*javax.servlet.context.tempdir
        date
        org.apache.catalina.resources
        org.apache.tomcat.InstanceManager
        org.apache.catalina.jsp_classpath
        javax.websocket.server.ServerContainer
        org.apache.jasper.compiler.ELInterpreter
        org.apache.jasper.compiler.TldCache
        org.apache.tomcat.JarScanner
        org.apache.jasper.runtime.JspApplicationContextImpl*/

        servletContext.removeAttribute("date");
        System.out.println(servletContext.getAttribute("date"));  // 'null'
    }
}
  1. @WebServlet注解配置Servlet

    name:Servlet的名字

    urlPatterns:映射路径

    initParams(可选):通过initParams和@WebInitParam注解传入初始化参数,一个初始参数中有name和value两部分。初始化参数可以通过ServletConfig的getInitParameter(String s)方法获取

  2. ServletConfig

    当Servlet容器初始化一个Servlet时,会将该Servlet的配置信息封装到一个ServletConfig对象中,并通过调用init(ServletConfig config)方法将ServletConfig对象传递给Servlet

  3. ServletContext

    ServletContext代表当前的Servlet应用程序,每个Web应用程序只有唯一一个ServletContext对象

    可以通过调用getServletContext()方法获得ServletContext对象

    扫描二维码关注公众号,回复: 4505181 查看本文章

    ServletContext常用方法:

    方法 功能
    void setAttribute(String name, Object obj) 设置ServletContext的属性,其中name是属性名,obj是属性值
    Object getAttribute(String name) 获取ServletContext中名为name的属性的值(没有则返回null)
    void removeAttribute(String name) 从ServletContext中删除名为name的属性的值
    Enumeration getAttributeNames() 返回一个包含了存放在ServletContext中的所有的属性的Enumeration对象

HttpServletRequest与HttpServletResponse

HttpServletResponse

HttpServletResponse被用来封装HTTP响应消息

常用方法如下:

方法 功能
PrintWriter getWriter() 返回一个可以向客户端发送消息的PrintWriter
void setContentType(String var1) 设置Servlet输出内容的MIME类型,对于HTTP协议来说就是设置Content-Type响应头字段的值
【解决中文乱码:response.setContentType("text/html;charset=utf-8");】
void addHeader(String name, String value) 设置HTTP协议的响应头字段
void addCookie(Cookie cookie) 给响应对象添加一个Cookie

HttpServletRequest

HttpServletRequest被用来封装HTTP请求消息

常用方法如下:

方法 功能
String getContentType() 返回MIME类型,对HTTP协议来说就是返回Content-Type头字段的值
int getContentLength() 返回响应数据的大小(Content-Length头字段的值)
String getMethod() 返回HTTP请求的方法的名称(GET,PUT,POST……)
String getHeader(String name) 返回指定HTTP首部的值
String getContextPath() 获取URL中Web应用程序的路径
String getQueryString() 获取请求行中的参数部分,也就是资源路径后面问号(?)以后的所有内容
Cookie[] getCookies() 返回一个Cookie数组
HttpSession getSession() 返回与这个请求相关的Session对象,如果没有则创建一个新的会话对象
String getParameter(String var1) 获取表单(或查询字符串)请求中指定名称的参数的值
String[] getParameterValues(String var1) 获取表单(或查询字符串)请求中指定名称的参数对应的所有的值
Enumeration 返回一个包含请求消息中所有参数名字的Enumeration对象

猜你喜欢

转载自www.cnblogs.com/merryituxz/p/10120509.html