javaweb(application&&javabean封装)

application的使用

session与Cookie对比
相同点:①都是用来保持用户状态的一种机制②都会过期(生存期限)
不同点:
    session                    Cookie
在服务器端保存用户信息            在客户端保存用户信息
session中保存的是Object类型        Cookie保存的是String类型
随会话的结束而将其存储的数据销毁        Cookie可以长期保存在客户端
保存重要的信息                保存不重要的用户信息 


==================================================================

session和Cookie跨页面,application跨用户。---

application与session和Cookie的本意是一样的  都是用保存信息
最大的区别    保存的范围

一、application对象
    1.application对象实现用户间数据的共享,可存放全局变量。
    2.application开始于服务器的启动,终止于服务器的关闭。
    3.在用户的前后连接或不同用户之间的连接中,可以对application对象的统一属性进行操作。
    4.在任何地方对application对象属性的操作,都将影响到其它用户对此的访问
    5.服务器的启动和关闭决定了application对象的生命
    6.application对象是ServletContext类的实例

【总结】application(应用对象):存活范围最大的对象,只要服务器没有关闭,application对象中的数据就会一直存在。在整个服务器运行过程中,application对象只有一个

-------request、session以及application这3个对象的范围是逐个增加的:request只在一个请求的范围内,session是在浏览器窗口的范围内。application则是在整个服务器运行过程中。

=========================================================


二、application对象常用的方法

    public void setAttribute(String name,Object value):使用指定名称将对象绑定此会话。

    public Object getAttribute(String name):返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则返回null。

    Enumeration getAttributeNames():返回所有可用属性名的枚举

    String getServerInfo():返回jsp(servlet)引擎及版本号

案例

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实现统计网站访客 -->
	<%
		//判断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封装的使用

概念:

【JavaBean简介】符合某种特定的规范的Java类,使用Javabeans的好处是解决代码重复编写,减少代码冗余,功能区分明确,提高了代码的维护性。

    【Javabean的设计原则】①公有类②无参的公有的构造方法③属性私有化④get和set方法封装
    --举例:Student

实体类

public class Student{
		
		private String name;
		//无参构造方法
		public Student(){}
		
		public   void setName(String name){
			this.name = name;
		}
		public String getName(){
			return name;
		}
	}

数据库帮助类

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();
		}
	}
 
}

增删改查通用Dao方法 BaseDao

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;
		
	}
	
 
	
}
调用案例
删除案例
public int deleteUsersById(int userid) {
 
	
		return this.executeUpdate("delete from tb_t281_news_users where userid = ?", new Object[] { userid });
	}
 
//查询案例
	@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;
	}
 

调用案例

删除案例
public int deleteUsersById(int userid) {
 
	
		return this.executeUpdate("delete from tb_t281_news_users where userid = ?", new Object[] { userid });
	}
 
//查询案例
	@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;
	}

jsp动作


    jsp动作元素(action elements),动作元素为请求处理阶段提供信息。动作元素遵循XML元素的语法,
    有一个包含元素名的开始标签,可以有属性,可选的内 容、与开始标签匹配的结束标签

案例:

 <h1>系统登录</h1>
    	<hr>
    	 <form name="loginForm" action="dologin.jsp?mypass=999999" method="post">
      <table>
        <tr>
          <td>用户名:</td>
          <td><input type="text" name="username" value=""/></td>
        </tr>
        <tr>
          <td>密码:</td>
          <td><input type="password" name="password" value=""/></td>
        </tr>
        <tr>
          <td colspan="2" align="center"><input type="submit" value="登录"/></td>
          
        </tr>
      </table>
    </form>

获取界面

<jsp:useBean id="myUsers" class="com.po.Users" scope="page"/>
    <h1>setProperty动作元素</h1>
    <hr>
   <!--根据表单自动匹配所有的属性 -->
   <%-- 
   <jsp:setProperty name="myUsers" property="*"/>  
   --%>
   <!--根据表单匹配所有部分的属性 -->
   <%-- 
   <jsp:setProperty name="myUsers" property="username"/>  
   --%>
   <!--根表单无关,通过手工赋值给属性 -->
   <%-- 
   <jsp:setProperty name="myUsers" property="username" value="lisi"/>
   <jsp:setProperty name="myUsers" property="password" value="888888"/>
   --%>
   <!--通过URL传参数给属性赋值 -->
   <jsp:setProperty name="myUsers" property="username"/>
   <jsp:setProperty name="myUsers" property="password" param="mypass"/>
   <!-- 使用传统的表达式方式来获取用户名和密码 -->
   <%--     
       用户名:<%=myUsers.getUsername() %><br>
       密码:<%=myUsers.getPassword() %><br> 
   --%>
   <!-- 使用getProperty方式来获取用户名和密码 -->
      用户名:<jsp:getProperty name="myUsers" property="username"/> <br>
      密码:<jsp:getProperty name="myUsers" property="password"/><br>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值