zoukankan      html  css  js  c++  java
  • contextServlet

    一:读取配置文件中的参数信息

    1.新建servlet文件ContextServlet1,代码为:

    import java.io.IOException;
    import java.util.Enumeration;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class ContextServlet1 extends HttpServlet {
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    		String url1 = this.getServletConfig().getServletContext().getInitParameter("url");
    		String url2 = this.getServletContext().getInitParameter("url");//这两行代码效果相同
    		System.out.println("url1:" + url1);
    		System.out.println("url2:" + url2);
    		System.out.println("--------------------------");
    		Enumeration<String> initParameterNames = this.getServletContext().getInitParameterNames();
    		while(initParameterNames.hasMoreElements()){
    			String nextElement = initParameterNames.nextElement();
    			String elementValue = this.getServletContext().getInitParameter(nextElement);
    			System.out.println("elementsValue:" + elementValue);
    		}
    	}
    }

    2.配置web.xml:
    在web.xml根元素下加入下面代码:

     <context-param>
      	<param-name>url</param-name>
      	<param-value>mysql:http://localhost:3306</param-value>
      </context-param>
      <context-param>
      	<param-name>address</param-name>
      	<param-value>this is the context-param's address</param-value>
      </context-param>
      <context-param>
      	<param-name>career</param-name>
      	<param-value>coder,enger,ceo</param-value>
      </context-param>


    3.发布工程,浏览器中输入:http://localhost/myday03/servlet/ContextServlet1
    控制台打印结果:

    url1:mysql:http://localhost:3306
    url2:mysql:http://localhost:3306
    --------------------------
    elementsValue:coder,enger,ceo
    elementsValue:mysql:http://localhost:3306
    elementsValue:this is the context-param's address


    二:程序写入contextServlet参数,并取出<统计网页访问次数>:

    1.新建servlet文件ContextServlet2代码:

    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    //servletContext,session,request. jsp page.
    
    //servletContext是一个域对象,那么有两个概念。
    // 1.域就肯定是一个容器。(可以放任何对象)。
    // 2.域是有一个作用范围的。对于servletContext对象来说,它的作用范围就是整个web应用范围。
    // 
    public class ContextServlet2 extends HttpServlet {
    /*
     * 首先通过init方法给其设置一个初始化的值。这个值设置了之后就是一个全局的。
     * 通过servletContext对象设置的数据都是全局的。
     * servletContext就当前的web应用。(non-Javadoc)
     * @see javax.servlet.GenericServlet#init()
     */
    	public void init() throws ServletException {
    		int timesValue = 0;
    		//代码中一般是键值对,键在前,值在后,
    		this.getServletContext().setAttribute("timesName", timesValue);
    	}
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    	/*为了统计网站的访问次数,首先将之前的全局的times给获得。
    	 * 每次来自客户端的请求都将该全局的times+1
    	 * 调用getAttribute("name")就可以获得全局的times.
    	 * 	
    	 */
    		int timesValue = (Integer) this.getServletContext().getAttribute("timesName");
    		timesValue++;
    		//将变化后的times重新添加到容器中,
    		this.getServletContext().setAttribute("timesName", timesValue);
    		System.out.println("本网站已被访问:" + timesValue + "次!");
    	}
    }




    2.浏览器中输入:http://localhost/myday03/servlet/ContextServlet2
    控制台输出:
    本网站已被访问:1次!
    本网站已被访问:2次!//第二次刷新时得到的结果。每刷新一次就得到一个新的结果。


    三:将上述在控制台中输出的结果改为在浏览器中输出:


    import java.io.IOException;
    import java.text.DateFormat;
    import java.util.Date;
    
    import javax.servlet.*;
    import javax.servlet.http.*;
    public class RefreshServelet extends HttpServlet {
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		//refresh头实现定时刷新到某个页面.
    		//一般可用作定时刷新,
    		//应用:股票,聊天室,
    //		response.setHeader("Refresh", "2;url=http://www.baidu.com");
    		response.setHeader("Refresh", "0");
    		response.setContentType("text/html;charset=utf-8");
    		response.getWriter().print("每秒刷新一次:"+ new Date(System.currentTimeMillis()).toLocaleString());
    //		response.getWriter().print("每秒刷新一次:"+ DateFormat.format();
    		
    	}
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    	}
    
    }


  • 相关阅读:
    洛谷P2045 K方格取数(算竞进阶习题)
    洛谷P2764 最小路径覆盖问题
    BZOJ 1051 受欢迎的牛
    BZOJ 4196 软件包管理器
    跨域知识(一)——CORS
    CSS 实现隐藏滚动条同时又可以滚动
    数组map用法总结
    js和Jquery获取选中select值和文本
    closest和parents方法区别
    CSS面试题总结2(转)
  • 原文地址:https://www.cnblogs.com/pangblog/p/3278380.html
Copyright © 2011-2022 走看看