2011-04-15 47 views
0

我想为下面的servlet程序做“创建一个名为com.SessServlet的servlet。如果你正在一个新的浏览器中访问这个servlet然后 它第一次显示'欢迎, Newcomer'。当你刷新同一页面时,它应该显示'欢迎回来,你正在访问页面<no of times you have refreshed the page>'。“java servlet中的会话

`package com.SessServlet122; 
import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
public class SessServlet extends HttpServlet 
{ 

public void service(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException 
{ 
    res.setContentType("text/html"); 
    int i; 
    PrintWriter pw=res.getWriter(); 
    HttpSession hs=req.getSession(); 
    i=0; 
    if(hs.isNew()) 
    { 

     pw.println("Hello:::"+i); 
    } 
    else 
    { i++; 
     pw.println("Welcome Back:Ur entry count is::::"+i); 
    } 

    pw.close(); 
} 
}` 

但是这段代码工作不正常。如何解决这个问题?提前致谢。

+0

的原因是,我每次请求到达服务器并且您的服务方法被调用时创建。你必须把我存储在其他地方。如果你想给每个用户一个i,那么这个会话就是要去的地方。 – 2011-04-15 09:26:47

回答

1

您应该将该计数器存储为sessionVariable,这样您就可以使用该计数器。
您需要这行你pw.close();电话后:

hs.setAttribute("counter", i); 

而且,你的计数器i的初始化应该是这样的:

Integer i = (Integer)hs.getAttribute("counter"); 
if (i == null) 
    i = 0; 
+0

非常感谢...呃ans对我很有用..对不起,对于迟到的答复.. – Mohan 2011-04-15 11:30:33

1

提示:

  • 创建Servlet
  • service()方法检索s在会话分裂国家和set an attribute如果其存在,否则设置ANS显示适当的消息
  • JSP的使用JSTL显示计数器,例如:如果该属性设置为hitCount然后JSP使用${hitCount}
+0

为什么不使用像他已经这样的服务方法? – 2011-04-15 09:40:44

+0

增强它.... – 2011-04-15 09:46:37