MY SOFTHOUSE
BOOKMARK
SOFTWARE
FRIEND
EMAIL
EDIT
SIGN OUT
HELP
 
  首页   资讯   网摘   软件下载   问知   动漫娱乐   软件供求   软件商城   论坛   
 资讯
 资讯 >> 编程语言 >> Java
   
       
    <%
    //利用while循环将数据表中的记录列出
    while (rs.next())
    {
        %>
               
       
                   
       
        <%
    }

    rs.close(); //关闭记录集
    stmt.close(); //关闭Statement对象
%>   

email给朋友】 浏览字号:【 】 【打印】 【关闭窗口
相关资讯  
相关文摘  
相关软件  

 



漫步j2ee之jsp技术(1)

 style="HEIGHT: 25px; WIDTH: 40px"
 value=<%= ShowPage%> > 页




执行后,结果如下图:
 
2.    表达式元素
表达式是一个简化了的out.println语句。
表达式的语法格式为:
<%=//要输出的数据%>
举例:
<%=square(5)%>
3.    脚本元素
脚本是java程序的一段代码,只要符合java语法的语句都可以写在这里,它是在请求时期执行的,它可以使用jsp页面所定义的变量、方法、表达式或JavaBeans。
脚本的语法格式为:
<%
    //java代码
%>
举例:
<%
if(age<18)
{
   out.println(“你是未成年人!!!!”);
}
else
{
   out.println(“你已经成年了!!!!”);
}
%>

4.    注释元素
用来对程序进行说明注释。注释大体有下列三种格式:

<%--服务器端注释--%>
三.    标准动作元素

标准动作元素用于执行一些常用的JSP页面动作,例如:将页面转向、使用JavaBean、设置JavaBean的属性等。在JSP中,标准动作元素共有以下几种:
l   
l   
l   
l   
l   
l   
l   
其中这三个是专门用来操作JavaBeans的。
下面分别介绍它们。
1.   
动作用于传递参数,必须配合动作一起使用。
语法格式:

2.   
动作用于动态加载HTML页面或者JSP页面。
语法格式:




在jsp页面中,可以利用下面的语法取得返回的参数:
request.getParameter(“name1”);
若不传递参数时,则语法格式如下:

举例:
a.jsp页面代码如下:

   
   

b.jsp页面代码如下:
名字1、;<%=request.getParameter("name1")%>



名字2、;<%=request.getParameter("name2")%>
执行结果如下:
 
“include标准动作”和“include指令”的差别在于:“include标准动作”包含的页面在运行时被加入,而“include指令”在编译时就被加入了。
3.   
动作用于将浏览器显示的页面导向到另一个HTML页面或者jsp页面。
语法格式:

当然,动作中也可以加入参数,其设置和获得参数的方法与类似。
4.   
动作用于加载applet,用途与HTML语法中的标记相同。该动作是在客户端执行的,这里就不作介绍了。
5.   
(见后文的“JavaBeans”的使用)
6.   
(见后文的“JavaBeans”的使用)
7.   
(见后文的“JavaBeans”的使用)
四.    内置对象

在jsp页面中有一些已经完成定义的对象,称之为内置对象。这些对象可以不经过定义就直接使用,因为它们是由jsp页面自己定义的。
jsp程序常用的内建对象有如下几个:request、response、out、session、pageContext、application、config、page、exception。你可以在jsp页面中直接使用它们,用以加强jsp程序的功能。
下面分别介绍它们。
1.    request
与request相联系的是HttpServletRequest类。通过getParameter方法可以获得相应的参数值。
2.    response
与response相联系的是HttpServletResponse类。表示Web页面针对请求的应答。
3.    out
与out相联系的是PrintWrite类。可以使用此对象将内容输出到页面中。
4.    session
与session相联系的是HttpSession类。用来传递客户的会话内容。
5.    pageContext
与pageContext相联系的是pageContext类。用它能方便的访问本页面中设置的共享数据。
6.    application
与application相联系的是ServletContext类。用它能够实现应用程序级别的数据共享。
7.    config
与config相联系的是ServletConfig类。用来在jsp页面范围内处理jsp配置。
8.    page
代表jsp页面编译成的Servlet实例,一般不用。
9.    exception
与exception相联系的是Throwable类。用来捕获jsp执行时抛出的异常。
五.    JavaBeans的使用
JavaBeans是运行于java虚拟机上的100%的纯java组件,它的概念描述很类似于Microsoft的COM组件概念。
JavaBeans传统的应用在于可视化领域,如AWT下的应用。其实,基于AWT的任何java程序已经是一个Bean,完全可以把它当作一个组件来使用。
现在,JavaBeans更多的应用在不可视化领域,它在服务器端应用方面表现出了越来越强的生命力。不可视化的JavaBeans在JSP程序中用来封装事务逻辑,可以很好的实现业务逻辑和前台程序的分离,使得系统具有更好的健壮性和灵活性。
JavaBeans描述了JDK1.1以前的java所没有的东西,因此,运行JavaBeans最小的需求是JDK1.1或者以上的版本。
1.    JavaBeans在JSP中的基本使用格式
l    在JSP中调用JavaBeans的格式
//加载Bean

