服务于区块链开拓者

www.zhidnet.com

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

<%!
               int count=0;
              %>
                 <%
                
                 User userr= (User) session.getAttribute("user");
                
                 if(userr==null&&count==0){
                  count++;
                  this.getServletConfig().getServletContext().getRequestDispatcher("/servlet/FindBoardList").forward(request,response);
                
                 }
                 else{
                 count--;
             ArrayList<Index>boardList=(ArrayList<Index>)session.getAttribute("boardListIndex");
             BoardDaoImpl boardDao=new BoardDaoImpl();
             for(int i=0;i<boardList.size();i++){
             
             
             if(boardDao.isParentBoard(boardList.get(i).getBoardName())){%>
             
             
                 
             <tr class="tr3">
                <td colspan="4">
                    <%=boardList.get(i).getBoardName() %>
                </td>
            </tr>
             
             <% } else
              if( boardList.get(i).getBoardName().equals(boardList.get(i-1).getBoardName())){
               continue;
              
              }else
             
             {%>
              <tr class="tr3">
                <td width="5%">
                    &nbsp;
                </td>
                <th align="left">
                    <img src="/bbs/image/board.gif">
                    <a href="/bbs/servlet/FindTopicList?boardid=<%=boardList.get(i).getBoardid() %>"><%=boardList.get(i).getBoardName() %></a>
                </th>
                <td align="center">
                    <%=boardList.get(i).getReply_count() %>
                </td>
                <th>
                    <span><a href="/bbs/servlet/FindReplyList?topicid=<%=boardList.get(i).getTopicid() %>&title=<%=boardList.get(i).getTitle() %>&boardname=<%=boardList.get(i).getBoardName() %>"><%=boardList.get(i).getTitle() %></a></span>
                    <br />
                    <span><%=boardList.get(i).getUsername() %></span> <span class="gray">[ <%=boardList.get(i).getPublishTime() %>]</span>
                </th>
            </tr>
             
             
             
             <% }%>
        
             
             
             
             
             <%
             
             }
           
             %>
             <%} %>

 

最关键的地方是使用成员变量,count实现第一次登陆的登陆控制,当第一次登陆是user为空并且count=0;获得index页面的实体对象,实现循环有servlet再次跳转到当前页面,但是count的值为1执行else部分在else部分中首先将count的值置为0再次回归到0这样在其他客户端未登录情况下浏览时user为null并且成员变量count==0这样就可以再次获得index.jsp页面的实体对象,保证实体对象不为空。实现多客户端未登录情况下可以同时浏览页面。

这种在仅为判断一次的条件下使用的方法用在if else中时很常用的方法,一种自处理方式,对自己对共有属性的修改在判断完成后自动消除掉这种影响,如同wait()和signal()方法实现同步是一样的原理

servlet的生命周期决定在第一次初始化servlet后所有客户端对servlet中成员变量的修改都是在公共 属性上的修改,相互影响,所以这种方式是不推荐的,但是如果采用自处理的实现方式是可以的。servlet的所有成员变量标志其状态,所有客户端对成员变量的修改都会永远作用在servlet上并影响其他客户端的访问, 处理。

 

 

 

 

posted on 2012-09-24 20:10  知点网  阅读(494)  评论(0编辑  收藏  举报