jsp页面不可以request.setAtrribute(“”,“”);然后在相应的servlet里面得到。
好像是request生命周期的问题。我不想再次在数据库得到一个数据集对象。所以想把对象从servlet——jsp——servlet!请问大虾怎么解决?就是因为用sessi...
好像是request生命周期的问题。
我不想再次在数据库得到一个数据集对象。所以想把对象从servlet——jsp——servlet!
请问大虾怎么解决?
就是因为用session的话编译不会有错,但是会导致内存过大。tomcat会提示严重的警告的提示!
具体怎么删除呢?
不过谢谢大家的回答! 展开
我不想再次在数据库得到一个数据集对象。所以想把对象从servlet——jsp——servlet!
请问大虾怎么解决?
就是因为用session的话编译不会有错,但是会导致内存过大。tomcat会提示严重的警告的提示!
具体怎么删除呢?
不过谢谢大家的回答! 展开
7个回答
展开全部
用session.setAtrribute("","");和session.getAtrribute("","");
用HttpSessionListener监听session的销毁,在sessionDestroyed里做处理
下面代码中onlineUserList 是所有在线用户
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSessionEvent;
public class OnlineUserListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent event) {
}
public void sessionDestroyed(HttpSessionEvent event) {
HttpSession session = event.getSession();
ServletContext application = session.getServletContext();
// 取得登录的用户名
String username = (String)session.getAttribute("username");
// 从在线列表中删除用户名
List onlineUserList = (List)application.getAttribute("onlineUserList");
onlineUserList.remove(username);
System.out.println(username + "超时退出。");
}
}
为了让监听器发挥作用,将它添加到web.xml中(xxx是包名,改成你自己的):
<listener>
<listener-class>xxxx.OnlineUserListener</listener-class>
</listener>
用HttpSessionListener监听session的销毁,在sessionDestroyed里做处理
下面代码中onlineUserList 是所有在线用户
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSessionEvent;
public class OnlineUserListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent event) {
}
public void sessionDestroyed(HttpSessionEvent event) {
HttpSession session = event.getSession();
ServletContext application = session.getServletContext();
// 取得登录的用户名
String username = (String)session.getAttribute("username");
// 从在线列表中删除用户名
List onlineUserList = (List)application.getAttribute("onlineUserList");
onlineUserList.remove(username);
System.out.println(username + "超时退出。");
}
}
为了让监听器发挥作用,将它添加到web.xml中(xxx是包名,改成你自己的):
<listener>
<listener-class>xxxx.OnlineUserListener</listener-class>
</listener>
展开全部
没事看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没太明白你的意思,不过那个说用session的,是可以的不管你在哪调用
用完后记得移除就行
用完后记得移除就行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
session可以在整个会话中都存在的,不需要servlet——jsp——servlet来隐藏和读取值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你真的不想用session,而要选择用request对象的话,那么你一定要注意servlet--jsp--servlet这其中的两次跳转,只能是请求转发的形式:
servlet--jsp:这里在servlet中使用
request.getRequestDispatcher("XX.jsp").forward(request, response);
进行跳转。
jsp--servlet:这里在jsp中用<jsp:forward>标签跳吧
反正不管里怎么跳来跳去,你一定要保证你不要向服务器发出新的请求,这样就是一个request对象,里面的东西也不会丢的。你可以尝试一下。
servlet--jsp:这里在servlet中使用
request.getRequestDispatcher("XX.jsp").forward(request, response);
进行跳转。
jsp--servlet:这里在jsp中用<jsp:forward>标签跳吧
反正不管里怎么跳来跳去,你一定要保证你不要向服务器发出新的请求,这样就是一个request对象,里面的东西也不会丢的。你可以尝试一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
request对象不能用重定向的,要用转发才能得到
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询