3.Servlet对象

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");

作者:hashifei

出处:https://www.cnblogs.com/hashifei/p/18131519

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   哈士费  阅读(1)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· 面试官:你是如何进行SQL调优的?
more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示