Jakarta ee 将功能添加到servlet

Jakarta ee 将功能添加到servlet,jakarta-ee,servlets,Jakarta Ee,Servlets,我开发了一个servlet,用户在其中输入名称,然后单击submit按钮向用户致意,我还想添加一个功能,它应该显示当前登录的用户数,例如,如果我从一个浏览器点击servlet,它应该显示登录的用户数为1,因为我是第一个用户,如果其他人从下一个浏览器点击servlet,它应该显示他是2个访问者,因此,通过这种方式,它将向他显示当前登录的用户数,请告知如何实现这一点 项目的web.xml为 <?xml version="1.0" encoding="UTF-8"?> <web

我开发了一个servlet,用户在其中输入名称,然后单击submit按钮向用户致意,我还想添加一个功能,它应该显示当前登录的用户数,例如,如果我从一个浏览器点击servlet,它应该显示登录的用户数为1,因为我是第一个用户,如果其他人从下一个浏览器点击servlet,它应该显示他是2个访问者,因此,通过这种方式,它将向他显示当前登录的用户数,请告知如何实现这一点

项目的web.xml为

   <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>FirstDemo</display-name>


  <servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.saral.MyServlet</servlet-class>
</servlet>


<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/helloServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>

<welcome-file>home.html</welcome-file>
</welcome-file-list> 

</web-app>
我已经将我的servlet也修改成了这个

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class First
 */
//@WebServlet("/First")
public class MyServlet extends HttpServlet
{
    private static final long serialVersionUID = 1L;


    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String name=request.getParameter("txtName");
        response.setContentType("text/html");
        request.getAttribute("sessionCount");
        PrintWriter out=response.getWriter();
        out.println("Hello,"+name);
        out.println("<br> this output is generated by a simple servlet.");
        out.println("--->"+(request.getAttribute("sessionCount")));
        out.close();


    }

}
import java.io.IOException;
导入java.io.PrintWriter;
导入javax.servlet.ServletException;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
/**
*Servlet实现类优先
*/
//@WebServlet(“/First”)
公共类MyServlet扩展了HttpServlet
{
私有静态最终长serialVersionUID=1L;
/**
*@参见HttpServlet#doGet(HttpServletRequest请求,HttpServletResponse响应)
*/
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
//TODO自动生成的方法存根
字符串名称=request.getParameter(“txtName”);
response.setContentType(“text/html”);
request.getAttribute(“sessionCount”);
PrintWriter out=response.getWriter();
out.println(“你好,”+name);
println(“
这个输出是由一个简单的servlet生成的。”); out.println(“-->”+(request.getAttribute(“sessionCount”)); out.close(); } }
但是我得到的会话是空的…在输出中。。http://imageshack.us/photo/my-images/405/sessionoutput.jpg/


请告诉我如何才能得到那里的值我现在得到空值,我想当我第一次请求时,它应该显示1,如果我打开第二个,它应该显示2,请告诉我如何做到这一点,因为我对此很感兴趣。

您可以在应用程序范围中存储一个简单的POJO,您可以在其中维护计数。

。您可以在这里发布代码,以了解更多的clearSee示例,非常感谢我所做的一切,在此基础上,我还创建了sessioncounter类主servlet如何检索它请建议并查看我的更新帖子。谢谢您需要以以下方式访问
请求。getSession().getServletContext().getAttribute(“sessionCount”)
request.getAttribute(“sessionCount”)
是不同的作用域,请求作用域中不会有该变量。
package com.saral;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;


public class SessionCounter implements HttpSessionListener
{
        private static int count;

        public SessionCounter()
        {
        }

        public void sessionCreated(HttpSessionEvent arg0)
        {
                count++;
                ServletContext sContext = arg0.getSession().getServletContext();
                synchronized (sContext)
                {
                        sContext.setAttribute("sessionCount", new Integer(count));
                }
        }

        public void sessionDestroyed(HttpSessionEvent arg0)
        {
                count--;
                ServletContext sContext = arg0.getSession().getServletContext();
                synchronized (sContext)
                {
                        sContext.setAttribute("sessionCount", new Integer(count));
                }
        }
}
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class First
 */
//@WebServlet("/First")
public class MyServlet extends HttpServlet
{
    private static final long serialVersionUID = 1L;


    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String name=request.getParameter("txtName");
        response.setContentType("text/html");
        request.getAttribute("sessionCount");
        PrintWriter out=response.getWriter();
        out.println("Hello,"+name);
        out.println("<br> this output is generated by a simple servlet.");
        out.println("--->"+(request.getAttribute("sessionCount")));
        out.close();


    }

}