java # Servlet

一、什么是Servlet?

Servlet是javaEE规范之一。规范就是接口。JavaWeb三大组件分别是:Servlet程序、Filter过滤器、Listener监听器。Servlet是运行在服务器上的一个Java小程序,它可以接收客户端发送来的请求,并响应数据给客户端。

二、Servlet的生命周期

  1. 执行Servlet构造器方法(只在第一次创建Servlet程序会调用)
  2. 执行init初始化方法(只在第一次创建Servlet程序会调用)
  3. 执行service方法(每次访问都会调用)
  4. 执行destroy销毁方法(在web工程停止的时候调用)

三、实现Servlet程序(2种方法)

方法1:实现Servlet接口(不常用)

  • 编写一个类去实现Servlet接口;在src目录下创建
  • 实现service方法,处理请求,并响应数据;需要根据getMethod方法,来区分get,post请求。
  • 在web.xml中去配置servlet程序的访问地址;
      • :Servlet程序起的别名。一般为类名。
      • :Servlet程序的全类名。
      • :Servlet程序起的别名。一般为类名。
      • :配置访问地址。

方法2:继承HttpServlet类(常用)

  • 编写一个类去继承HttpServlet类;在src目录下创建。
  • 根据业务需要重写doGet或doPost方法。
  • 在web.xml中去配置servlet程序的访问地址。

四、ServletConfig类

  • ServletConfig是Servlet程序的配置信息类。
  • Servlet程序的配置信息,web.xml中标签中的信息(属于每个Servlet,而不是整个web工程)。
    • Servlet程序的别名。
    • Servlet程序的初始化参数。
  • Servlet程序 & ServletConfig对象的创建。
    • Servlet程序和ServletConfig对象都是由Tomcat负责创建。
    • Servlet程序默认是第一次访问的时候创建,ServletConfig是每个Servlet程序创建时,就创一个对应的ServletConfig对象。
      • 一个Servlet程序对应一个ServletConfig对象
      • 通过当前ServletConfig对象,不可以获取其他Servlet程序的配置信息。

注意:

  1. 通过getSevletConfig()获取ServletConfig对象
  2. 重写init方法,一定要调用父类GenericServlet的init方法

ServletConfig的作用:

  • 获取Servlet程序的别名的值 getServletname()
  • 获取初始化参数 getInitParameter(name)
  • 获取ServletConfig对象 servletConfig.getServletContext()

五、ServletContext类

一、什么是ServletContext?

  • ServletContext是一个接口,它表示Servlet上下文对象
  • 在web.xml中中配置Servlet上下文信息,不单独属于某个,在所有外面
  • 一个web工程,只有一个ServletContext对象实例
  • ServletContext对象作用域是整个web工程

二、ServletContext生命周期

ServletContext对象在工程部署启动时创建,在工程停止时销毁。

三、ServletContext作用

  1. 获取web.xml中配置的上下文参数context-param getInitParameter(name)
  2. 获取当前的工程路径,格式:/工程路径 getContextPath()
  3. 获取工程部署后在服务器硬盘上的绝对路径 getRealPath("/")
  4. 像Map一样存取数据
    1. setAttribute("key","value")
    2. getAttribute("key")

六、HTTP协议

一、什么是HTTP协议

HTTP协议是指客户端与服务器之间通信时,发送的数据需要遵守的规则

二、Get请求&Post请求

常见的Get请求:

  • form标签method=get
  • a标签
  • link标签引入css
  • Script标签引入js文件
  • img标签引入图片
  • iframe引入html页面
  • 在浏览器地址栏中输入地址后敲回车

常见的Post请求:

  • form标签method=post

三、常用响应码

  • 200:表示请求成功
  • 302:表示请求重定向
  • 404:数据不存在(请求地址错误)
  • 500:服务器内部错误(代码错误,比如Servlet中分母为0)

七、HttpServletRequest类

作用:获取到所有的请求信息,Tomcat服务器会把请求过来的HTTP协议信息解析封装好到Request对象中。然后传递到service方法(doget和doPost)中给我们使用。

1、如何请求获取参数

req.getParameter(name);

2、POST请求的中文乱码解决

req.setCharacterEncoding("UTF-8")

3、请求转发

请求转发是指,服务器收到请求后,从一次资源跳转到另一个资源的操作

请求转发的特点:

  • 浏览器地址栏不会改变
  • 他们是一次请求
  • 他们共享request域中的数据
  • 可以转发到WEB-INF目录下
  • 不可以访问工程以外的资源

req.getRequestDispather("待转发的Servlet路径").forward(req.resp);

4、web中/斜杠的不同意义

  • 在web中/斜杠是一种绝对路径
  • /斜杠 如果被浏览器解析,得到的地址是:http://ip:port/
  • /斜杠 如果被服务器解析,得到的地址是:http://ip:port/工程路径

特殊情况:

response.sendRedict("/");把斜杠发送给浏览器解析,得到http://ip:port/

八、HTTPServletRespons类

1、HTTPServletRespons类的作用

表示所有响应的信息。用来设置返回给客户端的信息

2、如何往客户端回传数据

        1、通过输出往客户端回传数据信息(2种流)

  • 字节流:getOutputStream(); 常用于下载(传递二进制数据);
  • 字符流:getWriter();常用于回传字符串(常用);

        2、解决响应的中文乱码

        resp.setContentType("text/html;charset=UTF-8");

  • 同时设置服务器和客户端都使用utf-8字符集,还设置了响应头
  • 一定要在获取流对象之前使用才有效。

        3、请求重定向

        resp.sendRedirect("http://localhost:8080");

特点:

  1. 浏览器地址栏会改变
  2. 他们是两次请求
  3. 不共享request域中的数据
  4. 不能访问WEB_INF目录下
  5. 可以访问工程以外的资源,如www.baidu.com

你可能感兴趣的:(java,开发语言,八股文)