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>