关于对servletcontext对象的应用详解(代码片段)

上进小菜猪 上进小菜猪     2022-12-02     436

关键词:

@[toc]

一.预准备工程

1.1 ServletContext的概念

ServletContext是用于存储信息的全局空间。它从服务器开始就存在,只有在服务器关闭后才释放。

2.1 创建新的Servlet项目

1.新建项目Servlet-02。

2.新建文件java,标记其为Sources Root。

3.新建接口为com.gowork.servlet

4.创建类helloservlet

5.继承HttpServlet

6.重写doGet和doPost方法

public class helloservlet extends HttpServlet 
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 
        System.out.println("Hello");
    
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 
        super.doPost(req, resp);
    

7.注册hello,写映射

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.gowork.servlet.helloservlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
</servlet-mapping>

8.重新设置web容器路径—tomcat

测试可以正常访问!

二.ServletContext对象

做好了上面的准备过程,我们先了解一下几个对象

this.getInitParameter() 初始化参数
this.getServletConfig() servlet配置
this.getServletContext() servlet上下文

当web容器启动时,它将为每个web应用程序创建一个对应的ServletContext对象,该对象表示当前的web应用程序

  • 共享数据:我在这个servlet中保存的数据可以在另一个servlet中获得

2.1 新建类 GetServlet

1.继承HttpServlet。

2.重写doGet和doPost。

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

注册getx,写映射:如下

    <servlet>
        <servlet-name>getx</servlet-name>
        <servlet-class>com.gowork.servlet.getservlett</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>getx</servlet-name>
        <url-pattern>/getx</url-pattern>
    </servlet-mapping>

启动应用,测试项目

直接访问

会爆我的用户名为null

这是因为,我们没有执行hello类,没有生成ServletContext对象,现在的ServletContext是空的,所以显示我的用户名为null。

那么,我们先访问hello,再来访问getx,如下图:

现在就出现了——我的用户名为上进小菜猪。

因为我们在第一次访问hello的时候,服务器端会执行helloservlet类,将ServletContext对象赋值。

我们再访问getx的时候,ServletContext就不为空了,而变成了上进小菜猪。

三.ServletContext应用

3.1 获取初始化函数

1.新建立一个类,类名为:servleDemo3。

2.继承HttpServlet。

3.重写doGet和doPost。

ServletContext comtext = this.getServletContext();

获取到之前访问得到的ServletContext对象值。

4.配置一下web应用初始化参数

<context-param>
    <param-name>url</param-name>
    <param-value>jdbc:mysql://localhost:3306/mybatis</param-value>
</context-param>

5.前台输出url的值

String url = comtext.getInitParameter("url");
resp.getWriter().print(url);

6.去配置表里,注册,写对应的映射。

<servlet>
    <servlet-name>url</servlet-name>
    <servlet-class>com.gowork.servlet.servletDemo3</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>url</servlet-name>
    <url-pattern>/url</url-pattern>
</servlet-mapping>

7,启动项目,访问:

8.由上可以看出我们获取到了初始化函数。后期在这里链接我们的数据库。

3.2 请求转发

1.首先先建立一个新的Demo方便我们操作,类名为servletDemo04。

2.配置好基础的步骤,与上面的配置步骤相同。

4.转发的请求路径

ServletContext context = this.getServletContext();   context.getRequestDispatcher("/url").forward(req,resp);

forward(req,resp);是实现了请求转发。

5.请求转发需要配置的注册表以及映射:

<servlet>
    <servlet-name>goandgo</servlet-name>
    <servlet-class>com.gowork.servlet.servletDemo04</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>goandgo</servlet-name>
    <url-pattern>/goandgo</url-pattern>
</servlet-mapping>

6.重新启动项目访问goandgo路径,观察下列结果。

3.2.1 转发和重定向的区别

转发是服务器行为,重定向是客户端行为。

重定向是浏览器上的网址改变,转发是浏览器上的网址不变。

3.3 读取资源文件

1.在build中配置resources,来防止我们资源导出失败的问题

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

2.新建类 类名为:servletDemo05。

3.继承类,重写doGet

4.在resour目录下新建db.properties

username=zhu
password=123456

5.路径指向当前项目生成路径:

InputStream is=this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
Properties prop =new Properties();
prop.load(is);
String user = prop.getProperty("username");
String pas = prop.getProperty("password");

6.输出到页面

resp.getWriter().print(user+":"+pas);

7.写url注册与映射:

<servlet>
    <servlet-name>sx5</servlet-name>
    <servlet-class>com.gowork.servlet.servletDemo05</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>sx5</servlet-name>
    <url-pattern>/sx5</url-pattern>
</servlet-mapping>

8.访问localhost:8080/servlet-02/sx5

结果如下:

javaweb域对象-servletcontext

...象域对象可以用来数据传递。servlet和servletservlet和页面2.ServletContext当服务器启动的时候,为每一个应用偶创建一个ServletContext对象,被该应用中所有的资源共享服务器启动的时候,ServletContext创建服务器关闭的时候,ServletContext... 查看详情

三:servletcontext对象

