2014-02-06 65 views
0

我想用這個servlet來顯示在線用戶顯示在線用戶......如何使用servlet映射

import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.Map; 


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

import org.chatapp.useroperation.Client; 

@WebServlet(name = "onlineUsersServlet", urlPatterns = { "/getOnlineUsersList" }) 
public class ListOfOnlineUsers extends HttpServlet { 

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { 

     String commaSepeparatedStr =""; 
     ServletContext appScope = request.getServletContext(); 
     String channel = request.getParameter("channel"); 
     final Map<String, List<Client>> clients = (Map<String, List<Client>>) appScope.getAttribute(LoginServlet.CLIENTS); 
     System.out.println(clients); 
     if(clients.size()> 0){ 
      final List<Client> onlineClients = clients.get(channel); 
      if(onlineClients !=null){ 
       for (Client client : onlineClients) { 
        if(commaSepeparatedStr.equals("")){ 
         commaSepeparatedStr = client.getUserName(); 
        }else{ 
         commaSepeparatedStr =commaSepeparatedStr+","+ client.getUserName(); 

        } 
       } 
      } 
     } 
     response.getWriter().write(commaSepeparatedStr); 
     response.flushBuffer(); 

    } 

} 

如何傳遞價值,這個servlet從JSP,使其存儲用戶名在它的列表中......有可能從會話中將該值放入該servlet中。

回答

0
在JSP

做這樣的事情:

<form action="/YOURWEBAPPNAME/onlineUsersServlet/getOnlineUsersList" method="get"> 
    <input type="text" name="test" value="Hello World"> 
    <input type="submit" value="Send"> 
</form> 

在你doGet方法做​​到這一點:

String userInput = request.getParameter("test"); 

,並使用這些東西感覺很自由。

把那個東西在會話使用:

request.getSession(false).setAttribute("input",userInput); 

,並閱讀:

String lInput = (String) request.getSession(false).getAttribute("input"); 
0

如果您希望將會話中的某個值存儲到某個servlet中,只需將一個屬性附加到Session;

在登錄期間,獲取用戶名並將值存儲到Session中;

HttpSession sess = request.getSession();//Create new Session 
//Get the username from login input 
String username = request.getParameter("name"); 

//Attach the name to the Session. 

sess.setAttribute("username", username); 

只要會話處於活動狀態,就可以隨時獲取該值。

您需要將屬性連接到會話,然後才能以此方式獲取它。

0

有屬於不同範圍的變量就可以了,或者沒有的,在不同的地方訪問你的代碼。在JavaEE中,有請求,會話和應用程序範圍的變量。

請求範圍意味着您可以設置它並在當前請求的所有類中使用它,這就是您現在需要的。

對不起,我現在不能幫你更多,但有了這些信息,Google或SO搜索框應該是你的朋友。我稍後會添加詳細信息。

編輯 -

斯特凡北科的回答有這些細節,我說的。