• 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

  • 相关阅读:
    oracle 锁表查看与解锁
    oracle 监视索引是否使用
    oracle 查看数据库版本
    mybatis 中文做参数报错
    windows mysql绿色版配置
    maven使用本地jar包
    Java 使用Jedis连接Redis数据库(-)
    Linux 安装redis
    ELK之在CentOS7.5上使用rpm包安装配置ELK7版本
    Ubuntu-18.04更改安装源为国内源
  • 原文地址:https://www.cnblogs.com/chaserFF/p/13033708.html
Copyright © 2020-2023  润新知