java_web 快速入门之第八章 application&JavaBean封装

  • Post author:
  • Post category:java


一:application(全局应用程序对象)

不同用户的sesion对象互不相同,但有时候用户之间可能需要一个共享对象,当Web服务器对象启动后就产生了这样一个唯一的内置对象application。

任何用户在访问同一Web服务目录的各个页面时,共享一个application对象,直到服务器关闭,这个application对象被取消为止。

application对象也可以进行数据的存储。

application对象在整个应用区域中都有效,而session只是在当前客户的会话范围内有效,当超过保存时间则被收回。

application对象为多个应用程序保存信息,对于一个容器而言每个用户都共同使用一个                  application,这和session对象是不一样的。服务器启动后,就会自动创建application对象,这个对象一直会保持,直到服务器关闭为止。

注意:application对象同时也是jsp中四大作用域(域对象)之一

作用域|域对象:临时的存储数据,范围不同而已。

四个域对象:pageContext、request、session、application

application的访问范围是最大的。(当服务器开启的那一刻application就创建了)


常用方法:

getAttribute(String name)
返回有name指定的名字的application对象的属性的值
setAttribute(String name,Object object)
设置有name指定名字的application对象的属性的值object
Enumeration getAttributeNames()
返回所有可用属性名的枚举
getServerInfo() 返回jsp(servlet)

引擎及版本号


方法演示:


  • 通过application保存一个用户
application.setAttribute("username", "dongfangbubai");

  • 当前服务器引擎版本
<%=application.getServerInfo() %>

  • 获取application保存的用户
username: <%=application.getAttribute("username") %>

案例:根据application内置对象来模拟网站人数在线统计

​
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>新闻官网</title>
</head>
<body>

<%
	//假设application保存了一个变量统计网站的人数
	Integer count = (Integer)application.getAttribute("count");
	//out.println("count = "+count);
	//判断非空
	if(null == count){//说明这是第一次访问了这个网站
		application.setAttribute("count", new Integer(1));
		out.println("这是第一个人");
	}else{
		out.println("这个不是第一个人了");
		count++;
		application.setAttribute("count", count);
	}


%>

	<hr/>

	老铁,你是第<%=application.getAttribute("count") %>个人访问该网站的。


</body>
</html>

​

备注:

Cookie是一个普通对象,不属于jsp内置对象,作用:存储数据

sssion:内置对象,域对象,存储数据(范围:在同一个会话中有效)

application:内置对象,域对象,存储数据(范围:只要服务器没有关闭,都有效)

request:内置对象,域对象,存储数据(范围:只针对同一个请求范围内有效)

pageContext:内置对象,域对象,存储数据(范围:只针对当前页面)

二:JavaBean封装


基本概念:

javabean是一种组件技术

javabean技术有助于将JSP页面中的处理业务的逻辑代码与展示页面效果的显示代码分离

JavaBean就是一个普通的java类,也称之为简单java对象–POJO(Plain Ordinary Java Object),是Java程序设计中一种设计模式,是一种基于 Java 平台的软件组件思想

web中的javabean开发模式—DAO模式一样的

JavaBean的定义:


  1. 有无参的构造函数

  2. 成员属性私有化

  3. public修饰的类,public无参构造

  4. 所有属性值都是private,并且提供get()/set()方法

  5. 封装的属性如果需要被外所操作,必须编写public类型的setter、getter方法


为什么需要使用Javabean?


  1. 封装,重用,可读

  2. 减轻jsp的复杂度

  3. 功能区分明确,相同功能写在一个类中。相似功能放在同一个包中

  4. 提高代码的可维护性

  5. 减少代码冗余,相同功能的代码不必重复编写。


使用层面


  • 封装业务逻辑的javabean

  • 用于操作一个封装数据的javabean

  • 封装数据的javabena

  • 对应数据库的一张表,比传参方便

案例:使用javaBean封装使用JDBC查询的数据

定义用户users类

​
package com.zking.news.entity;
/**
 * 用户实体类
 * 	目的:封装数据表中的数据
 * @author Administrator
 *
 */
public class Users {

	private int userid;
	private String username;
	private String password;
	private String sex;
	private String hobby;
	private String address;
	private int urole;
	private String udate;
	
	
	public Users() {
	}


	public Users(String username, String password) {
		super();
		this.username = username;
		this.password = password;
	}


	public Users(String username, String password, String sex, String hobby, String address, int urole, String udate) {
		super();
		this.username = username;
		this.password = password;
		this.sex = sex;
		this.hobby = hobby;
		this.address = address;
		this.urole = urole;
		this.udate = udate;
	}


