JavaBean的概念:
JavaBean是一种可重复使用、跨平台的软件组件。
JavaBean可分为两种:
一种是有用户界面(UI)的JavaBean;
一种是没有用户界面,主要负责处理事务(如数据运算,操作数据库)的JavaBean。
JSP通常是属于第二种JavaBean。
JavaBean封装的注意事项:
必须含有默认提供的公开的无参构造函数
封装的类中的属性必须都私有化
属性要提供get和set方法(某些特殊的属性不需要)
必须实现Serializable(序列化)接口(某些特殊的类不需要)
JavaBean的引用:
JavaBean封装代码的引用和Java一样的引用方法(通过类名+方法名调用)
JavaBean的优势:
解决代码重复编写,减少代码冗余
功能区分明确,避免业务逻辑处理与页面显示处理集中在一起的混乱
提高了代码的维护性
封装数据库连接操作的实例:
package util;
/**
* 连接数据库的工具包
* @author 绥彼岸
*
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import oracle.jdbc.driver.OracleDriver;
public class DBHelper {undefined
private Connection con;
private PreparedStatement ps;
private ResultSet rs;
//导入驱动(sqlserver,oracle,mysql),一定要执行 build path,且需要导入对应的jar包
static {undefined
//OracleDriver
try {undefined
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {undefined
e.printStackTrace();
}
}
//编写连接语句
private static final String URL="jdbc:oracle:thin:@localhost:1521:orcl";
/**
* 获得连接的方法
* @return
*/
public static Connection getCon() {undefined
try {undefined
return DriverManager.getConnection(URL,"scott","tiger");
} catch (SQLException e) {undefined
e.printStackTrace();
}
return null;
}
/**
* 关闭资源的方法
* @param con
* @param ps
* @param rs
*/
public static void close(Connection con,PreparedStatement ps,ResultSet rs) {undefined
try {undefined
if(con!=null&&!con.isClosed()) {undefined
con.close();
}
if(!ps.isClosed()) {undefined
ps.close();
}
if(!rs.isClosed()) {undefined
rs.close();
}
} catch (SQLException e) {undefined
e.printStackTrace();
}
}
//测试是否连接到了数据库
public static void main(String[] args) {undefined
System.out.println(DBHelper.getCon());
}
}
使用application完成在线人数
Application和Session、Cookie一样,是一种存储方式
区分一下三者的区别:
Cookie是前端存储,而Application不是
Session是会话级存储(在自己电脑里面的内存卡),适合私人信息的存储;
Application是应用级存储,即共享的存储(大家都可以使用的内存卡),适合公共信息的存储
进入:
<%@page import="web_06.com.util.DBHelper"%>
<%@page import="javax.servlet.http.Cookie"%>
<%@page import="java.net.CookieHandler"%>
<%@page import="oracle.jdbc.driver.OracleDriver" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.nio.charset.StandardCharsets" %>
<%@ page import="java.util.Arrays" %>
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%
request.setCharacterEncoding("utf-8");
String yh = request.getParameter("yh");
String mm = request.getParameter("mm");
//获得连接
Connection con = DBHelper.getCon();
//获得执行对象
PreparedStatement ps = con.prepareStatement("select * from t1_user where t_name=? and t_pwd=?");
ps.setString(1, yh);
ps.setString(2, mm);
//获得结果集
ResultSet rs = ps.executeQuery();
//判断结果
if (rs.next()) {undefined
//要实现存储资源共享,用application
//1,将用户名存入到服务器的卡库session中/存到后端
application.setAttribute("uname", yh);//在application中开一个空间储存数据
//计算当前的人数(存储在公共内存卡application中)
Object obj=application.getAttribute("count");//从application中取出count
if(obj==null){undefined
obj=0;
}
Integer count=(Integer) obj;
count++;//登录成功人数+1
application.setAttribute("count", count);//取出人数
response.sendRedirect("index.jsp");
} else {undefined
//重定向 客户端
response.sendRedirect("login.jsp");
}
//资源关闭
DBHelper.close(con, ps, rs);
%>
退出:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//退出功能
//session的存活时间
//服务器一关闭session就会清空数据
//删除session
session.invalidate();
//并跳回登录界面
response.sendRedirect("login.jsp");
//退出后,在线人数-1
Object obj=application.getAttribute("count");//从application中拿到countapplication
Integer count=(Integer)obj;///转成int
count--;//退出后,在线人数-1
application.setAttribute("count", count);//再重新拿到count
%>