2012-07-22 151 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