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

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 property="" value=""/>
name指出JavaBean对象的名字,property指出属性的名字,value要赋的值。

例:<jsp:setProperty 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 property=""/>


4、 实例:修改login_process.jsp

<%@ page contentType="text/html;charset=gb2312"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!--创建对象--> <jsp:useBean scope="request"/> <!--对对象进行初始化--> <jsp:setProperty 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 property="username"/> <jsp:getProperty 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 scope="request"/> <jsp:setProperty 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>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzfzgf.html