Servlet-类总结

    1. HttpServlet

    2. Request

    3. Response

    4. ServletContext

    5. ServletConfig

    6. Cookie

    1. HttpServlet

    被子类化以创建适用于 Web 站点的 HTTP servlet 的抽象类。HttpServlet 的子类至少必须重写一个方法,该方法通常是以下这些方法之一

    本文由Chaipip站长完成,版权所有禁止抄袭,如需转载,请发邮件s39514@163.com获得同意

    1. 请求方法

    protected void doGet(HttpServletRequest req, HttpServletResponse resp)

    由服务器调用(通过 service 方法),以允许 servlet 处理 GET 请求。

    protected void doPost(HttpServletRequest req, HttpServletResponse resp)

    由服务器调用(通过 service 方法),以允许 servlet 处理 POST 请求。

    HTTP POST 方法允许客户端一次将不限长度的数据发送到 Web 服务器,这在发送诸如信用卡号之类的信息时很有用。

    protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException

    由服务器调用(通过 service 方法),以允许 servlet 处理 PUT 请求。

    PUT 操作允许客户端将文件放在服务器上,类似于通过 FTP 发送文件。

    在重写此方法时,随请求一起发送的所有内容头都要保持原样,这些内容头包括 Content-Length、Content-Type、Content-Transfer-Encoding、Content-Encoding、Content-Base、Content-Language、Content-Location、Content-MD5 和 Content-Range。

    protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException

    由服务器调用(通过 service 方法),以允许 servlet 处理 DELETE 请求。

    DELETE 操作允许客户端从服务器中移除文档或 Web 页面。

    此方法不需要是安全的或幂等的。通过 DELETE 请求的操作可能具有用户需要负责的副作用。使用此方法时,在临时存储器中保存受影响 URL 的副本可能会很有用。

    2. Request

    封装了请求信息(行头体信息),同时它也是一个域对象,它的作用域是本次请求(一次请求和响应的过程)。

    1. 获取请求参数

    String getParameter(String name)

    获得指定参数名对应的值,如果没有没有就返回null,如果有多个就获取第一个。

    列如 username=jack

    String[] getParameterValues(String name)

    获取指定参数名对应的所有值

    列如 hobby=抽烟&hobby=喝酒

    Map<String,String[]> getParameterMap()

    获的所有的请求参数 key为参数名,value为key对应的所有的值

    2. 处理请求乱码

    setCharaterEncoding(String env)

    设置请求体的编码,用于解决POST请求参数乱码问题

    request.setCharacterEncoding(“UTF-8”);

    3. 域对象(储存数据)

    作用域为本次请求

    String getAttribute(String name)

    void setAttribute(String name,String value)

    void removeAttribute(String name)

    4. 请求转发

    RequestDispatcher getRequestDispatcher(String path)

    5. 操作请求头

    setHeader(String name, String value);

    addHeader(String name,String value)

    6. 获取请求信息

    String getRequestURI; :/day39/LoginServlet

    URL getRequestURL;        : http://localhost:8080/day39/LoginServlet

    7. 获取Cookie信息

    Cookie[] getCookies();

    3. Response

    1. 设置状态行

    setStatus(int code);

    302 200 等状态码

    2. 设置响应头

    addHeader(String name,String value);

    addDateHeader(String name,long value);

    addIntHeader(String name,int value);

    setHeader(String name,String value);

    setDateHeader(String name,long value);

    setIntHeader(String name,int value);

    //登陆成功之后

    response.setStatus(302);

    response.setHeader(“location”, “/day38_servlet2/index.html”);

    // 定时刷新,等待5秒后转跳到该网页

    response.setHeader(“refresh”, “5;url=/day38_servlet2/index.html”);

    3. 设置响应体

    PrintWriter getWriter();

    字符输出流

    ServletOutputStream getOutputStream();

    字节输出流,用来输出网页和文件等信息

    4. 请求转发

    sendRedirect(String path); —path路径要写上项目名称

    response.sendRedirect(“http://java.sun.com”);

    response.sendRedirect(“/dome/1.html”);

    5. 处理响应乱码

    setCharacterEncoding(String encode);

    encode可以设置”utf-8″

    setContentType(String mime);

    设置MIME类型

    response.setCharacterEncoding(“utf-8”);

    //contentType既可以设置响应体的编码格式,又可以告诉浏览器我的MIME类型是什么

    response.setContentType(“text/html;charset=utf-8”);

    4. ServletContext

    ServletContext对象就是Servlet上下文(可以读取tomcat中的web.xml,也可以读取项目中的web.xml),它是一个域对象,可以存储数据,作用域是整个项目范围。

    1. 获取路径

    String getRealPath(String path);

    填绝对路径 要以/开头去写路径,/表示WebContent

    获取路径为磁盘路径,可以用来使用输入输出流

    InputStream getResourceAsStream(String path);

    同上填绝对路径 要以/开头去写路径,/表示WebContent

    但是只能获取字节输入流

    2. 域对象

    String getAttribute(String name)

    void setAttribute(String name,String value)

    void removeAttribute(String name)

    3. 获取项目信息

    String getContextPath():

    获取项目的信息:http://localhost:8080/day39

    String getMimeType(String filename);

    根据传入文件名称,来获取mime类型,如”xxx.jpg” 得到图片的mime类型

    filename和mime类型的映射是在tomcat中的web.xml

    5. ServletConfig

    (了解)ServletConfig对象就是封装了一个Servlet的配置信息

    常用API

    String getServletName();

    获取Servlet的名字

    ServetContext getServetContext();

    String getInitParameter(String name);

    获取在web.xml中的初始化参数

    Enumeration<String> getInitParameterNames();

    获取参数话参数集合

     // getInitParameter() 获取初始化参数

    String initParameter = servletConfig.getInitParameter(“username”);

    System.out.println(initParameter);

    // getInitParameterNames() 获取初始化参数集合

    Enumeration<String> names = servletConfig.getInitParameterNames();

    while (names.hasMoreElements()) {

    String name = (String) names.nextElement();

    String value = servletConfig.getInitParameter(name);

    System.out.println(name + ”   “ + value);

    }

    6. Cookie

    1. 获取、创建、转发

    Cookie[] getCookies(); Request对象的方法

    获取Cookie的集合数组

    Cookie cookie = new Cookie(name,value);

    构造带指定名称和值的 cookie。

    name和value参数都是字符串

    只能包含 ASCII 字母数字字符,不能包含逗号、分号或空格,也不能以 $和 中文字符开头。

    cookie 的名称在创建之后不得更改。

    void addCookie(Cookie cookie) Response对象的方法

    将Cookie写回到浏览器,如果已经存在,则覆盖

    2. 名称和值的操作

    public String getName()

    返回 cookie 的名称。名称在创建之后不得更改。

    public String getValue()

    返回 cookie 的值。

    public void setValue(String newValue)

    在创建 cookie 之后将新值分配给 cookie。如果使用二进制值,则可能需要使用 BASE64 编码。

    3. 有效期、有效路径、有效域名

    public void setMaxAge(int expiry)

    设置 cookie 的最大生存时间,以秒为单位。

    正值:表示该值在expiry秒后过期,是cookie过期的最大生存时间,不是当前生存时间

    0 值:会导致删除cookie

    负值:cookie不会被持久储存,会在web浏览器退出时删除

    public void setPath(String uri)

    指定客户端应该返回 cookie 的路径。

    cookie 对于指定目录中的所有页面及该目录子目录中的所有页面都是可见的。

    cookie 的路径必须包括设置 cookie 的 servlet,例如 /catalog,它使 cookie 对于服务器上 /catalog 下的所有目录都是可见的

    public void setDomain(String pattern)

    指定应在其中显示此 cookie 的域。

    RFC 2109 指定了域名的形式。域名以点 (.foo.com) 开头,意味着在指定域名系统(Domain Name System,DNS)区域中(例如,www.foo.com,但不是 a.b.foo.com)cookie 对于服务器是可见的。默认情况下,cookie 只返回给发送它们的服务器。

    本文由Chaipip站长完成,版权所有禁止抄袭,如需转载,请发邮件s39514@163.com获得同意

    转载请注明:chaipip博客 » Servlet-类总结

    喜欢 0
分类:JAVA, 网络

还没有人抢沙发呢~