首页 > 其他分享 >3.Servlet对象

3.Servlet对象

时间:2024-04-12 17:14:03浏览次数:19  
标签:web String 对象 ServletContext Servlet name

ServletConfig对象
ServletContext对象
request对象
response对象

3.1 ServletConfig对象

常用方法:getServletConfig();
功能:getServletName();  //获取servlet的名称,也就是我们在web.xml中配置的servlet-name

     getServletContext(); //获取ServletContext对象,该对象的作用看下面讲解
     getInitParameter(String); //获取在servlet中初始化参数的值。这里注意与全局初始化参数的区分。这个获取的只是在该servlet下的初始化参数
getInitParameterNames(); //获取在Servlet中所有初始化参数的名字,也就是key值,可以通过key值,来找到各个初始化参数的value值。注意返回的是枚举类型

3.2. ServletContext对象

常用方法:getServletContext(); 、getServletConfig().getServletContext();  
//这两种获取方式的区别就跟上面的解释一样,第一种是直接拿,在GenericServlet中已经帮我们用getServletConfig().getServletContext();拿到了ServletContext。我们只需要直接获取就行了,第二种就相当于我们自己在获取一遍,两种读是一样的。

  功能:tomcat为每个web项目都创建一个ServletContext实例,tomcat在启动时创建,服务器关闭时销毁,在一个web项目中共享数据,管理web项目资源,为整个web配置公共信息等,通俗点讲,就是一个web项目,就存在一个ServletContext实例,每个Servlet读可以访问到它。
常用函数:
1. web项目中共享数据,getAttribute(String name)、setAttribute(String name, Object obj)、removeAttribute(String name)

     * setAttribute(String name, Object obj) 在web项目范围内存放内容,以便让在web项目中所有的servlet读能访问到

     * getAttribute(String name) 通过指定名称获得内容

     * removeAttribute(String name) 通过指定名称移除内容  
2.整个web项目初始化参数 //这个就是全局初始化参数,每个Servlet中都能获取到该初始化值

     * getInitPatameter(String name)  //通过指定名称获取初始化值

     * getInitParameterNames()  //获得枚举类型
3. getResourcePaths(java.lang.String path) 指定路径下的所有内容。

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext servletContext = this.getServletContext();

        String username = "fei"; // 数据
        servletContext.setAttribute("username",username);
    }
}
public class GetServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext context = this.getServletContext();
        String username = (String) context.getAttribute("username");

        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8");
        resp.getWriter().print("名字"+username);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

3.3 request对象

在Java Servlet API中,HttpServletRequest 对象代表客户端发送到服务器的请求。这个对象包含了所有与HTTP请求相关的信息,如请求参数、头信息、URL、HTTP方法等。 HttpServletRequest 对象由Servlet容器创建,并作为参数传递给Servlet的服务方法(如doGet, doPost等)。

  1. 请求行内容
  2. 请求头
String contentType = request.getHeader("Content-Type");
  1. 路径信息
    上下文路径:getContextPath 返回Web应用的上下文路径。
String contextPath = request.getContextPath();

路径信息:getPathInfo 提供额外的路径信息(URL中,Servlet路径之后的部分)。

String pathInfo = request.getPathInfo();
  1. HTTP方法

可以通过 getMethod 方法获取客户端请求使用的HTTP方法,如GET、POST等。

String method = request.getMethod();
  1. 会话管理

HttpServletRequest 提供 getSession 方法来获取当前的 HttpSession 对象。如果当前请求没有会话,则可以创建一个新的会话。

HttpSession session = request.getSession();
HttpSession sessionWithNoNew = request.getSession(false);  // 不创建新会话

3.4 response对象

在Java Servlet API中,HttpServletResponse对象是一个非常重要的组件,用于构建和发送Web服务器的响应给客户端(通常是Web浏览器)。这个对象提供了一系列方法,可以用来设置响应的内容类型、状态码、管理cookie、重定向和输出响应内容等。

  1. 设置响应状态
    HttpServletResponse 提供了方法来设置HTTP响应的状态码。例如:
response.setStatus(HttpServletResponse.SC_OK); // 设置状态为200
  1. 写入响应体
    要发送响应体,你可以使用 getWriter() 或 getOutputStream() 方法。这取决于你要发送的数据类型(文本或二进制):
PrintWriter out = response.getWriter();
out.println("<html><body><h1>Hello, World!</h1></body></html>");

