JavaWeb(application&JavaBean封装)

一、application

   1、application是什么?

application是jsp的内置对象之一,作用于服务器端 类似于全局变量

作用域在服务器的打开和关闭之间有效 

application范围:在一个应用服务器范围内有效,当应用服务启动后即创建该对象,并向所有用户所共享

        注意:application可以跨浏览器

常用方法:

void

setAttribute(String key,Object value)

以key/value的形式保存对象值

Object

getAttribute(String key)

通过key获取对象值

String

getRealPath(String path)

返回相对路径的真实路径

案例:

 3.1 application的方法演示-----建application.jsp页面
 
	<!-- 使用application对象setAttribute()保存信息 -->
	<%
		application.setAttribute("city","长沙市");//所在城市
		application.setAttribute("postCode","410000");//邮编号码
		application.setAttribute("email","15084961293@163.com");//邮箱
	%><br/>
	<!-- 使用application对象getAttribute()保存信息 -->
	所在城市:<%=application.getAttribute("city") %><br/>
	<!-- 使用application对象getAttributeNames()获取所有属性包括系统内置属性 -->
	application对象中的属性有:<% 
		Enumeration<String> attributes =  application.getAttributeNames();
		//遍历枚举
		while(attributes.hasMoreElements()){//如果存在下一条数据
			out.println(attributes.nextElement()+"<br/>");
		}
	%><br/>
	JSP(SERVLET)引擎名及版本号:<%=application.getServerInfo() %>

 统计网站访客:

	<!-- 使用application实现统计网站访客 -->
	<%
		//判断application对象中有没有保存为count的参数
		//如果没有,在application对象中新增一个名为count的参数
		if(application.getAttribute("count")!=null){
			application.setAttribute("count",new Integer(0));
		}
		使用application对象读取count参数的值,再在原值基础上累加1 
		Integer count = (Integer)application.getAttribute("count");
		application.setAttribute("count", new Integer(count.intValue()+1));
	%>
 
	欢迎,您是第:<%=application.getAttribute("count") %>位访问者

 二、JavaBean封装

1.为什么要使用JavaBean
1、传统业务参数多,大多数为对象属性的话会很麻烦,容易出错。

2、因为JavaBean能解决代码重复编写,减少代码冗余

3、功能区分明确,避免业务逻辑处理与页面显示处理集中在一起造成的混乱

4、提高代码性能

2.JavaBean及其分类封装数据:

1、  按照面向对象原则,属性与数据库表字段相对应

2、 属性私有

3、具有public的set/get方法

封装业务:

1、具有实现特定功能的方法和方法实现

2、通常与一个封装数据的JavaBean对应

数据库帮助类

package com.zking.news.utils;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
 
/**
 * 数据库帮助类
 * 
 * @author Administrator
 *
 */
public class DBHelper {
 
	private static final String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
 
	// 1.加载驱动 静态代码块进行封装 优先级别最高(静态代码块>普通代码块>构造函数)
	static {
		try {
			// OracleDriver
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
 
	// 2.建立数据库连接
	public static Connection getConn() {
		Connection conn = null;
		try {
			conn = DriverManager.getConnection(URL, "scott", "123");
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
	}
 
	public static void main(String[] args) {
		// System.out.println(DBHelper.getConn());
	}
 
	// 3.关闭服务
	/**
	 * 方法功能:数据库服务关闭
	 * 
	 * @param conn
	 *            连接对象
	 * @param ps
	 *            执行对象
	 * @param rs
	 *            结果集对象
	 */
	public static void myClose(Connection conn, PreparedStatement ps, ResultSet rs) {
		try {
			if (null != conn && !conn.isClosed()) {
				conn.close();
			}
			if (null != ps) {
				ps.close();
			}
			if (null != rs) {
				rs.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
 
}

 增删改查通用Basebao

package com.zking.news.utils;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
 
public class BaseDao {
	//protected 访问控制符    受保护的
	protected Connection conn =null;
	protected PreparedStatement ps = null;
	protected ResultSet rs = null;
	
 
	/**
	 * 方法功能:通用增删改方法
	 */
	public int executeUpdate(String sql,Object...x) {
		int n = 0;
		try {
			// a.获取数据库连接
			conn = DBHelper.getConn();
			// b.sql传入方法返回执行对象
			ps = conn.prepareStatement(sql);
			//新增的sql语句  有占位符  
			if(null!=x) {
				//拿到可变参数中的2个值
				for(int i = 0;i<x.length;i++) {
					//System.out.println(x[i]);
					ps.setObject(i+1, x[i]);
				}
			}
			n = ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(conn, ps, null);
		}
		
		return n;
		
	}
	
	
	/**
	 * 方法功能:通用查询     查询所有  查询一个   模糊查询
	 */
	public ResultSet executeQuery(String sql,Object...x) {
		int n = 0;
		try {
			// a.获取数据库连接
			conn = DBHelper.getConn();
			// b.sql传入方法返回执行对象
			ps = conn.prepareStatement(sql);
			//新增的sql语句  有占位符  
			if(null!=x) {
				//拿到可变参数中的2个值
				for(int i = 0;i<x.length;i++) {
					//System.out.println(x[i]);
					ps.setObject(i+1, x[i]);
				}
			}
			rs = ps.executeQuery();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			//不能关闭    通用的查询base方法  不能实现数据库关闭
			//DBHelper.myClose(conn, ps, null);
		}
		
		return rs;
		
	}
	
 
	
}

接口实现类UserdaoImpl

/**
 * 接口实现类
 * 
 * @author zjjt
 * 
 *         2022年4月6日19:33:58
 */
public class UserDaoImpl extends BaseDao implements IUsersDao {

	/**
	 * 登录dao
	 */
	@Override
	public Users usersLogin(Users users) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		Users u = null;
		try {
			conn = DBHelper.getconn();
			String sql = "select * from tb_t281_news_users where username=? and password=?";
			ps = conn.prepareStatement(sql);
			ps.setString(1, users.getUsername());
			ps.setString(2, users.getPassword());
			rs = ps.executeQuery();
			if (rs.next()) {
				u = new Users(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5),
						rs.getString(6), rs.getInt(7), rs.getString(8));
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBHelper.myClose(conn, ps, rs);

		}
		return u;
	}

	/**
	 * 新增dao
	 */
	@Override
	public int userRegister(Users users) {
		String sql = "insert into tb_t281_news_users  values (?,?,?,?,?,?,?,to_date(?,'yyyy-mm-dd hh24:mi:ss'))";
		return this.executeUpdate(sql, new Object[] { users.getUserid(), users.getUsername(), users.getPassword(),
				users.getUsex(), users.getUaddress(), users.getUtelphone(), users.getUrole(), users.getUdate() });
//删除dao
	@Override
	public int deleteDelete(int userid) {
		return this.executeUpdate("delete from tb_t281_news_users where userid=?", new Object[] { userid });
	}

//查询所有dao
	@Override
	public List<Users> queryUserAll() {
		Users u = null;// 实体对象
		List<Users> list = new ArrayList<Users>();
		String sql = "select * from tb_t281_news_users";
		ResultSet rs = this.executeQuery(sql);
		try {
			while (rs.next()) {
				u = new Users(rs.getInt("userid"), rs.getString("username"), rs.getString("password"),
						rs.getString("usex"), rs.getString("uaddress"), rs.getString("utelphone"), rs.getInt("urole"),
						rs.getString("udate"));
				list.add(u);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBHelper.myClose(conn, ps, rs);
		}
		return list;
	}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值