zoukankan      html  css  js  c++  java
  • servlet应用

    一、建立数据库

     二、登陆时密码校验

    2.1 post请求提交表单

     2.2 获取登陆用户名及密码,并进行验证

    Service层:

     核心代码:

    public class LoginServiceImpl implements LoginService {
    
        private UserMapper userMapper;
    
        public LoginServiceImpl() {
            userMapper = new UserMapperImpl();
        }
    
        @Override
        public User findUserByUsernameAndPassword(User user) {
            return userMapper.findUserByUsernameAndPassword(user);
        }
    }

    DAO层:

     核心代码:

    public class UserMapperImpl implements UserMapper {
    
        /**
         * @param user 传入的user
         * @return com.j2ee.bean.User 如果查询不到,即为空,查询的到就将结果封装成对象返回
         * @author yangfan
         */
        @Override
        public User findUserByUsernameAndPassword(User user) {
            Connection conn = null;
            Statement statement = null;
            ResultSet rs = null;
            User checkUser = null;
            try {
                //获取连接
                conn = DBUtil.getConnection();
    
                String username = user.getUsername();
                String passwd = user.getPasswd();
                String sql = String.format("select * from user where username = '%s' and passwd = '%s'", username, passwd);
    
                statement = conn.createStatement();
                //查询结果
                rs = statement.executeQuery(sql);
                //存在记录
                if (rs.next()) {
                    checkUser = new User();
                    checkUser.setUsername(rs.getString("username"));
                    checkUser.setPasswd(rs.getString("passwd"));
                }
    
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } finally {
                //释放资源
                DBUtil.release(rs, statement, conn);
            }
            return checkUser;
        }
    }

    controller层:

     核心代码:

     测试:

     

     

     

     

    三、使用cookie保存用户登陆信息

    java核心代码:

     js核心代码:

     结果:可以看到Cookie已存储在客户端

     重新打开登陆页面可以看到username和password已经自动填在对应的文本框中

     四、使用session显示网站在线人数

    当一个浏览器第一次访问网站的时候,服务器会新建一个HttpSession对象 ,并触发 HttpSession创建事件 ,如果注册了HttpSessionListener事件监听器,则会调用HttpSessionListener事件监听器的 sessionCreated方法。相反,当这个浏览器访问结束超时的时候,dang服务器会销毁相应的HttpSession对象,触发 HttpSession销毁事件,同时调用所注册HttpSessionListener事件监听器的sessionDestroyed方法。因此实现一个类实现HttpSessionListener接口即可。

    @WebListener
    public class MyHttpSessionListener implements HttpSessionListener{
        //使用volatile保证并发安全
        private static volatile int userCount = 0;
    
        @Override
        public void sessionCreated(HttpSessionEvent httpSessionEvent) {
            System.out.println("--------------listener初始化----------------");
            userCount++;
            // 将userNumber添加到application域对象属性当中
            httpSessionEvent
                    .getSession()
                    .getServletContext()
                    .setAttribute("userNumber", userCount);
        }
    
        @Override
        public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
            System.out.println("--------------listener销毁----------------");
            userCount--;
            httpSessionEvent
                    .getSession()
                    .getServletContext()
                    .setAttribute("userNumber", userCount);
        }
    }

    servlet中代码:

     测试结果:

     五、登录时用户名为中文可能不能正常识别

    将username重新编码即可,一行代码代码解决

    测试:首先插入一条中文记录:

     

    登陆成功!

     

    项目地址:https://gitee.com/chaserff/J2EE

  • 相关阅读:
    使用模拟器混淆前端代码
    中间人攻击 -- Cookie 喷发
    【探索】机器指令翻译成 JavaScript
    复杂的 Hash 函数组合有意义吗?
    【探索】利用 canvas 实现数据压缩
    【趣事】用 JavaScript 对抗 DDOS 攻击 (下)
    【趣事】用 JavaScript 对抗 DDOS 攻击
    【探索】在 JavaScript 中使用 C 程序
    【探索】无形验证码 —— PoW 算力验证
    对抗明文口令泄露 —— Web 前端慢 Hash
  • 原文地址:https://www.cnblogs.com/chaserFF/p/13033708.html
Copyright © 2011-2022 走看看