java web application对象

1.application对象的作用
application类似系统的"全局变量",用于实现用户之间的数据共享.

2.application对象的常用方法
1.void setAttribute(String key, Object value):以键/值的方式,将一个对象的值存放到application中
2.Object getAttribute(String key):根据键去获取application中存放对象的值

3.统计网站访问人数
(1)创建Web项目Application
在这里插入图片描述
(2)创建WEB-INF创建lib目录,添加数据驱动程序jar包
在这里插入图片描述
(3)在web目录里修改index.jsp内容
在这里插入图片描述
(4)在web目录里面创建登录页面login.jsp
在这里插入图片描述
(5)数据库内容
在这里插入图片描述

(4).在src里创建net.ysy.bean,创建实体类User
在这里插入图片描述
(6)在src里面创建net.ysy.dbutil包,在里面创建ConnectionManager类
在这里插入图片描述
如下代码:

package net.ysy.bean.dbutil;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/*
功能:数据连接管理类
作者:ysy
 */
public class ConnectionManager {
    //定义数据库连接
    private static final String DRIVER="com.mysql.jdbc.Driver";
    private static final String URL="jdbc:mysql://localhost:3306/ysy";
    private static final String USER="root";
    private static final String PASSWORD="你的密码";

    /*
    私有构造方法,拒绝实例化
     */
    private ConnectionManager(){
        /*
        获取数据库静态方法
        @return 数据量连接
         */
    }
        public static Connection getConnection(){
            //声明数据库连接
            Connection connection=null;
            try{
                //安装数据库驱动程序
                Class.forName(DRIVER);
                //获取数据库连接
                connection= DriverManager.getConnection(URL,USER,PASSWORD);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return connection;
        }
        /*
        关闭数据库连接静态方法

        @param conn数据库连接
         */
        public static void closeConn(Connection connection){
            if (connection != null){
                try {
                    if (!connection.isClosed()){
                          connection.close();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }


}

(7)在net.ysy.dap里创建impl子包,在里面创建用户数据访问接口实现类UserDaoImpl.
这里穿插一个问题,如果想要包以一级一级的显示,那么这样,在那样.(去掉对勾)
在这里插入图片描述
在这里插入图片描述
(8)在net.ysy.dao里创建Impl子包,在里面创建用户数据访问接口实现类UserDaoImpl.
在这里插入图片描述

package net.ysy.bean.dao;

import net.ysy.bean.dao.Impl.UserDao;
import net.ysy.bean.dbutil.ConnectionManager;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class UserDaoImpl implements UserDao {
    @Override
    public boolean login(String username, String password) {
       //定义标识变量
        boolean flag=false;
        //获取数据库连接
        Connection connection= ConnectionManager.getConnection();
        //定义SQL字符串
        String strSQL="select * from user where username =? and password =?";
        try{
            //创建预备语句对象
            PreparedStatement pstmt =connection.prepareStatement(strSQL);
            //设置占位符的值
            pstmt.setString(1,username);
            pstmt.setString(2,password);
            //执行SQL查询,返回结果集
            ResultSet rs=pstmt.executeQuery();
            //判断结果集是否有记录
            if (rs.next()){
                flag=true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            ConnectionManager.closeConn(connection);
        }
        return flag;
    }
}

(9)在web目录里面创建登录处理页面do_login.jsp

<%@ page import="java.sql.Connection" %>
<%@ page import="net.ysy.bean.dao.Impl.UserDao" %>
<%@ page import="net.ysy.bean.dao.UserDaoImpl" %>
<%@ page import="net.ysy.bean.User" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.net.URLEncoder" %><%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2020/4/3
  Time: 17:42
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录处理页面</title>
</head>
<body>
<%
    //设置请求对象字符编码
    request.setCharacterEncoding("utf-8");
    //获取表单提交的数据
    String username=request.getParameter("username");
    String password=request.getParameter("password");

    //创建用户数据的访问对象
    UserDao userDao=new UserDaoImpl();
    //判断用户是否登录成功
    if (userDao.login(username,password)){
        //创建登录用户对象
        User loginUser=new User();
        //设置用户对象属性
        loginUser.setUsername(username);
        loginUser.setPassword(password);
        //创建登录用户列表对象
        List<User> loginUsers=new ArrayList<>();
        //判断application里面是否有登录用户列表属性
        if (application.getAttribute("LOGINED_USERS")==null){
            //在application里添加登录用户列表属性
            application.setAttribute("LOGINED_USERS",loginUsers);
        }else {
            //从application里面获取登录用户列表信息
            loginUsers= (List<User>) application.getAttribute("LOGINED_USERS");
        }
        //将当前登录成功的用户信息添加到登录用户列表里
        loginUsers.add(loginUser);
        //更新application里登录用户列表属性值
        application.setAttribute("LOGINED_USERS",loginUsers);
        //清除session里errMsg属性
        if (session.getAttribute("errMsg")!=null){
            session.removeAttribute("errMsg");
        }
        //采用重定向跳转到登录成功页面
        response.sendRedirect("sucess.jsp?username="+ URLEncoder.encode(username,"utf-8"));
    }else {
        //创建session属性errMsg
        session.setAttribute("errMsg","用户名和密码错误,请重新登录!");
        //采用重定向,跳转到登录页面
        response.sendRedirect("login.jsp");
    }
%>

</body>
</html>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值