	public Users(int userid, String username, String password, String sex, String hobby, String address, int urole,
			String udate) {
		super();
		this.userid = userid;
		this.username = username;
		this.password = password;
		this.sex = sex;
		this.hobby = hobby;
		this.address = address;
		this.urole = urole;
		this.udate = udate;
	}


	public int getUserid() {
		return userid;
	}


	public void setUserid(int userid) {
		this.userid = userid;
	}


	public String getUsername() {
		return username;
	}


	public void setUsername(String username) {
		this.username = username;
	}


	public String getPassword() {
		return password;
	}


	public void setPassword(String password) {
		this.password = password;
	}


	public String getSex() {
		return sex;
	}


	public void setSex(String sex) {
		this.sex = sex;
	}


	public String getHobby() {
		return hobby;
	}


	public void setHobby(String hobby) {
		this.hobby = hobby;
	}


	public String getAddress() {
		return address;
	}


	public void setAddress(String address) {
		this.address = address;
	}


	public int getUrole() {
		return urole;
	}


	public void setUrole(int urole) {
		this.urole = urole;
	}


	public String getUdate() {
		return udate;
	}


	public void setUdate(String udate) {
		this.udate = udate;
	}


	@Override
	public String toString() {
		return "Users [userid=" + userid + ", username=" + username + ", password=" + password + ", sex=" + sex
				+ ", hobby=" + hobby + ", address=" + address + ", urole=" + urole + ", udate=" + udate + "]";
	}
	
	
	
	
}

​

定义数据库帮助类(DBHelper)

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";
	private static final String user = "scott";
	private static final String password = "123";

	// 加载驱动
	static {
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 方法功能:建立数据库连接
	 * 
	 * @return conn 连接对象
	 */
	public static Connection getConn() {
		Connection conn = null;
		try {
			conn = DriverManager.getConnection(url, user, password);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
	}

	/**
	 * 方法功能:关闭数据库服务
	 * 
	 * @param conn
	 *            连接对象
	 * @param ps
	 *            执行对象
	 * @param rs
	 *            结果集对象
	 */
	public static void myClose(Connection conn, PreparedStatement ps, ResultSet rs) {
		try {
			if (conn != null && !conn.isClosed()) {
				conn.close();
			}
			if (ps != null) {
				ps.close();
			}
			if (rs != null) {
				rs.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

定义用户模块的DAO接口类(IUsersDao)

package com.zking.news.dao;

import com.zking.news.entity.Users;

/**
 * 用户模块的DAO接口
 * @author Administrator
 *
 */
public interface IUsersDao {

	//用户登录:返回类型--boolean    当前登录Users用户
	
	
	/**
	 * 方法功能登录操作
	 */
	public Users adminUsersLogin(Users users);
	
	
	
	/**
	 * 注册功能
	 */
	public int addUsersLogin(Users users);
	
	
	/**
	 * 修改密码功能
	 */
	public int setUsersPassword(Users users,String newPassword);
	
	
	
	
	
	
	
}

定义用户模块的DAO接口类(UsersDaoImpl)

package com.zking.news.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.zking.news.dao.IUsersDao;
import com.zking.news.entity.Users;
import com.zking.news.utils.DBHelper;

/**
 * 用户模块的DAO接口
 * @author Administrator
 *
 */
public class UsersDaoImpl implements IUsersDao{

	@Override
	public Users adminUsersLogin(Users users) {
		//1.定义所需的对象及变量
		Connection conn = null;
		PreparedStatement ps =null;
		ResultSet rs = null;
		String sql = "select * from tb_news_users where username = ? and password = ?";
		Users u = null;
		//2.赋值
		try {
			//获取数据库连接
			conn = DBHelper.getConn();
			//将定义的sql语句传入方法返回执行对象
			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("userid"), rs.getString("username"),
						rs.getString("password"), rs.getString("sex"), 
						rs.getString("hobby"), rs.getString("address"), 
						rs.getInt("urole"), rs.getString("udate"));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(conn, ps, rs);
		}
		
		//返回
		return u;
	}
	
	public static void main(String[] args) {
		Users adminUsersLogin = new UsersDaoImpl().adminUsersLogin(new Users("admin","123"));
		System.out.println(adminUsersLogin);
	}
	
	
	
	

	@Override
	public int addUsersLogin(Users users) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public int setUsersPassword(Users users, String newPassword) {
		// TODO Auto-generated method stub
		return 0;
	}

	
	
	
}



版权声明:本文为qq_61313896原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。