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"/>

  • 相关阅读:
    SpringMVC中静态获取request对象 Spring中获取 HttpServletRequest对象【转载】
    springcloud 的loadbalancer 轮询算法切换方法 2021.4.3
    springboot项目启动增加图标
    rabbitmq 端口作用以及修改方法
    centos8 安装rabbitmq
    springcloud config client Value获取不到信息的问题的处理方法
    springcloud config配置git作为数据源然后启动报错 If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
    Sublime Text的列模式如何操作
    centos8 安装redis
    jQuery简单的Ajax调用
  • 原文地址:https://www.cnblogs.com/dty602511/p/14170105.html
Copyright © 2011-2022 走看看