zoukankan      html  css  js  c++  java
  • jsp中未登录用户也可以浏览页面的功能实现代码

    <%!
                   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上并影响其他客户端的访问, 处理。

  • 相关阅读:
    软件测试笔记(二):软件测试流程
    关于Kotlin中日志的使用方法
    Github Pages+Gridea设置DisqusJS评论
    软件测试笔记(一):软件测试概论
    CVPR2021| TimeSformer-视频理解的时空注意模型
    经典论文系列 | Group Normalization & BN的缺陷
    经典论文系列 | 重新思考在ImageNet上的预训练
    CVPR2021 | 华为诺亚实验室提出Transformer in Transformer
    经典论文系列| 实例分割中的新范式-SOLO
    我们真的需要模型压缩吗
  • 原文地址:https://www.cnblogs.com/moonfans/p/2700581.html
Copyright © 2011-2022 走看看