国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

監聽器(web基礎學習筆記二十二)

2019-11-14 22:52:22
字體:
來源:轉載
供稿:網友
監聽器(web基礎學習筆記二十二)一、監聽器

監聽器是一個專門用于對其他對象身上發生的事件或狀態改變進行監聽和相應處理的對象,當被監視的對象發生情況時,立即采取相應的行動。監聽器其實就是一個實現特定接口的普通java程序,這個程序專門用于監聽另一個java對象的方法調用或屬性改變,當被監聽對象發生上述事件后,監聽器某個方法立即被執行。

二、監聽器統計在線人數--HttpsessionListener實現
package com.pb.news.listenter;public class OnlineCounter {    public static long ONLINE_USER_COUNT=0;    public static long getonline(){        return ONLINE_USER_COUNT;    }    public static void raise() {        ONLINE_USER_COUNT++;    }    public static void reduce() {        ONLINE_USER_COUNT--;    }}
package com.pb.news.listenter;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;/** * application Lifecycle Listener implementation class OnlineCounterListener * */public class OnlineCounterListener implements HttpSessionListener {    /**     * @see HttpSessionListener#sessionCreated(HttpSessionEvent)     */    public void sessionCreated(HttpSessionEvent arg0)  {          // TODO Auto-generated method stub        //session創建里用戶加1        OnlineCounter.raise();    }    /**     * @see HttpSessionListener#sessionDestroyed(HttpSessionEvent)     */    public void sessionDestroyed(HttpSessionEvent arg0)  {         //session銷毀里里用戶減1        OnlineCounter.reduce();    }    }

只需要在頁面中寫入

在線人數:<%=OnlineCounter.getonline() %>
三、監聽器統計在線人數--HttpSessionBindingListener實現綁定用戶登錄查詢在線人數

創建靜態變量類

package com.pb.news.constants;public class Constants {//統計在線人線人數靜態常量    public static int ONLINE_USER_COUNT=0;}

創建用戶類來實現-接口-HttpSessionBindingListener

package com.pb.news.listenter;import javax.servlet.http.HttpSessionBindingEvent;import javax.servlet.http.HttpSessionBindingListener;import com.pb.news.constants.Constants;/** * Application Lifecycle Listener implementation class UserLoginCount * */public class UserLoginCount implements HttpSessionBindingListener {    PRivate int id;                  //用戶id;                            private String username;       //用戶姓名                         private String passWord;       //用戶密碼                          private String email;          //用戶郵箱             private int usertype;             //用戶類型              //getter和setter方法    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public String getEmail() {        return email;    }    public void setEmail(String email) {        this.email = email;    }    public int getUsertype() {        return usertype;    }    public void setUsertype(int usertype) {        this.usertype = usertype;    }    /**     * Default constructor.      */    public UserLoginCount() {        // TODO Auto-generated constructor stub    }    /**     * @see HttpSessionBindingListener#valueBound(HttpSessionBindingEvent)     */    public void valueBound(HttpSessionBindingEvent arg0)  {         Constants.ONLINE_USER_COUNT++;    }    /**     * @see HttpSessionBindingListener#valueUnbound(HttpSessionBindingEvent)     */    public void valueUnbound(HttpSessionBindingEvent arg0)  {         Constants.ONLINE_USER_COUNT--;    }    }

創建登錄servlet類

package com.pb.news.web.servlet;import java.io.IOException;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import com.pb.news.dao.impl.UsersDaoImpl;import com.pb.news.entity.Users;import com.pb.news.listenter.UserLoginCount;import com.pb.news.service.impl.UsersserviceImpl;/** * Servlet implementation class UserLoginServlet */public class UserLoginServlet extends HttpServlet {    private static final long serialVersionUID = 1L;           /**     * @see HttpServlet#HttpServlet()     */    public UserLoginServlet() {        super();        // TODO Auto-generated constructor stub    }    /**     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)     */    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        // TODO Auto-generated method stub    }    /**     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)     */    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        //request.setCharacterEncoding("utf-8");        String username=request.getParameter("username");        String password=request.getParameter("password");        UsersServiceImpl usersService=new UsersServiceImpl();        UsersDaoImpl usersDao=new UsersDaoImpl();        usersService.setUsersDao(usersDao);        boolean flag=usersService.login(username, password);        if(flag==true){            //request.getSession().setAttribute("user", username);            //創建HttpSessio對象            /*Users users=new Users();            users.setUsername(username);            users.setPassword(password);*/            UserLoginCount users= new UserLoginCount();            users.setUsername(username);            users.setPassword(password);            HttpSession s=request.getSession();            s.setAttribute("user", users);            //s.setAttribute("pwd", password);            //request.getRequestDispatcher("jsp/index.jsp").forward(request, response);            response.sendRedirect("jsp/index.jsp");                    }else{            request.setAttribute("msg", "用戶名或者密碼不正確");            RequestDispatcher rd=request.getRequestDispatcher("jsp/userLogin.jsp");            rd.forward(request, response);            //request.getRequestDispatcher("jsp/userLogin.jsp").forward(request, response);            //response.sendRedirect("jsp/userLogin.jsp");        }            }}

在要顯示的頁面顯示

已登錄用戶:<%=com.pb.news.constants.Constants.ONLINE_USER_COUNT %> 

相比較,第一種更簡潔,這里可能還有理簡單的輸出,暫時沒發現

四、監聽器統計在線人數--HttpSessionListener實現
package com.pb.news.web.servlet;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;public class UserCountListener implements HttpSessionListener {    private int count = 0;    public void sessionCreated(HttpSessionEvent se) {        // TODO Auto-generated method stub        //人數加1        count++;        setContext(se);    }    public void sessionDestroyed(HttpSessionEvent se) {        // TODO Auto-generated method stub        //人數減1         count--;         setContext(se);    }    private void setContext(HttpSessionEvent se){        se.getSession().getServletContext().setAttribute("userCount",new Integer(count));    }}
創建UserCountListener監聽器,注意web.xml中要有:<listener>        <listener-class>com.pb.news.web.servlet.UserCountListener</listener-class></listener>創建監聽器后,可以在需要顯示人數的頁面加入下面的語句:Object userCount=session.getServletContext().getAttribute("userCount");out.print(userCount.toString());
五、不需要登錄統計在線人數
package com.pb.listenter;import javax.servlet.ServletContext;import javax.servlet.annotation.WebListener;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;/** * Application Lifecycle Listener implementation class CountListenter * */@WebListenerpublic class CountListenter implements HttpSessionListener {    //private int count=0;    /**     * Default constructor.      */    public CountListenter() {        // TODO Auto-generated constructor stub    }    /**     * 創建seesion+1     */    public void sessionCreated(HttpSessionEvent se)  {          // TODO Auto-generated method stub        ServletContext context=se.getSession().getServletContext();        Integer count=(Integer) context.getAttribute("count");        if(count==null){            //count=new Integer(1);            context.setAttribute("count", 1);        }else{            count++;            context.setAttribute("count", count);        }                    }    /**     * 銷毀session時次數-1     */    public void sessionDestroyed(HttpSessionEvent se)  {          // TODO Auto-generated method stub        ServletContext context=se.getSession().getServletContext();        Integer count=(Integer) context.getAttribute("count");        count--;        context.setAttribute("count", count);            }    }

在需要顯示的頁面輸入以下代碼顯示

<%ServletContext context=session.getServletContext();Integer count=(Integer)context.getAttribute("count");%>  <%=count%>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 股票| 信宜市| 阿拉善盟| 天津市| 长丰县| 曲阳县| 定日县| 嘉黎县| 唐山市| 清镇市| 白沙| 宝丰县| 贵德县| 迭部县| 华亭县| 邵武市| 兴义市| 涟水县| 鄂尔多斯市| 铜陵市| 丘北县| 梅河口市| 临洮县| 巨野县| 改则县| 彭水| 衢州市| 大同县| 任丘市| 枣庄市| 新郑市| 大丰市| 根河市| 左权县| 建德市| 中江县| 阿图什市| 铁岭县| 台州市| 滦南县| 沅江市|