一、ServletContext对象1.什么是ServletContext对象ServletContext代表是一个web应用的环境(上下文)对象,ServletContext对象内部封装是该web应用的信息,ServletContext对象一个web应用只有一个2.ServletContext对象的生命周期?创建:该web应用被... 查看详情

servletcontext对象解析

​​ServletContext对象​​​【简介】ServletContext即Servlet上下文对象,该对象表示当前的web应用环境信息,一个Web应用只会创建一个ServletContext对象。Web容器启动的时候,它会为每个Web应用程序都创建一个对应的ServletContext对象,它... 查看详情

servletcontext对象初识(代码片段)

什么是ServletContext?ServletContext代表一个web应用的环境(上下文)对象,ServletContext对象内部封装的是该web应用的信息。一个web应用只有一个ServletContext对象。但是一个web应用有多个servlet对象。ServletContext的生命周期?创建:该wwb... 查看详情

javawebchapter6对象作用域

...使用这个属性,以及它能存活多久。2、 应用上下文ServletContext对象作用域:对于整个Web应用,只有一个ServletContext对象,而且在Web应用中的所有地方都可以访问它;ServletContext对象由Web容器创建并实例化,它可以多线程同时... 查看详情

servletcontext对象(代码片段)

1.每一个web应用都有且仅有一个ServletContext对象,又称Application对象,在web容器启动时,会为每一个web应用程序创建一个对应的ServletContext对象。2.作用:-作为域用来共享数据,此时数据在整个应用程序中共享&#x... 查看详情

javaweb的四大域对象

四个域对象分别为PageContext,request,session,servletContext,范围从小到大。一、ServletContext1、生命周期:当Web应用被加载进容器时创建代表整个web应用的ServletContext对象,当服务器关闭或Web应用被移除时,ServletContext对象跟着销毁... 查看详情

servletcontext的小结(代码片段)

ServletContext对象:每个Servlet可以通过ServletContext对象来获取web应用的配置信息,也从侧面说明了ServletContext代表了这个web应用,也就是通过servlet可以获得真个web应用的配置信息功能:tomcat为每个web项目都创建一个ServletContext实例... 查看详情

servletcontextjavaweb(代码片段)

ServletContext一个Servlet对象对应一个ServletConfig。100个Servlet对象则对应100个ServletConfig对象。只要在同一个webapp当中,只要在同一个应用当中,所有的Servlet对象都是共享同一个ServletContext对象的。ServletContext对象在服务器启动... 查看详情

servletcontext作用功能详解.rp

ServletContextServletContext,是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放。request,一个用户可有多个;session,一个用户一个;而servletContext,所有用户共用一个。所以,为了节省空间,提高效率,Ser... 查看详情

总结javaweb中几个函数的作用

参考技术A  一ServletContext():(zz)  Servlet容器在启动时会加载Web应用并为每个JavaWeb应用创建唯一的ServletContext对象可以把ServletContext看成是一个Web应用的服务器端组件的共享内存在ServletContext中可以存放共享数据它提供了个读取... 查看详情

servlet的学习和理解(代码片段)

一.ServletContext接口 Servlet引擎为每个WEB应用程序都创建一个对应的ServletContext对象,ServletContext对象被包含在ServletConfig对象中,调用ServletConfig.getServletContext方法可以返回ServletContext对象的应用。由于每一个WEB应用程序中的所有... 查看详情

面试题:j2ee中web.xml配置文件详解

...,是Web应用的基础。 二、web.xml加载流程总的来说:ServletContext——Listener——Filter——Servlet1、首先Web容器创建一个ServletContext对象(对应JSP中的application内置对象),这个Web项目所有部分都将 查看详情

java之旅---servletcontext

什么是ServletContext?        WEB容器在启动时,它会为每一个WEB应用程序都创建一个相应的ServletContext对象。它代表当前web应用。通过使用这个对象,servlet能够记录事件,得到资源并得到来... 查看详情

servletcontext简介

...器在启动时,会为每个Web应用程序都各自创建一个对应的ServletContext对象。这个Web应用程序中的所有Servlet,都共享同一个ServletContext,因此,Servlet间可以通过ServletContext来进行通讯。设置全局ServletContext的容器参数在web.xml文件中... 查看详情

javaee基础(02):servlet核心api用法详解(代码片段)

...核心API简介API作用描述ServletConfig获取servlet初始化参数和servletContext对象。ServletContext在整个Web应用的动态资源之间共享数据。ServletRequest封装Http请求信息,在请求时创建。ServletResponse封装Http响应信息,在请求时创建。二、ServletC... 查看详情

servletcontext

ServletContext是一个web应用为所有客户端所共享的全局域。1.tomcat装载每一个web应用时都会为其创建一个Servletcontext对象,会以ServletConfig为根据来创建。2.在servlet文件中可以通过this.getServletContext方法和 ServletConfig.getServletContext()... 查看详情

servletcontext两个servlet传值学习笔记(代码片段)

ServletContext对象1)在web应用中,由服务器创建的唯一的一个对象是ServletContext2)ServletContext对象在每一个Servlet中取得都是相同到3)ServletContext对象在存取方法:存ServletContext.setAttribute(String,Object):(返回值)void取ServletContext.getAttribute(St 查看详情