关键词:
一.预准备工程
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.作用:-作为域用来共享数据,此时数据在整个应用程序中共享... 查看详情
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 查看详情