11.24

Posted on 2020-11-24 21:20  ***Pepsi***  阅读(63)  评论(0编辑  收藏  举报

今天学了

通常情况下,对业务方法的访问需要使用 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"/>

 

Copyright © 2024 ***Pepsi***
Powered by .NET 8.0 on Kubernetes