对jsp的初步了解及规范问题(二)

前言

今天的例子是用jsp制作简单的“艾宾浩斯记忆曲线的学习计划表”。

重点不是算法,重点是学习jsp中的一个重要的思想,作为展现层,jsp中不应该出现业务逻辑代码。

当中<%%>代码也会在后续的学习中改为其它方式显示,如JSTL和EL表达式。

什么是“艾宾浩斯记忆曲线”?百度一下,你就知道!

1.例一

来看下代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border=1>
<tr>
<td>日期</td>
<td>新学期</td>
<td>复习前1课</td>
<td>复习前2课</td>
<td>复习前4课</td>
<td>复习前7课</td>
<td>复习前15课</td>
</tr>
<%
int group = 72;
int days = group+15;
for(int i=0;i<days;i++){
String day = (i+1)+"";
String task1 = "";
String task2 = "";
String task3 = "";
String task4 = "";
String task5 = "";
String task6 = ""; %>
<tr>
<td>第<%=day %>天</td>
<td><%
//求算任务1
if(i<=group-1)
task1 = (i+1)+"";
out.println(task1);
%>
</td>
<td><%
//求算任务2
if(i<group+1&&i>=1)
task2 = i + "";
out.println(task2);
%></td>
<td><%
//求算任务3
if(i-1<group+1&&i>=2)
task3 = i-1 + "";
out.println(task3);
%>
</td>
<td><%
//求算任务4
if(i-3<group+1&&i>=4)
task4 = i-3 + "";
out.println(task4);
%></td>
<td><%
//求算任务5
if(i-6<group+1&&i>=7)
task5 = i-6 + "";
out.println(task5);
%></td>
<td><%
//求算任务6
if(i-14<group+1&&i>=15)
task6 = i-14 + "";
out.println(task6);
%></td>
</tr>
<% }%>
</table>
</body>
</html>

我们看以看到当中的代码部分

对jsp的初步了解及规范问题(二)

一眼看去,并不能很好的的阅读代码!

当然,运行是可以的。但这要的对于代码的可读性、规范性是不合格!

运行结果:

对jsp的初步了解及规范问题(二)

2.例二

再看下面的代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border=1>
<tr>
<td>日期</td>
<td>新学期</td>
<td>复习前1课</td>
<td>复习前2课</td>
<td>复习前4课</td>
<td>复习前7课</td>
<td>复习前15课</td>
</tr>
<%
int group = 72;
int days = group+15;
for(int i=0;i<days;i++){
String day = (i+1)+"";
String task1 = "";
String task2 = "";
String task3 = "";
String task4 = "";
String task5 = "";
String task6 = "";
//求算任务1
if(i<=group-1)
task1 = (i+1)+""; //求算任务2
if(i<group+1&&i>=1)
task2 = i + ""; //求算任务3
if(i-1<group+1&&i>=2)
task3 = i-1 + ""; //求算任务4
if(i-3<group+1&&i>=4)
task4 = i-3 + ""; //求算任务5
if(i-6<group+1&&i>=7)
task5 = i-6 + ""; //求算任务6
if(i-14<group+1&&i>=15)
task6 = i-14 + "";
%>
<tr>
<td>第<%=day%>天</td>
<td><%=task1 %></td>
<td><%=task2 %></td>
<td><%=task3 %></td>
<td><%=task4 %></td>
<td><%=task5 %></td>
<td><%=task6 %></td>
</tr>
<% }%>
</table>
</body>
</html>

例二与例一相比,无论是可读性、规范化,还是美观度来说,例二都是完胜的!

jsp作为展现层,jsp中不应该出现业务逻辑代码。

在后续的学习中,jsp的<%%>代码也会改为其它方式显示,如JSTL和EL表达式。

上一篇:论文 ClickP4: Towards Modular Programming of P4 小结


下一篇:ztree插件异步加载 使用RESTEasy报错 Only resource methods using @FormParam will work as expected. Resource methods consuming the request body by other means will not work as expected.