一.application

① 概述

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

    (2) 属于jsp九大内置对象之一 也是 jsp四大作用域之一

② 常用方法

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

③ 经典案例

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是一种组件技术
     (2) JavaBean技术有助于将JSP页面中的处理业务的逻辑代码与展示页面效果的显示代码分离
     (3) JavaBean就是一个普通的java类,也称之为简单java对象–POJO(Plain Ordinary Java         Object),是Java程序设计中一种设计模式,是一种基于 Java 平台的软件组件思想
     (4) web中的javabean开发模式---DAO模式一样的

② JavaBean的规则

   (1)有无参的构造函数
   (2)成员属性私有化
   (3)封装的属性如果需要被外所操作,必须编写public类型的setter、getter方法

③ 为什么需要使用JavaBean?

使用javaBean的好处就是:封装,重用,可读!

④ JavaBean的优点

  (1)减少代码冗余,相同功能的代码不必重复编写。
  (2)功能区分明确,相同功能写在一个类中。相似功能放在同一个包中
  (3)提高代码的可维护性

⑤ JavaBean分类

    (1) 封装数据
    (2) 封装业务逻辑

⑥ 案例演示

在jsp页面中如何使用Javabean
	①使用普通的java类一样,创建javabean实例。--案例实现登录
	    第一步:在src中编写com.entity包再编写User类,并遵循javabean设计原则
	    第二步:在dologin.jsp页面中实例化Users类并设置值与login.jsp页面输入的信息比较,匹配成功登录admin.jsp


	②在jsp页面中通常使用jsp动作标签使用javabean:useBean、getProperty、setProperty
		**<jsp:useBean>  在jsp页面中实例化或者在指定范围内使用javabean,语法如下:
		<jsp:useBean id = "标识符" class = "java类名" scope = "作用范围"/>
	    第一步:在页面编写:
		<jsp:useBean id = "myUsers" class = "com.entity.Users" scope = "page">
    	    第二步:获取
		<%=myUsers.getUsername%>//null值,没有初始化

	③<jsp:setProperty>  给已经实例化的Javabean对象的属性赋值,一共有四种形式。
	** <jsp:setProperty name = "JavaBean实例名" property = "*" />(跟表单关联)
	** <jsp:setProperty name = "JavaBean实例名" property = "JavaBean属性名" />(跟表单关联)
	** <jsp:setProperty name = "JavaBean实例名" property = "JavaBean属性名" value= "BeanValue" />(手工设置)
	** <jsp:setProperty name = "JavaBean实例名" property = "propertyName" param = "request对象中的参数名" />(跟request参数关联)




案例演示
	 <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>