//设定Bean属性(两种方法)
//方法一:“标签设定”

//方法二:“方法设定(用于java程序中)”
Bean对象名称.set属性(值)

//获取Bean属性(两种方法)
//方法一:“标签获取”

//方法二:“方法获取(用于java程序中)”
Bean对象名称.get属性()
l    JavaBean编写的格式
//定义Bean类所属于的包
package 包名

//定义为公开等级的类,并且类名称与源代码文件名相同
public class类名
{
   //Bean类的属性,其等级定义为private
   private 数据类型 属性名

   //用来初始化的构造函数
   //Bean的构造函数无输入参数
   public 类名
   {  }


   //以setXXX函数,作为设定Bean类属性的接口
   public void set属性名称(数据类型 参数)
   {
      this.属性 = 参数
   }

   //以getXXX函数,作为取得Bean类属性的接口
   public void get属性名称()
   {
      return this.属性
   }
}

²    一个简单的使用JavaBeans的例子
Bean文件LoginData.java的源代码如下:
package j2ee.jsp;
//定义Bean所属的包

public class LoginData
{
    //Bean属性
    private String Name = "";
    private String Pwd = "";

    public LoginData()  //构造函数
    {       
    }

    //以下为设定Bean属性的方法
    public void setLoginName(String name)
    { this.Name = name; }
    public void setPassword(String pwd)
    { this.Pwd = pwd; }

    //以下为取得Bean属性的方法
    public String getLoginName()
    { return this.Name; }
    public String getPassword()
    { return this.Pwd; }
}

调用Bean的jsp文件UseBean.jsp源程序如下:
<%@ page contentType="text/html; charset=GB2312" %>


使用Beans



使用Beans





    class="j2ee.jsp.LoginData"/>
    property="loginName" value="最后的决定"/>
<%
login.setPassword("123456"); //调用Bean对象的方法, 设定属性
%>

LoginName属性值为




Password属性值为

<%--以调用Bean对象方法的方式取得属性--%>
<%= login.getPassword() %>


运行结果如下:
 
在前面的使用中,有两点值得注意:
(1)    Bean中各个方法名的“命名规则及大小写”与调用Bean时的“方法名规则及大小写”之间的对应关系需要注意。
(2)    Beans的存放目录将随选用服务器的不同而不同。以resin服务器而言,Beans默认定义存放在application-programme\WEB-INF\classes子目录中。
2.    scope范围的具体设定
JavaBeans可以定义四种生命周期?D?Dpage、request、session与application,将分别运用pageContext、request、session、application四种对象的setAttribute方法,将JavaBeans对象保存在该对象中。下面分别说明:
l    Page的有效范围仅仅涵盖使用JavaBeans的页面,一旦你离开此页面,JavaBeans对象的实体也将随之消失。
l    Request的有效范围仅及于使用JavaBeans的请求而已,一旦你结束该页面的请求,JavaBeans对象的实体也将随之消失。
l    Session的有效范围涵盖了整个用户会话时期。在用户会话期间,JavaBeans对象的实体均不会消失。当用户会话结束时,JavaBeans对象的实体才会消失。
l    Application的有效范围则涵盖了整个应用程序时期。在应用程序期间,JavaBeans对象的实体均不会消失。只有当应用程序结束时,JavaBeans对象的实体才会消失。
下面,举一个简单的例子,对Request与Session两种生命周期做具体的演示。
Bean文件counter.java的源代码如下:
package j2ee.jsp;
public class counter
{
    private int count = 0;
   
    public void setCount(int c)
    {
        this.count = c;
    }
   
    public int getCount()
    {
        this.count++;
        return this.count;
    }
}   

Request实例
两个jsp文件b1.jsp与b2.jsp代码分别如下:
b1.jsp

<%
counter.setCount(100);
%>


b2.jsp

<%
out.println(counter.getCount());
%>

运行结果如下:
 
Session实例
两个jsp文件c1.jsp与c2.jsp代码分别如下:
c1.jsp

<%
out.println(counter.getCount());
%>

c2.jsp
c2.jsp

<%
out.println(counter.getCount());
%>
运行结果如下:
 
