javaweb-09

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值