JSP动作标记的简单应用
目录
一、计算梯形面积
1.内容:
编写两个JSP页面:main.jsp和lader.jsp,将两个JSP页面保存在同一Web服务目录中。main.jsp使用include动作标记动态加载lader.jsp页面。lader.jsp页面可以计算并显示梯形的面积。当lader.jsp被加载时获取main.jsp页面中include动作标记的param子标记提供的梯形的上底、下底和高的值。
2.实现:(前提:配置好tomcat虚拟路径)
2.1 main.jsp
<%@ page contentType = "text/html;charset=utf-8" %>
<HTML>
<BODY>
<jsp:include page="lader.jsp">
<jsp:param name="topLine" value="30"/>
<jsp:param name="baseLine" value="60"/>
<jsp:param name="height" value="40"/>
</jsp:include>
</BODY>
</HTML>
(因为使用GB2312编码会出现乱码,所以统一改成utf-8)
2.2 lader.jsp
<%@ page contentType = "text/html; charset=utf-8" %>
<HTML>
<BODY>
<%
String topLine = request.getParameter("topLine");
String baseLine = request.getParameter("baseLine");
String height = request.getParameter("height");
double a = Double.parseDouble(topLine);
double b = Double.parseDouble(baseLine);
double h = Double.parseDouble(height);
double area = (a+b)*h/2;
%>
<p> 梯形的上底为:<%=a %>
<br>
<p> 梯形的下底为:<%=b %>
<br>
<p> 梯形的高为:<%=h %>
<br>
<p> 梯形面积为:<br>
<%=area %>
</BODY>
</HTML>
2.3 打开浏览器,通过Tomcat配置的虚拟路径,打开main.jsp即可。效果如下:
二、计算累加和
1.内容:通过表单写入一个正整数n,然后通过动作include插入一个计算1~n累加和的程序。
2实现:
2.1 inputNum.jsp
<%@ page contentType = "text/html;charset=utf-8" %>
<HTML>
<BODY>
<p>请输入一个整数:<br>
<form action="" method=get name=form>
<input type="text" name="number">
<input type="submit" name="submit" value="计算"><br>
</form>
<% String num=request.getParameter("number");
if(null != num && !num.equals("")){
%> <jsp:include page="recall.jsp">
<jsp:param name="num" value="<%=num%>"/>
</jsp:include>
<% } %>
</BODY>
</HTML>
2.2 recall.jsp
<%@ page contentType = "text/html;charset=utf-8" %>
<HTML>
<body>
<% String num = request.getParameter("num");
int n = Integer.parseInt(num);
int sum = 0;
for(int i = 1;i <= n;i++) {
sum += i;
}
out.println("从1至"+ n +"的累加和是:"+sum);
%>
</body>
</HTML>
3.效果:
4.总结
在基本完成代码的情况下,运行一直报错:java.lang.NumberFormatException: For input string: "null",我想也许是因为在inputNum.js页面里,表单标签里的number还未输入,所以为空,于是手动将其设置了一个数,可以运行。但是通过查阅资料,才知道原来“并不是指传入的值为空,而是指传入的字符串为“null”,而“null”并不能被StringUtils.split()切割,进而不能被Integer.parseInt()调用,所以会报错。”。解决方法如下:只需要在上面的判断语句后面再加一个判断传入的参数是否不为“null”的条件即可。
<% String num=request.getParameter("number");
if(null != num && !num.equals("")){
%> <jsp:include page="recall.jsp">
<jsp:param name="num" value="<%=num%>"/>
</jsp:include>
<% } %>