• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    JSP教程之使用JavaBean完成业务逻辑的方法

    本文实例讲述了JSP教程之使用JavaBean完成业务逻辑的方法。分享给大家供大家参考。具体如下:

    一、目标:

    ① 掌握什么是JavaBean;
    ② 掌握如何编写JavaBean;
    ③ 掌握如何在JSP中访问JavaBean;
    ④ 理解JSP中对象的4个作用范围。

    二、主要内容:

    通过把上一讲中login_process.jsp中的验证过程进行封装形成JavaBean,然后在JSP页面中调用这个JavaBean,介绍JavaBean的编写和访问。
    通过简单实例介绍JavaBean对象的4个作用范围。

    1、什么是JavaBean

    JavaBean是使用Java语言编写的组件。组件是组成一个大的系统的一部份,通常不同独立运行。组件能够完成特定的功能,并且这些功能主要是共享的。
    JavaBean是一种特殊的Java类。特殊在:通常要提供无参数的构造方法;外界不需要知道它的具体实现,通常属性是私有的,需要提供公有的对属性进行操作的方法;应该有一些业务方法。

    2、例:对用户信息进行验证

    package javabean;
    public class User
    {
      private String username;
      private String userpass;
      public String getUsername()
      {
       return username;
      }
      public void setUsername(String username)
      {
       this.username = username;
      }
      public String getUserpass()
      {
       return userpass;
      }
      public void setUserpass(String userpass)
      {
       this.userpass = userpass;
      }
      public boolean check()
      {
       if(username==null || userpass==null)
         return false;
       if(username.equals("zhangsan")  userpass.equals("lisi"))
       {
         return true;
       }else{
         return false;
       }
      }
    }

    3、在JSP中如何调用JavaBean

    首先,在Java中的调用情况:

    import javabean;
    …
      User user = new User(); // 定义对象,并且实例化
      user.setUsername("zaaaa"); // 对成员变量进行初始化
      user.setUserpass("sssss");  // 对用户口令进行初始化
      boolean b = user.check();  // 调用业务方法进行验证
    
    

    1) 创建对象

    复制代码 代码如下:
    jsp:useBean id="" class="" scope=""/>

    作用:实例化JavaBean的对象,或者查找到JavaBean的对象。

    id属性表示创建的对象的名字,class是JavaBean的完整类名,scope属性指出创建的变量的作用范围。
    scope的作用范围有4个:page request session application
    page表示当前页面,实际上是当前的JSP文件对应的Java类的对象;
    request表示一次请求,从我们发送出去请求开始到系统对我们进行响应,这之间就是一次请求。如果一次请求只涉及一个JSP页面,page和request的效果是相同的。
    例如:登录功能,显示第一个页面的时候,这时候page和request的作用范围是相同的。提交之后,如果登录成功,这时候涉及两个文件login_process.jsp和success.jsp,每个文件对应一个page,但是两个文件属于一个request。
    session,表示会话。对于Web应用的每个客户端来说都对应一个对象,这个对象就是session,如果JavaBean对象的作用范围设置为session,相当于把JavaBean对象保存在了session对象中,在客户端的整个访问过程中都可以访问这个对象。
    application,表示应用。如果把JavaBean对象的作用范围设置为application,这个应用的所有的用户在所有的界面都可以访问这个对象。

    例:jsp:useBean id="user" class="javabean.User" scope="request"/>
    测试(关于4个作用范围):

    编写page.jsp文件如下:

    %@ page contentType="text/html;charset=gb2312"%>
    %@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    c:set var="pageAttribute" value="pppp" scope="page"/>
    c:set var="requestAttribute" value="rrrrr" scope="request"/>
    c:set var="sessionAttribute" value="ssss" scope="session"/>
    c:set var="applicationAttribute" value="aaaa" scope="application"/>
    jsp:include page="success.jsp"/>
    
    

    page.jsp中输出信息:

    ${pageScope.pageAttribute}
    ${requestScope.requestAttribute}
    ${sessionScope.sessionAttribute}
    ${applicationScope.applicationAttribute}

    其中:c:set>标签用于存储信息,var指出变量的名字,value指出变量的值(可以使用表达式),scope指出变量的存储范围。

    ${pageScope.pageAttribute}用于访问page范围内的pageAttribute属性,${requestScope.requestAttribute}用于访问request范围内的requestScope属性,依次类推。
     
    编写request.jsp文件如下:

    %@ page contentType="text/html;charset=gb2312"%>
    %@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

    request.jsp中输出信息:

    ${pageScope.pageAttribute}
    ${requestScope.requestAttribute}
    ${sessionScope.sessionAttribute}
    ${applicationScope.applicationAttribute}
    br>
    a href="session.jsp">访问session/a>
    

    编写session.jsp文件如下:

    %@ page contentType="text/html;charset=gb2312"%>
    %@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    
    

    session.jsp中输出信息:

    ${pageScope.pageAttribute}
    ${requestScope.requestAttribute}
    ${sessionScope.sessionAttribute}
    ${applicationScope.applicationAttribute}
    

    编写application.jsp文件如下:

    %@ page contentType="text/html;charset=gb2312"%>
    %@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    

    application.jsp中输出信息:

    ${pageScope.pageAttribute}
    ${requestScope.requestAttribute}
    ${sessionScope.sessionAttribute}
    ${applicationScope.applicationAttribute}
    

    运行过程:

    运行page.jsp,得到如下结果:

    request.jsp中输出信息:rrrr ssss aaaa
    page.jsp中输出信息:pppp rrrr ssss aaaa
    分析:因为page.jsp和request.jsp属于同一次请求,所以共享request对象,session对象和application对象,但是不能显示page中存储的信息。

    点击"访问session"进行session.jsp

    session.jsp中输出信息:ssss aaaa

    分析:与前面不属于同一次请求,所以不能访问request和page信息,只能访问session和application。

    重新打开一个浏览器,访问application.jsp
    application.jsp中输出信息:aaaa
    分析:属于不同的客户端,所以只能共享application对象,只能看到application中的信息。

    2) 对属性赋值

    jsp:setProperty name="" property="" value=""/>
    name指出JavaBean对象的名字,property指出属性的名字,value要赋的值。

    例:jsp:setProperty name="user" property="username" value="zhangsan"/>

    如果value属性不指定,这时候会从请求对象查找名字为username的表单元素,如果有救赋值。相当于下面的代码:

    String username = request.getParameter("username");
    user.setUsername(username);
    
    

    如果省略了value属性,同时把property属性设置为"*",相当于:

    String username = request.getParameter("username");
    user.setUsername(username);
    String userpass = request.getParameter("usernpass");
    user.setUsernpass (userpass);
    
    

    如果表单元素的名字与JavaBean属性名字不一致的时候,可以通过param属性指定使用哪个表单元素。

    3) 嵌入Java代码调用方法

    %
      boolean b = user.check();
    %>
    
    

    4) 获取JavaBean属性

    复制代码 代码如下:
    jsp:getProperty name="" property=""/>

    4、 实例:修改login_process.jsp

    %@ page contentType="text/html;charset=gb2312"%>
    %@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    !--创建对象-->
    jsp:useBean id="user" class="javabean.User" scope="request"/>
    !--对对象进行初始化-->
    jsp:setProperty name="user" property="*"/>
    !-- 调用对象的方法 -->
    %
      boolean b = user.check();
      request.setAttribute("b",new Boolean(b));
      // 在request中保存信息,第一个参数是名字,第二个参数对象本身
    %>
    !-- 根据结果进行判断 -->
    c:if test="${b}">
      jsp:include page="success.jsp"/>
    /c:if>
    c:if test="${!b}">
      jsp:include page="failure.jsp"/>
    /c:if>
    br>用户信息:
    jsp:getProperty name="user" property="username"/>
    jsp:getProperty name="user" property="userpass"/>
    
    

    运行:编译之前编写好的Java文件User.java。然后把编译好的文件放在工程的WEB-INF目录的classes子目录中。

    运行之后效果是相同的。

    但是分析上面的代码,我们发现里面还是嵌入了Java代码,这是因为JSP并没有提供很好的标签对JavaBean的访问进行调用。如果想使用标签对业务方法调用,需要编写自定义标签,比较麻烦。下面介绍一个折中的方法。

    5、实例:重构login_process.jsp

    在User.java中添加如下方法:

    public boolean getResult()
    {
       return check();
    }
    
    

    虽然JSP没有提供访问业务方法的标签,但是提供了对属性进行访问的方式,所以该方法通过提供result属性来间接的调用check业务方法。

    修改login_process.jsp文件如下:

    %@ page contentType="text/html;charset=gb2312"%>
    %@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    jsp:useBean id="user" class="javabean.User" scope="request"/>
    jsp:setProperty name="user" property="*"/>
    c:if test="${user.result}">
      jsp:include page="success.jsp"/>
    /c:if>
    c:if test="${!user.result}">
      jsp:include page="failure.jsp"/>
    /c:if>
    
    

    希望本文所述对大家的JSP程序设计有所帮助。

    您可能感兴趣的文章:
    • 如何在java 8 stream表达式实现if/else逻辑
    • Java如何使用Optional与Stream取代if判空逻辑(JDK8以上)
    • java代码执行字符串中的逻辑运算方法
    • Java 逻辑运算符中&&与&,||与|的区别
    • Java位运算和逻辑运算的区别实例
    • Java程序的逻辑控制和方法详解
    上一篇:JSP入门教程之客户端验证、常用输出方式及JSTL基本用法
    下一篇:JSP中文乱码常见3个例子及其解决方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    JSP教程之使用JavaBean完成业务逻辑的方法 JSP,教程,之,使用,JavaBean,