zoukankan      html  css  js  c++  java
  • 11.24

    今天学了

    通常情况下,对业务方法的访问需要使用 Java 脚本,例如要访问上面创建的 user 的方
    法 f,可以使用下面的代码:
    <%
    user.f();
    %>
    脚本中的代码就是 Java 语法,并且现在只能使用 Java 语法。但是在当前 JSP 技术中,
    最佳实践是不在 JSP 页面中使用任何 Java 代码,所以这样嵌入脚本的用法应该避免。
    那么如何调用 JavaBean 的业务方法呢?有两种方式:第一种方式,编写自定义标签完
    成业务方法调用;第二种方式,把业务方法写成“get 属性名”的形式,这样对业务方法的
    访问就像对属性的访问一样。第一种方式需要编写自定义标签,难度比较大,所以建议大
    家考虑使用第二种方式。
    在前面的例子中,业务方法的名字是 check,为了像调用属性一样来调用方法,可以提

     供一个 get 方法,例如下面的方法 getResult,这样 JavaBean 就像有一个 result 属性一样。
    public int getResult()
    {
     return check();
    }
    在登录处理文件中,为了便于处理,我们先把调用业务方法的结果保存在变量中,然
    后再使用。将调用业务方法的结果保存到变量可以使用下面的代码:
    <c:set var="result" scope="page">
     <jsp:getProperty name="user" property="result"/>
    </c:set>
    这里是另外一种<c:set>标签的用法,不是通过 value 属性赋值,而是通过标签体赋值。
    如果使用表达式语言,上面的代码可以改得更简单:
    <c:set var="result" scope="page" value="${user.result}"/>
    在得到计算结果之后,就可以根据得到的结果进行下一步的处理:
    <c:if test="${result==-1}">
     <jsp:forward page="login_failure.jsp"/>
    </c:if>
    如果登录失败,则转向登录失败的界面。
    <c:if test="${result==0}">
     <c:set var="username" value="${param.username}" scope="session"/>
     <c:set var="degree" value="0" scope="session"/>
     <jsp:forward page="login_success.jsp"/>
    </c:if>
    如果是普通用户,把用户名和权限保存到 session 中,然后跳转到登录成功的界面。
    <c:if test="${result==1}">
     <c:set var="username" value="${param.username}" scope="session"/>
     <c:set var="degree" value="1" scope="session"/>
     <jsp:forward page="login_success.jsp"/>
    </c:if>
    如果是管理员,同样把用户名和权限保存到 session 中,然后跳转到登录成功的界面。
    修改后的完整的登录处理文件的代码如下:
    <%@ page contentType="textml;charset=GB2312"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <!--创建 UserBean 对象,并实例化-->
    <jsp:useBean id="user" class="bean.UserBean" scope="request"/>
    <!--为 JavaBean 的属性赋值-->
    <jsp:setProperty name="user" property="*"/>
    <!--获取 JavaBean 的计算结果,并保存-->
    <c:set var="result" scope="page"> 

    <jsp:getProperty name="user" property="result"/>
    </c:set>
    <!--如果登录失败-->
    <c:if test="${result==-1}">
    <jsp:forward page="login_failure.jsp"/>
    </c:if>
    <!--如果是普通用户-->
    <c:if test="${result==0}">
    <c:set var="username" value="${param.username}" scope="session"/>
    <c:set var="degree" value="0" scope="session"/>
    <jsp:forward page="login_success.jsp"/>
    </c:if>
    <!--如果是管理员-->
    <c:if test="${result==1}">
    <c:set var="username" value="${param.username}" scope="session"/>
    <c:set var="degree" value="1" scope="session"/>
    <jsp:forward page="login_success.jsp"/>

  • 相关阅读:
    业务领域建模Domain Modeling
    用例建模Use Case Modeling
    分析一套源代码的代码规范和风格并讨论如何改进优化代码
    结合工程实践选题调研分析同类软件产品
    如何提高程序员的键盘使用效率?
    第一次博客作业
    python_同时迭代多个对象
    python_判断奇偶数
    印象笔记markdown使用笔记
    【转】A*算法解决八数码问题
  • 原文地址:https://www.cnblogs.com/dty602511/p/14170105.html
Copyright © 2011-2022 走看看