张继军 董卫 《java web 应用开发技术与实案列教程》课后习题之第三章第4题
题解
题目内容
4.设计求任意两个整数和的web程序,要求,用户通过提交页面(input.jsp)输入两个整数,并提交给一个sum.jsp程序,在sum.jsp中计算这两个数的代数和,如果代数和为非负数,则跳转positive.jsp页面,给出“结果为正!”信息提示并显示计算结果,否则跳转到negative.jsp页面,给出“结
果为负!”信息提示并显示计算结果。
源代码
input.jsp
<body/>中代码如下:
<body>
<form action="sum.jsp" method="post">
数据1:<input type="text" name="shuju1"><br>
数据2:<input type="text" name="shuju2"><br>
<input type="submit" value="提交"><br>
</form>
</body>
sum.jsp
使用JSP内置对象request的 getParameter(String name) 方法获得参数值:
<%
String str1 = request.getParameter("shuju1");
String str2 = request.getParameter("shuju2");
double s1 = Double.parseDouble(str1);
double s2 = Double.parseDouble(str2);
double s3 = s1 + s2;
request.setAttribute("st1", s1);
request.setAttribute("st2", s2);
request.setAttribute("st3", s3);
if(s3>=0){%>
<jsp:forward page="positive.jsp"/>
<%}else{%>
<jsp:forward page="negative.jsp"/>
<%}%>
positive.jsp
<p>结果为正!</p>
<%
Double a1 = (Double) request.getAttribute("st1"); //获取的是对象类型,必须强制转换类型
Double a2 = (Double) request.getAttribute("st2");
Double a3 = (Double) request.getAttribute("st3");
%>
<%=a1%>+<%=a2 %>=<%=a3 %><br>
negetive.jsp
<p>结果为负!</p> <%
Double a1 = (Double) request.getAttribute("st1"); //获取的是对象类型,必须强制转换类型
Double a2 = (Double) request.getAttribute("st2");
Double a3 = (Double) request.getAttribute("st3");
%>
<%=a1%>+<%=a2%>=<%=a3%><br>
遇到的问题:Syntax error on token “else”, delete this token
哎,写题的时候是对仿照课本例题写的,可没想到在if else语句处出了问题。一开始在sum.jsp中是这么写的
if(s3>=0)%>
<jsp:forward page="positive.jsp"/>
<%else%>
<jsp:forward page="negative.jsp"/>
结果运行出错:Syntax error on token “else”, delete this token
把if语句块用花括号{ }括起来之后就解决了!
if(s3>=0){%>
<jsp:forward page="positive.jsp"/>
<%}else{%>
<jsp:forward page="negative.jsp"/>
<%} %>
其实一开始仿课本例题写这段代码我就觉得别扭,<jsp:forward>动作元素不包含在JSP代码块中,也就是不能包含在 <% %>里面,然后if(s3>=0)%>
直接使用“%>”结束一段JSP代码块,让我感觉后面的<jsp:forward page="positive.jsp"/>
不是if语句控制的,有点别扭。
运行结果