contextServlet

本文介绍如何在Servlet中读取web.xml配置文件中的参数信息,并实现网站访问次数的统计功能,同时展示了如何将统计结果输出到浏览器。

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

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 {
	}

}


请给我详细步骤,我使用的是eclipse 实验三 Servlet 一、实验学时 4学时 二、实验目的 1、掌握编写Servlet和两种配置方式。 2、掌握使用Servlet实现接收请求参数。 3、掌握Servlet的作用域和存取数据。 4、掌握Servlet实现请求转发和重定向。 三、实验环境 PC系列微机:CPU 2G以上,内存2G以上,硬盘可用空间:5G以上。 操作系统:Windows 10。 四、实验步骤 具体内容参考教材《Java Web应用开发基础教程》第3章。 1、请使用IDE创建Java Web项目;在Java Web项目中创建HelloServlet并使用web.xml配置HelloServlet;部署Java Web项目到Tomcat,测试访问HelloServlet。 2、使用注解配置HelloServlet;部署Java Web项目到Tomcat,测试访问HelloServlet。 3、编写一个接收用户注册信息RegisterServlet,能接收用户输入的姓名、年龄、密码。 4、创建RequestScopeServlet并使用注解配置RequestScopeServlet;在RequestScopeServlet中,创建User对象,将User对象保存到request作用域中;使用请求转发跳转到另一个Servlet ReceiveServlet,在ReceiveServlet中获取RequestScopeServlet中保存到Request作用域的User对象;部署Java Web项目到Tomcat,测试访问RequestScopeServlet。 5、修改4中的RequestScopeServlet,使用Servlet重定向跳转到另一个Servlet ReceiveServlet,在ReceiveServlet中尝试获取RequestScopeServlet中保存到Request作用域的User对象;部署Java Web项目到Tomcat,测试访问RequestScopeServlet。 6、编写SessionScopeServlet实现将创建的User对象保存到Session作用域、跳转到SessionReceiveServlet中并在SessionReceiveServlet中获取保存的User对象。 7、编写ApplicationScopeServlet实现将创建的User对象保存到Application作用域、跳转到ApplicationReceiveServlet中并在ApplicationReceiveServlet中获取保存的User对象。 五、实验报告 1、请写出HelloServlet的关键代码和web.xml中配置该Servlet的关键代码。 2、请写出使用注解配置HelloServlet类的完整代码。 3、请写出用户注册RegisterServlet的关键代码。 4、请写出实验步骤4的RequestScopeServlet和ReceiveServlet的关键代码。 5、请写出实验步骤5的RequestScopeServlet和ReceiveServlet的关键代码。 6、请说明实验步骤4的运行结果和实验步骤5的运行结果,并说明实验步骤4与5的运行结果差异的原因。 7、请写出SessionScopeServlet和SessionReceiveServlet的关键代码。 8、请写出ApplicationScopeServlet和ApplicationReceiveServlet的关键代码。
最新发布
11-01
实验三 Servlet 一、实验学时 4学时 二、实验目的 1、掌握编写Servlet和两种配置方式。 2、掌握使用Servlet实现接收请求参数。 3、掌握Servlet的作用域和存取数据。 4、掌握Servlet实现请求转发和重定向。 三、实验环境 PC系列微机:CPU 2G以上,内存2G以上,硬盘可用空间:5G以上。 操作系统:Windows 10。 四、实验步骤 具体内容参考教材《Java Web应用开发基础教程》第3章。 1、请使用IDE创建Java Web项目;在Java Web项目中创建HelloServlet并使用web.xml配置HelloServlet;部署Java Web项目到Tomcat,测试访问HelloServlet。 2、使用注解配置HelloServlet;部署Java Web项目到Tomcat,测试访问HelloServlet。 3、编写一个接收用户注册信息RegisterServlet,能接收用户输入的姓名、年龄、密码。 4、创建RequestScopeServlet并使用注解配置RequestScopeServlet;在RequestScopeServlet中,创建User对象,将User对象保存到request作用域中;使用请求转发跳转到另一个Servlet ReceiveServlet,在ReceiveServlet中获取RequestScopeServlet中保存到Request作用域的User对象;部署Java Web项目到Tomcat,测试访问RequestScopeServlet。 5、修改4中的RequestScopeServlet,使用Servlet重定向跳转到另一个Servlet ReceiveServlet,在ReceiveServlet中尝试获取RequestScopeServlet中保存到Request作用域的User对象;部署Java Web项目到Tomcat,测试访问RequestScopeServlet。 6、编写SessionScopeServlet实现将创建的User对象保存到Session作用域、跳转到SessionReceiveServlet中并在SessionReceiveServlet中获取保存的User对象。 7、编写ApplicationScopeServlet实现将创建的User对象保存到Application作用域、跳转到ApplicationReceiveServlet中并在ApplicationReceiveServlet中获取保存的User对象。 五、实验报告 1、请写出HelloServlet的关键代码和web.xml中配置该Servlet的关键代码。 2、请写出使用注解配置HelloServlet类的完整代码。 3、请写出用户注册RegisterServlet的关键代码。 4、请写出实验步骤4的RequestScopeServlet和ReceiveServlet的关键代码。 5、请写出实验步骤5的RequestScopeServlet和ReceiveServlet的关键代码。 6、请说明实验步骤4的运行结果和实验步骤5的运行结果,并说明实验步骤4与5的运行结果差异的原因。 7、请写出SessionScopeServlet和SessionReceiveServlet的关键代码。 8、请写出ApplicationScopeServlet和ApplicationReceiveServlet的关键代码。
11-01
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值