3.    session事件的运用
在jsp页面中,将Bean对象保存至session对象时,可以定义Bean响应HttpSessionBindingEvent事件。当Bean对象加入session、Bean从session中删除以及session对象终止时,将会触发此事件。因此,我们可以利用这两个事件,执行数据起始、善后的工作。
由此,我们可以想到,把jsp页面中最耗费服务器资源的数据库连接工作放入HttpSessionBindingEvent事件中。当一个会话开始时,建立一个“数据库连机”,随后的整个会话过程中,所有与数据库相关的操作均使用这一个“连机”,这样,就避免了每执行一次数据库操作就产生一个数据库连机的巨大消耗。当此会话结束时,再关闭释放这个“数据库连机”。
如果要Bean对象响应HttpSessionBindingEvent事件,则该Bean对象必须实现HttpSessionBindingListener接口,并且定义响应会话开始的valueBound方法以及响应会话结束的valueUnbound方法。
现在,我们来实做一个例子,首先,建立一个“用来建立会话级别数据库联机”的Bean文件DBCon.java,它的源代码如下所示:
/*
 * 文件名:DBCon.java
 *
 * 类名:DBCon
 *
 * 所属包:j2ee.jsp
 *
 * 导入包:java.sql.*;javax.servlet.http.*;
 *
 * 作者:杨??
 *
 * 创建时间:2003.12.9
 *
 * 用途描述:在此JavaBean中建立会话级别的数据库联机,供会话过程中的各个jsp页面使用
 *
 * 版本号:1.0
 *
 */

package j2ee.jsp;

import javax.servlet.http.*;
import java.sql.*;

//定义DBCon类别实做HttpSessionBindingListener介面
public class DBCon implements HttpSessionBindingListener
{
    //与数据库连结有关的Bean属性
    private Connection con = null;
   
      /**
       * 方法名:BulidConnection
       * 级别:private
       * @param     (无)
       * @return    (无)
       * @throws    (无)
       * 作用:建立一个数据库联机
       */
    private void BulidConnection()
    {
        try
        {
            System.out.println("BulidConnection()方法被调用");    
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            //载入驱动程式类别
   
            con = DriverManager.getConnection("jdbc:odbc:test");
            //建立数据库连线           
        }
        catch(Exception ex)
        {   
            System.out.println(ex.toString());
        }       
    }

      /**
       * 方法名:close
       * 级别:private
       * @param     (无)
       * @return    (无)
       * @throws    (无)
       * 作用:关闭数据库联机
       */
    private void close()
    {
        try
        {
            con.close(); //关闭Connection对象       
            con =  null;
        }
        catch(SQLException sex)
        {   
            System.out.println(sex.toString());
        }   
    }

      /**
       * 方法名:getConnection
       * 级别:public
       * @param     (无)
       * @return    Connection     数据库联机
       * @throws    (无)
       * 作用:返回一个数据库联机
       */
    public Connection getConnection()
    {
        //若con为null时, 重新建立数据库连结
        if(con == null)
            BulidConnection();

        return this.con;
    }   

      /**
       * 方法名:valueBound
       * 级别:public
       * @param     HttpSessionBindingEvent     事件
       * @return    (无)
       * @throws    (无)
       * 作用:建立一个数据库联机,并输出相关信息
       */
    public void valueBound(HttpSessionBindingEvent event)
       {
         BulidConnection();
            System.out.println("会话级别的数据库连接已经建立!!!");
       }

      /**
       * 方法名:valueUnbound
       * 级别:public
       * @param     HttpSessionBindingEvent     事件
       * @return    (无)
       * @throws    (无)
       * 作用:关闭一个数据库联机,并输出相关信息
       */
    public void valueUnbound(HttpSessionBindingEvent event)
    {
        if(con != null)
            close(); //呼叫close方法
            System.out.println("会话级别的数据库连接已经关闭!!!");
    }
}

编译这个Bean源文件。注意,编译前要设定好classpath的路径,使得它所包含的类库中有javax.servlet.http.*包。
然后,建立两个用来测试此Bean的jsp页面文件DBBean1.jsp与DBBean2.jsp,它们的程序代码差不多,都是用来显示数据库内容的,现在就只列出DBBean1.jsp的源文件,如下:
<%@ page contentType="text/html; charset=GB2312"
    import="java.sql.*"%>


利用Bean对象建立数据库链接




利用Bean对象建立数据库链接





<%--起始建立数据库链接的Bean对象--%>
    class="j2ee.jsp.DBCon"/>
<%
Connection con = ConBean.getConnection();
//从Bean对象取得已完成建立的数据库链接

Statement stmt = con.createStatement();
//建立Statement对象

ResultSet rs = stmt.executeQuery("SELECT product_name, price FROM products");
//建立ResultSet(结果集)对象,并执行SQL叙述
%>

       
   

书  名价   格
<%= rs.getString("product_name") %><%= rs.getString("price") %>


DBBean2.jsp



出处: Java原创社区 日期: 2004-10-26 好: 一般: 差:
 
评论
  发表评论 投票: 一般
 
通知管理员(希望管理员根据你的评论修改软件信息)
  TrackBack
 
返回主页 | 关于我们 | 免责声明 | 联系广告| 读者投稿 | 友情链接 | 诚聘英才
  Copyright © 2004-2008 Forlink Technologies All Rights Reserved 
版权所有 时力科技 联系:客户服务中心 京ICP证030637号