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 %>