我想显示使用此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();
}
}
如何从jsp向这个servlet传递值,以便将用户名存储在其列表中......是否可以在会话中将值放入该servlet中。
答案 0 :(得分:0)
如果要将会话中的值存储到servlet,只需将属性附加到会话;
在登录期间,获取用户名并将值存储到会话中;
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);
只要会话处于活动状态,就可以随时获取值。
HttpSession sess = request.getSession(false);//Use the current Session
//Get the value fron the Session
String username = (String) sess.getAttribute("username");//get the Attribute Username
你需要先将属性附加到会话才能以这种方式获得。
答案 1 :(得分:0)
这样的事情:
<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");
答案 2 :(得分:0)
您可以或不可以从代码中的不同位置访问具有不同范围的变量。在JavaEE中,存在具有请求,会话和应用程序范围的变量。
请求范围意味着您可以设置它并在当前请求的所有类中使用它,这就是您现在所需要的。
对不起,我现在无法帮助你,但有了这个信息,Google或SO搜索框应该是你的朋友。我稍后会添加详细信息。
编辑 -
Stefan beike的回答有我正在谈论的这些细节。