日期:2014-05-17  浏览次数:20664 次

函数的返回值去哪里了,我应该是脑筋短路了,求指点
用usebean判断一个字符串是否以另一个开头
具体代码:
index.jsp页面
<form action="check.jsp" method="post" name="form1">
<table>
<tr>
<td align="right">
请输入字符串:
<input type="text" name="str" />
</td>
</tr>
<tr>
<td>
请输入开头字符串:
<input type="text" name="startStr" />
</td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" name="submit" value="验证">
</td>
</tr>
</table>
</form>

check.jsp页面:
<body>
<%
request.setCharacterEncoding("gbk");
String str = request.getParameter("str");
String startStr = request.getParameter("startStr");
%>
<jsp:useBean id="check" class="com.time.BeanCheck"></jsp:useBean>
<jsp:setProperty property="str" name="check" value="<%=str %>" />
<jsp:setProperty property="startStr" name="check"
value="<%=startStr %>" />
<table>
<tr>
<td align="right">
输入的字符串:
<jsp:getProperty property="str" name="check"/>
</td>
</tr>
<tr>
<td>
输入的开头字符串:
<jsp:getProperty property="startStr" name="check"/>
</td>
</tr>
<tr>
<td align="right" >
验证结果:<jsp:getProperty property="check" name="check"/>
</td>
</tr>

</table>
<br>
</body>
用于比较字符串的java类:
public class BeanCheck {
private String str;
private String startStr;
private boolean a;
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
public String getStartStr() {
return startStr;
}

public void setStartStr(String startStr) {
this.startStr = startStr;
}
public boolean isCheck() {
return str.startsWith(startStr);
}
}
我不明白的就是isCheck方法的返回值是如何传递到check页面的,check并没有被复制啊????
ps:高手可以跟我讲讲代码的运行路线,新手刚学,求不笑话。。。。

------解决方案--------------------

引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

首先我不是高手,因为没事所以看了看你的问题,之前也接触过JSP,<jsp:getProperty property="check" name="check"/>这个标签根据你的逻辑是想返回这个JAVABEAN里面的boolean属性?根据文献getProperty返回的都是字符串形式,你在javabean里面写了isCheck()方法,那么直接用check.isCheck(),便可返回这个方法的boolean。以上是我的一点看法

嗯,可是他就是在处理数据的类里面定义了一个check,然后在check.jsp里把boolean类型的check变量显示出来了,帖子里的变量a应该是check啊,我自己调试的时候改了。

首先 BeanCheck 这个类你把他作为了一个javabean ,定义语句是<jsp:useBean id="check" class="com.time.BeanCheck"></jsp:useBean> 那么id指定的check就是BeanCheck类的一个实例,相当于new了一个,再反观jsp被服务器处理的原理,其实每个jsp第一次运行都会被编译成一个servlet,所以,最终还是走不出servlet的影子,jsp他本身就是一个java类,而使用<jsp:useBean>标签,就相当于在你这个JSP类中new()了一个class="com.time.BeanCheck",且实例变量名为id=check,通俗点说就是 BeanCheck check=new() BeanCheck ,所以<jsp: