【知了堂学习笔记】_Java中ServletContext的学习

5 篇文章 0 订阅
3 篇文章 0 订阅

请关注“知了堂学习社区”,地址:http://www.zhiliaotang.com/portal.php 

ServletContext的概念

1.      WEB程序在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。

2.      ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。

3.      由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。

4.      针对web应用的信息共享区域,被所有的客户端共享。

5.      web服务器一启动的时候,就会为每个web应用创建一个对应ServletContext对象。

6.      在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数。

7.      当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息。

8.      web.xml的代码:

方法一:

<?xmlversion="1.0"encoding="UTF-8"?>

<web-appxmlns:xsi=http://www.w3.org/2001/XMLSchema-instancexmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"version="2.5">

  <!-- 配置一些参数:整个应用共享的参数 -->

  <context-param>

    <param-name>encoding</param-name>

    <param-value>utf-8</param-value>

  </context-param>

 

  <!-- 某个servlet的初始化参数,放到servlet配置的里面 -->

  <servlet>

    <servlet-name>ServletContextDemo</servlet-name>

    <servlet-class>servletContext.ServletContextDemo</servlet-class>

    <init-param>

      <param-name>name</param-name>

      <param-value>test</param-value>

    </init-param>

  </servlet>

  <servlet-mapping>

    <servlet-name>ServletContextDemo</servlet-name>

    <url-pattern>/ServletContextDemo</url-pattern>

  </servlet-mapping>

</web-app>

方法二:在ServletContextDemo中配置(自动生成)

@WebServlet(

           urlPatterns = { "/ServletContextDemo" },

           initParams = {

                  @WebInitParam(name ="name", value = "test")

        })

9.      ServletContextDemo的代码:

doGet方法的代码:

protected void doGet(HttpServletRequestrequest, HttpServletResponseresponse) throws ServletException, IOException {

       // TODO Auto-generatedmethod stub

       //取得初始化参数

       //1.得到servletContext对象

       ServletContext context =request.getServletContext();

       //2.得到初始化参数

       String encoding = context.getInitParameter("encoding");

       System.out.println(encoding);

      

       //1.得到当前servletconfig对象

       ServletConfig config = this.getServletConfig();

       //2.config对象中得到当前servlet的初始化参数

       String name = config.getInitParameter("name");

       System.out.println(name);

}

10. SimpleServlet的代码:

doGet方法的代码:

protected voiddoGet(HttpServletRequest request, HttpServletResponseresponse) throwsServletException, IOException {

       // TODO Auto-generatedmethod stub

       //取得初始化参数

       //1.得到servletContext对象

       ServletContext context =request.getServletContext();

       this.getServletContext();

       this.getServletConfig().getServletContext();

       //2.得到初始化参数

       String encoding = context.getInitParameter("encoding");

       System.out.println(encoding);

      

       //1.得到当前servletconfig对象

       ServletConfig config = this.getServletConfig();

       //2.config对象中得到当前servlet的初始化参数

       String name = config.getInitParameter("name");

       System.out.println(name);

}

ServletContext的应用

1.      多个Servlet通过ServletContext对象实现数据共享。

2.      获取WEB应用的初始化参数。

3.      利用ServletContext对象读取资源文件。

4.      ContextServlet的代码:

login.jsp的代码(body主体代码):

<body>

    <formaction="ContextServlet"method="post">

       <inputtype="text"name="name"/>

       <inputtype="submit"/>

    </form>

</body>

doPost方法的代码:

protected voiddoPost(HttpServletRequest request, HttpServletResponseresponse) throwsServletException, IOException {

       // TODO Auto-generatedmethod stub

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

       PrintWriter out = response.getWriter();

      

       //1.得到客户端输入的名字

       String name = request.getParameter("name");

       //2.将这个名字存入来访用户列表,列表再存入servletContext

       List<String> nameList;

nameList = (List<String>)this.getServletContext().getAttribute("nameList");

       if(nameList==null){

           nameList = new ArrayList<String>();

       }

       nameList.add(name);

       this.getServletContext().setAttribute("nameList",nameList);

      

       for(StringaccessName:nameList){

           out.print(accessName);

       }

}

5.      SessionServlet的代码:

doPost方法的代码:

protected voiddoPost(HttpServletRequest request, HttpServletResponseresponse) throws ServletException,IOException {

       // TODO Auto-generatedmethod stub

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

       PrintWriter out = response.getWriter();

      

       //1.得到客户端输入的名字

       String name = request.getParameter("name");

       //2.将这个名字存入来访用户列表,列表再存入servletContext

       HttpSession session = request.getSession();

       List<String> nameList;

       nameList = (List<String>)session.getAttribute("nameList");

       if(nameList==null){

           nameList = new ArrayList<String>();

       }

       nameList.add(name);

       session.setAttribute("nameList",nameList);

      

       for(StringaccessName:nameList){

           out.print(accessName);

       }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值