2014-02-06 67 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搜索框应该是你的朋友。我稍后会添加详细信息。

编辑 -

斯特凡北科的回答有这些细节,我说的。