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%">
???????????????????
??????????????? </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>
??????????? ?
??????????? ?
??????????? ?
??????????? ?<% }%>
????????
??????????? ?
??????????? ?
??????????? ?
??????????? ?
??????????? ?<%
??????????? ?
??????????? ?}
???????????
???????????? %>
???????????? <%} %>
?
最關(guān)鍵的地方是使用成員變量,count實(shí)現(xiàn)第一次登陸的登陸控制,當(dāng)?shù)谝淮蔚顷懯莡ser為空并且count=0;獲得index頁(yè)面的實(shí)體對(duì)象,實(shí)現(xiàn)循環(huán)有servlet再次跳轉(zhuǎn)到當(dāng)前頁(yè)面,但是count的值為1執(zhí)行else部分在else部分中首先將count的值置為0再次回歸到0這樣在其他客戶端未登錄情況下瀏覽時(shí)user為null并且成員變量count==0這樣就可以再次獲得index.jsp頁(yè)面的實(shí)體對(duì)象,保證實(shí)體對(duì)象不為空。實(shí)現(xiàn)多客戶端未登錄情況下可以同時(shí)瀏覽頁(yè)面。
這種在僅為判斷一次的條件下使用的方法用在if else中時(shí)很常用的方法,一種自處理方式,對(duì)自己對(duì)共有屬性的修改在判斷完成后自動(dòng)消除掉這種影響,如同wait()和signal()方法實(shí)現(xiàn)同步是一樣的原理
servlet的生命周期決定在第一次初始化servlet后所有客戶端對(duì)servlet中成員變量的修改都是在公共 屬性上的修改,相互影響,所以這種方式是不推薦的,但是如果采用自處理的實(shí)現(xiàn)方式是可以的。servlet的所有成員變量標(biāo)志其狀態(tài),所有客戶端對(duì)成員變量的修改都會(huì)永遠(yuǎn)作用在servlet上并影響其他客戶端的訪問(wèn), 處理。
?
?
?
?
posted on 2012-09-24 20:10 moonfans 閱讀(...) 評(píng)論(...) 編輯 收藏轉(zhuǎn)載于:https://www.cnblogs.com/moonfans/archive/2012/09/24/2700581.html
總結(jié)
以上是生活随笔為你收集整理的jsp中未登录用户也可以浏览页面的功能实现代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 092型战略导弹核潜艇
- 下一篇: 2011年的总结:Fans同学的成败得失