• 第三十一节(java-实现QQ空间访问量统计系统)


    LoginServlet登录页面:
    
    package com.tanzhou.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.io.UnsupportedEncodingException;
    import java.util.Enumeration;
    
    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.tanzhou.util.User;
    import com.tanzhou.util.UserList;
    
    public class LoginServlet extends HttpServlet {
    
        public LoginServlet() {
            super();
        }
    
        public void destroy() {
            super.destroy(); // Just puts "destroy" string in log
        }
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
               doPost(request,response);
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            response.setContentType("text/html;charset=utf-8");
            
            String name = getNewString(request.getParameter("username"));
            String pass = request.getParameter("userpass");
            
            if(name==null || "".equals(name)){
                response.sendRedirect("/OnlineUserDemo/login.html");
                return ;
            }else{
                
                // 讲登录的用户名和密码保存到session中
                HttpSession session = request.getSession(true);
                
                // 保存对象到session
                User user = (User)session.getAttribute("user");
                if(user==null || !name.equals(user.getName())){
                    user = new User(name);
                    session.setAttribute("user", user);
                }
            }
            
            PrintWriter out = response.getWriter();
            out.println("欢迎用户:"+name+"登录"+"<br/>");
            out.println("<hr>"+"在线人数列表:"+"<br/>");
            UserList ul = UserList.getInstance();
            /**
             * Enumeration(列举)
             */
            Enumeration<String> enums = ul.getUserList();
            int i = 0;
            while(enums.hasMoreElements()){
                out.println(enums.nextElement()); // 遍历出来的用户信息
                out.println("&nbsp;&nbsp;&nbsp;");
                if((++i%8)==0){
                    out.println("<br>");
                }
            }
            out.println("<hr>");
            out.println("<br>"+"在线人数:"+ul.getUserCount());
            out.println("<br>"+"<a href='/OnlineUserDemo/servlet/OutServlet'>退出登录</a>");
            out.flush();
            out.close();
        }
    
        public void init() throws ServletException {
        }
       /**
        * 编码集处理
        * @param str
        * @return
        * @throws UnsupportedEncodingException
        */
        public static String getNewString(String str) throws UnsupportedEncodingException
        {
            return new String(str.getBytes("ISO-8859-1"),"UTF-8");
        }
    }
    
    
    OutServlet退出页面:
    
    package com.tanzhou.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    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.tanzhou.util.User;
    
    public class OutServlet extends HttpServlet {
    
        /**
         * Constructor of the object.
         */
        public OutServlet() {
            super();
        }
    
        /**
         * Destruction of the servlet. <br>
         */
        public void destroy() {
            super.destroy(); // Just puts "destroy" string in log
            // Put your code here
        }
    
        
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            doPost(request,response);
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            
            HttpSession session = request.getSession(true);
            User user = (User)session.getAttribute("user");
            
            session.invalidate(); // session销毁
            response.sendRedirect("/OnlineUserDemo/login.html");
        }
    
        /**
         * Initialization of the servlet. <br>
         *
         * @throws ServletException if an error occurs
         */
        public void init() throws ServletException {
            // Put your code here
        }
    
    }
    
    
    User页面:
    package com.tanzhou.util;
    
    import javax.servlet.http.HttpSessionBindingEvent;
    import javax.servlet.http.HttpSessionBindingListener;
    /**
     * 
     * @author Tony Liu
     *
     *
     *如果一个对象实现了HttpSessionBindingListener接口,当这个对象被绑定到session中或者从session中被删除时,
     *Servlet容器会通知该对象。
     */
    public class User implements HttpSessionBindingListener{
        // 得到UserList的实例
        private UserList ul = UserList.getInstance();
        private String name;
        
        public User(String name){
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
        /**
         * session创建对象--自动调用valueBound     用户登录
         */
        @Override
        public void valueBound(HttpSessionBindingEvent arg0) {
            ul.addUser(name);  // 添加用户
        }
        /**
         * session销毁--自动调用valueUnbound  用户退出
         */
        @Override
        public void valueUnbound(HttpSessionBindingEvent arg0) {
            ul.removeUser(name);  //删除用户
        }
        
        
    }
    
    
    UserList页面:
    
    package com.tanzhou.util;
    
    import java.util.Enumeration;
    import java.util.Vector;
    
    /**
     * 用户集合类
     * @author Ming
     *
     *
     *
     * 单例模式---是指一个类只有一个实例,并且能够自行的实例化
     * 特点:构造方法是私有
     * 
     * 单例模式:懒汉式单例  饿汉式单例   登记式单例
     * 特点:
     *   1、单例类只能有一个实例
     *   2、单例类必须自己创建自己的唯一实例
     *   3、单例类必须给所有其他对象提供这一实例
     */
    public class UserList {
    
        private static final UserList userList = new UserList();
        /**
         * List 接口一共有三个 ArrayList  Vector  LinkedList
         */
        private Vector<String> v; //用户集合
        
        private UserList(){
            v = new Vector<String>();
        }
        
        public static UserList getInstance(){
            return userList;
        }
        /**
         * 用户登录-添加用户信息
         * @param name
         */
        public void addUser(String name){
            if(name!=null){
                v.addElement(name);
            }
        }
        
        /**
         * 用户退出的方法
         * @param anme
         */
        public void removeUser(String name){
            if(name!=null){
                v.remove(name);
            }
        }
        /**
         * 用户数量的统计
         * @return
         */
        public int getUserCount(){
            return v.size();
        }
        /**
         * Enumeration (列举)
         * @return
         */
        public Enumeration<String> getUserList(){
            return v.elements();
        }
    }
  • 相关阅读:
    VSTS知识整理 荣
    扯淡 荣
    我安装了SQL Server2005后,为什么在IIS的默认站点下面并没有发现Reports? 荣
    ERROR 32000 错误 荣
    vs2012程序打包部署下载InstallShield2015LimitedEdition的下载及安装打包整套教程
    微信小程序之保持登录状态即session不改变
    微信小程序如何调用API实现数据请求wx.request()
    改版kingsmotor.cn用到的参考网站
    第一个css+div网页(太弱智了)
    超级搞笑的笑话
  • 原文地址:https://www.cnblogs.com/Deng1185246160/p/4279730.html
Copyright © 2020-2023  润新知