顾乔芝士网

持续更新的前后端开发技术栈

Servlet

Servlet概述

servlet = server + applet:运行在服务器端的java程序

Servlet是一个接口,一个类想通过浏览器被访问到,那么这个类就必须直接或间接的实现Servlet接口

Servlet执行原理

Servlet生命周期

  • init()

servlet创建对象时,调用此方法完成初始化操作

  • service()

用户访问servlet时,调用此方法完成业务逻辑的处理

  • destory()

servlet对象销毁,调用此方法完成销毁操作

Servlet体系结构

HttpServlet

  • Servlet可以映射多个url
  • url映射模式

Request

  • 请求行
  • 请求头
  • 请求体(请求参数)
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    // 设置解码为UTF-8,解决post中文乱码问题, 需放在首行
    req.setCharacterEncoding("UTF-8");
    
    doGet(req, resp);
}
  • 请求转发

服务器内部的资源跳转方式

  • 域对象

一个作用范围的对象,可以在范围共享数据

request域: 代表一次请求的范围,一般用于一次请求中转发的多个资源中共享数据

Response

response对象表示web服务器给浏览器返回的响应信息。

作用:返回给浏览器的响应信息。

  • 响应行
  • 响应头
  • 响应体
    • 响应重定向
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  System.out.println("访问到了CServlet,接下来重定向DServlet");

  // 方式一:设置重定向
  resp.setStatus(302);
  //        resp.setHeader("Location", "/项目名/DServlet");

  // 方式二:设置重定向
  resp.sendRedirect("/项目名/DServlet");
}


  • 中文乱码
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  // 第一种方式:设置编码,一定要设置首行
  //        resp.setCharacterEncoding("GBK");

  // 第二种方式:统一浏览器和服务器编码
  resp.setContentType("text/html;charset=UTF-8");

  // 页面输出中文
  PrintWriter writer = resp.getWriter();
  writer.write("中文");
}

ServletContext

web容器在启动时,会为每个web项目创建一个对应的ServletContext对象。

ServletContext: 代表当前web项目

  • ServletContext对象
  • 域对象(共享数据)

当前项目范围内,共享数据(多个Servlet都可以获取)。

  • 获取文件MIME类型

互联网通信过程中定义的一种文件数据类型格式。

Cookie

Cookie:客户端会话技术。

作用:在一次会话的多次请求之间共享数据,将数据保存到客户端(浏览器)。

服务器可以发送多个Cookie。

默认情况下,浏览器关闭(会话结束),cookie销毁(内存)。

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  // 编码
  String encodevalue = URLEncoder.encode("杰克  ", "UTF-8");

  Cookie cookie = new Cookie("name", encodevalue);

  resp.addCookie(cookie);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  Cookie[] cookies = req.getCookies();

  for (Cookie cookie : cookies) {
    // 获取cookie的name
    String name = cookie.getName();

    // 获取cookie的value
    String value = cookie.getValue();

    // 解码
    String decodeValue = URLDecoder.decode(value, "UTF-8");


    System.out.println(name + ":" + decodeValue);
  }
  • Cookie特点

Session

Session:会话技术;基于cookie来实现的。

作用:在一次会话的多次请求之间共享数据,将数据保存到服务端。

  • HttpSession

HttpSession:域对象。

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  // 将共享数据存到session
  // 获取session对象
  HttpSession session = req.getSession();
  // 将session对象进行数据存入
  session.setAttribute("name", "jack");

  System.out.println("已将数据存到共享数据中。。。");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  // 将session中的共享数据取出来
  // 获取session对象
  HttpSession session = req.getSession();
  // 获取共享数据
  String name = (String) session.getAttribute("name");

  System.out.println(name);
}
  • Session生命周期

三大域对象

Request、Session、ServletContext

  • API
  • 生命周期
    • ServletContext
    • HttpSession
    • HttpServletRequest

Filter:访问服务器资源,过滤请求,完成通用操作

web的三大组件:

servlet(控制器)

filter(过滤器)

listener(监听器)

  • 执行原理
  • 生命周期


  • 拦截路径
  • 过滤器链

Listener

<listener>
    <listener-class>com.demo.listener.ServletContextListenerDemo</listener-class>
  </listener>
package com.demo.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class ServletContextListenerDemo implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("监听到servletContext对象创建了。。。");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("监听到servletContext对象销毁了...");
    }
}

MVC

三层架构

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言