或者,发送二进制数据(如图像文件):

ServletOutputStream out = response.getOutputStream();
out.write(myByteArray);
  1. 设置响应头
    可以使用 setHeader 方法来设置HTTP头信息。
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=\"filename.txt\"");
  1. 重定向
response.sendRedirect("http://www.example.com");

标签:web,String,对象,ServletContext,Servlet,name
From: https://www.cnblogs.com/hashifei/p/18131519

相关文章

  • js 判断空对象
    进行JavaScript中判断空对象可以有以下几种实现方法:使用Object.keys()方法:使用该方法可以获取对象的所有属性名,然后判断属性名的数量是否为0。如果为0,则表示对象为空functionisEmptyObject(obj){returnObject.keys(obj).length===0;}2、使用for...in循环:通......
  • 统一controller返回对象
    统一controller返回对象packagecom.xxx.jscaffold.handler;importcom.xxx.jscaffold.api.dto.common.Result;importorg.springframework.core.MethodParameter;importorg.springframework.http.MediaType;importorg.springframework.http.converter.HttpMessageConver......
  • Java中Array.sort()的几种用法简明教程 (需要初始化要排序的对象)对 一个数组的所有元素
    Java中Array.sort()的几种用法简明教程(需要初始化要排序的对象)对一个数组的所有元素进行排序,并且是按从小到大的顺序Java中Array.sort()的几种用法简明教程(需要初始化要排序的对象)======================================================1、Arrays.sort(int[]a)......
  • java面向对象有哪些特征
    Java面向对象编程(OOP)的核心特征通常包括封装性、继承性、多态性和抽象性。具体如下:封装性:封装是指将对象的属性(数据)和行为(方法)绑定在一起,并对对象的实现细节进行隐藏,只暴露出必要的接口给外部使用。这样做的目的是为了保护对象的内部状态,防止外部随意访问和修改。继承性:继承允......
  • 2-64. 使用 Unity 最新 ObjectPool API 制作对象池
    创建PoolManager修改EventHandler修改CropDetails修改Crop修改PoolManager修改CropDataList_SO修改PoolManager作业做好Tree02项目相关代码代码仓库:https://gitee.com/nbda1121440/farm-tutorial.git标签:20240411_1542......
  • 三分钟带你“手撕”Java中的类与对象
    目录1.面向对象的初步认识1.1.什么是面向对象?2.什么是类?2.1.认识类2.2.类的定义格式3.类的实例化出对象3.1.什么是实例化,什么是对象?3.2.怎么实例化一个对象?4.总结1.面向对象的初步认识1.1.什么是面向对象?Java是一门面向对象的编程,那什么是面向对象呢?比如:你......
  • 面相对象(三):模拟链表
    面向对象的基本原理是对对象建模,让抽象的逻辑封装成具象的行为,更方便人们理解和使用。在前面的文章中我写了关于继承的一些理解,一般来说这里应该讨论与继承同为面向对象三个主要特征的多态与封装了。但是我想多态与封装是一种伴随着类的定义自然而然形成的现象,只有先接触了一定数......
  • ASP.NET--Request(请求)对象概述
    概述:Request对象用于检索从浏览器向服务器发送的请求中的信息。它提供对当前页请求的访问,包括标题、Cookie、客户端证书,查询字符串等,与HTTP协议的请求信息相对应。同样,假如将用户请求服务器的过程比喻成客户到柜台买商品的过程,那么客户向享受原描述要购买商品(如颜色,大小,功能......
  • 2024-04-11 记录日常业务之遍历对象并删除不符合条件的属性
    为什么要记录,因为很少遇到这种奇葩的需求,后端要我不要返回对象中所有值为-1的字段,我就纳了闷了,你就不能自己处理吗??好了,不吐槽了,主要是较少去处理遍历对象的操作(历来都是遍历数组),所以在这里做个记录:letparams={ a:10, b:6, c:-1, d:11, e:19, f:-1,......
  • IO流【 文件字符输入、出流;带缓冲区的字符输入、出流;对象流】
    day36IO流字符流继承图字符流继day35应用场景:操作纯文本数据注意:字符流=字节流+编译器编译器:可以识别中文字符和非中文字符,非中文字符获取1个字节(一个字节=一个字符),编译器会根据编码格式获取中文字符对应的字节数(GBK获取两个字节,UTF-8获取三个字节)abstrac......