2012-07-22 100 views
0

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

该项目的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> 

的HTML是...

<html> 
<head> 
<title> A Simple web Application</title> 
</head> 
<body> 
<form method="get" action="helloServlet"> 
Name<input type="text" name="txtName"> 
<br><input type="submit" value="Login"> 
</form> 
</body> 
</html> 

请指教如何增加用户数量的功能登录。 下面是我的项目结构的快照.. enter link description here

我已经加入反类为如下所示...

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)); 
       } 
     } 
} 

,我已经修改了我的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(); 


    } 

} 

但我得到的会议是空...在output..http://imageshack.us/photo/my-images/405/sessionoutput.jpg/ output of session

请告知我该怎么在那里获得价值我现在得到空礼,我想要我做第一个请求它应该显示1,如果我打开第二它应该显示2,请告知如何实现,因为我坚持这一点。

+1

CAPS LOOOOOCK !!! – 2012-07-22 16:00:53

回答

0

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

+0

..你可以在这里发布代码,使理解更清晰 – user1538526 2012-07-22 16:06:24

+0

请参阅示例http://techdive.in/java/how-find-number-users-logged-web-application和http:// stackoverflow。 com/questions/4592961/how-can-i-check-which-all-users-are-logged-into-my-application – devang 2012-07-22 16:14:08

+0

非常感谢我已经完成了这项工作,并且基于此,我还创建了sessioncounter类,但是主servlet如何检索它请指教并查看我的更新post.thanks – user1538526 2012-07-23 03:52:11