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>