编写一个Servlet,实现统计网站被访问次数的功能

一、要求

1.新建一个类ShowTimesServlet继承HttpServlet,重写doGet和doPost方法。

2.在doPost方法中调用doGet方法,在doGet方法中实现统计网站被访问次数的功能,用户每请求一次servlet,使访问次数times加1。

3.获取ServletContext,通过它的功能记住上一次访问后的次数。

二、实现 

1.ServletContext简介

ServletContext官方叫servlet上下文。服务器会为每一个工程创建一个对象,这个对象就是ServletContext对象。这个对象全局唯一,而且工程内部的所有servlet都共享这个对象。所以叫全局应用程序共享对象。

2.  作用

①是一个域对象

②可以读取全局配置参数

③可以搜索当前工程目录下面的资源文件

④可以获取当前工程名字

3.域对象方法

setAttribute(key,value);
key是String类型,value是Object类型;
往域对象里面添加数据,添加时以key-value形式添加

getAttribute(key);
根据指定的key读取域对象里面的数据

removeAttribute(key);
根据指定的key从域对象里面删除数据
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "ShowTimesServlet",urlPatterns="/ShowTimesServlet")
public class ShowTimesServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获得Context
        ServletContext context = getServletContext();
        //从context中获取访问次数
        Integer times = (Integer) (context).getAttribute("times");
        if (times == null) {
            times = 1;
        } else {
            times = times + 1;
        }
        //设置编码
        resp.setContentType("text/html;charset=UTF-8");
        //得到输出流对象
        PrintWriter out=resp.getWriter();
        out.println("当前页面被访问了");
        out.println("<font color=red size=20>"+times+"</font>次");
        //设置属性,将times保存到当前的上下文中
        context.setAttribute("times",times);
    }
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //调用doGet处理方法
        doGet(req, resp);
    }
}

 三、结果

注意访问路径,一定要和@WebServlet中设置的urlPatterns路径保持一致,且urlPatterns路径中一定要带有斜杠。

访问两次的结果为:

  • 4
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
<h3>回答1:</h3><br/>可以通过以下步骤编写一个servlet实现统计网站访问次数功能: 1. 创建一个Java类,继承HttpServlet类,重写doGet()方法。 2. 在doGet()方法中,获取ServletContext对象,并从中获取一个名为“visitCount”的属性。 3. 如果“visitCount”属性不存在,则将其设置为1,并将其存储在ServletContext中。 4. 如果“visitCount”属性存在,则将其值加1,并将其存储在ServletContext中。 5. 在doGet()方法中,将“visitCount”属性的值输出到浏览器。 6. 在web.xml文件中配置servlet映射。 7. 部署应用程序并启动服务器。 8. 访问网站时,servlet将自动统计访问次数,并将其显示在浏览器中。 示例代码如下: ```java import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletContext; public class VisitCountServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext context = getServletContext(); Integer visitCount = (Integer)context.getAttribute("visitCount"); if (visitCount == null) { visitCount = 1; } else { visitCount++; } context.setAttribute("visitCount", visitCount); response.setContentType("text/html"); response.getWriter().println("<h1>网站访问次数:" + visitCount + "</h1>"); } } ``` 在web.xml文件中添加以下配置: ```xml <servlet> <servlet-name>VisitCountServlet</servlet-name> <servlet-class>VisitCountServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>VisitCountServlet</servlet-name> <url-pattern>/visitcount</url-pattern> </servlet-mapping> ``` 在浏览器中访问http://localhost:8080/visitcount,即可看到网站访问次数。 <h3>回答2:</h3><br/>ServletJava Web应用程序中的一种Java程序,可以处理HTTP请求和响应,常用于动态生成Web页面和交互式应用程序。编写一个Servlet实现统计网站访问次数功能,可以分为以下几个步骤: 1. 创建一个计数器变量count,用于统计网站访问次数。 2. 在Servlet的init()方法中初始化计数器变量count。 3. 在Servlet的doGet()方法中实现对计数器变量count的操作,每次访问Servlet时,计数器变量count的值加1。 4. 在Servlet的doGet()方法中向浏览器输出网站访问次数的信息,可以使用PrintWriter类的print()方法或者response对象的getWriter()方法。 5. 在Web应用程序的web.xml文件中配置Servlet,指定Servlet的URL匹配模式和Servlet类名。 以下是实现的代码: import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class CountServlet extends HttpServlet { private static int count; public void init() throws ServletException { count = 0; } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { count++; response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>统计网站访问次数</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>网站访问次数为:" + count + "</h1>"); out.println("</body>"); out.println("</html>"); } } 在web.xml中添加如下配置: <servlet> <servlet-name>countServlet</servlet-name> <servlet-class>CountServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>countServlet</servlet-name> <url-pattern>/count</url-pattern> </servlet-mapping> 配置完成后,就可以通过访问http://localhost:8080/应用程序名称/count来查看网站访问次数了。每一次访问Servlet,计数器变量count都会加1,并将累加的次数输出到浏览器页面中。最后,可以使用数据库或缓存技术将计数器变量count的值永久化保存,以便在Web应用程序重启或停止后,仍然能够正确地统计网站访问次数。 <h3>回答3:</h3><br/>ServletJava Web应用程序的重要组成部分,可用于处理网络请求和生成Web响应。编写一个servlet实现统计网站访问次数功能,需要以下步骤: 1. 创建一个计数器变量count,来记录网站访问次数。 2. 实现一个HttpServlet类,这个类将被用来处理HTTP请求。可以继承HttpServlet类,然后重写doGet()方法。 3. 在doGet()方法中,将count计数器加1,然后输出计数器的值,以便用户能够看到被访问次数。 4. 编写web.xml文件,将servlet映射到特定的URL。 完整代码如下所示: ```java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class VisitCounterServlet extends HttpServlet { private int count = 0; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); count++; out.println("<html><body>"); out.println("<h2>Welcome to my website!</h2><br/>"); out.println("<p>You are the " + count + " visitor to this site.</p>"); out.println("</body></html>"); } } ``` 为了使用这个servlet,需要将它注册到Web应用程序中。下面是注册的一种方法: ```xml <servlet> <servlet-name>VisitCounterServlet</servlet-name> <servlet-class>VisitCounterServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>VisitCounterServlet</servlet-name> <url-pattern>/counter</url-pattern> </servlet-mapping> ``` 在上面的代码中,servlet-name指定了servlet的名称,servlet-class指定了所用的Java类名。servlet-mapping将servlet映射到一个URL上,这里是/counter。 最后,在网页上访问/counter的URL,会看到一个欢迎信息以及访问次数访问该URL,计数器将会自增,每次刷新页面都会显示统计访问次数的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

juechen333

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值