前言

今天的例子是用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>

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

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

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

运行结果:

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表达式。

对jsp的初步了解及规范问题(二)的更多相关文章

  1. 编码规范(二)之Code Templates的设置(转)

    http://swiftlet.net/archives/1199 编码规范(二)之Code Templates的设置(转) 文件(Files)注释标签:/** * @Title: ${file_na ...

  2. Servlet 3.0 规范(二)注解驱动和异步请求

    Servlet 3.0 规范(二)注解驱动和异步请求 在 Servlet 3.0 时支持注解启动,不再需要 web.xml 配制文件. 一.Servlet 3.0 组件 Servlet 容器的组件大致 ...

  3. JSP页面和属性命名规范

     1.页面命名: 登陆 Login注册 Register用户 User创建 Create修改 Update删除 Delete查询 Selete控制器 Controller用户名 Username密码 ...

  4. 对jsp的初步了解及生成war包(一)

    1.jsp与html的区别 最简单的说:jsp是动态网页,html是静态网页 HTML(Hypertext Markup Language)文本标记语言,它是静态页面,和JavaScript一样解释性 ...

  5. Java高级规范之二

    二十一.提交java代码前应该检查是否有没用的语句,如:System.out.println(); jsp页面上面是否有alert调试信息 不规范示例:暂无 规范实例:暂无 解析:因为如果保留了有可能 ...

  6. JSP网站开发基础总结《十二》

    前两篇已经简单为大家介绍了一下,有关Filter接口的知识,本篇就让我们以一个登录小功能,来具体实现一下过滤器的作用,便于大家掌握.具体为大家介绍一下如何使用Filter对访问进行过滤,及如何防止中文 ...

  7. JSP 文件上传下载系列之二[Commons fileUpload]

    前言 关于JSP 文件上传的基础和原理在系列一中有介绍到. 这里介绍一个很流行的组件commons fileupload,用来加速文件上传的开发. 官方的介绍是:  让添加强壮,高性能的文件到你的se ...

  8. Java编程规范(二)

    二.格式规范 在上一篇的java编程规范(一)中我们讲述了在Java编码中的一般原则,虽然这些原则并不涉及具体的代码规范,但是这些原则却是我们在Java开发过程中所应该遵循的规范与思想.今天我们将学习 ...

  9. Servlet与Jsp的结合使用实现信息管理系统二

    PS:前面说了抽取框架的搭建,接着就要我们开始进入网址的时候就要查到全部信息并显示在首页,我们用到的MySql数据库,具体步骤是: 创建数据库,创建表,添加信息 项目中调入mysql的jar包 mys ...

随机推荐

  1. RHive

    R + Hive = RHive 支持原创:http://blog.fens.me/nosql-r-hive/ R利剑NoSQL系列文章 之 Hive Hive介绍 Hive安装 RHive安装 RH ...

  2. Python日期时间的相关操作

    1.获取当前时间戳 import time t=time.time() print t 1459994552.51 #以秒为单位的 2.格式化日期 time.localtime() 返回当前时间的: ...

  3. sublime Text2 快捷键精华版

      Ctrl+Shift+P:打开命令面板Ctrl+P:搜索项目中的文件Ctrl+G:跳转到第几行Ctrl+W:关闭当前打开文件Ctrl+Shift+W:关闭所有打开文件Ctrl+Shift+V:粘贴 ...

  4. 使用Cmder的几个问题

    Cmder 全尺寸版本 [101022] 新版本的 Cmder Full 版本,安装包目录的 config 目录下,已经没有 aliases 文件,在 vendor 下的 init.bat 下也没有了 ...

  5. JEESZ-kafka消息服务平台实现

    JEESZ的消息服务平台已经抛弃了之前的ActiveMQ,改用高吞吐量比较大的Kafka分布式消息中间件方案:JEESZ-kafka消息平台使用spring+kafka的集成方案,详情如下:1. 使用 ...

  6. VR全景智慧城市-梦幻城市降临

    有人说,创业分为两种,一种是富创业,一种是穷创业! 什么是富创业呢?就是拿钱砸,我觉得这种说法有点荒唐,为什么创业,因为没钱才会去创业,有钱的那不叫创业的,那是拿钱投资点项目. 看看老一辈的富豪,不都 ...

  7. .net 企业管理系统快熟搭建框架

          简言   本人在博客园注册也2年多了,一直没有写自己的博客,因为才疏学浅一直跟着园子里的大哥们学习这.net技术.一年之前跳槽到现在的公司工作,由于公司没有自己一套的开发框架,每次都要重新 ...

  8. linux通配符与正则表达式

    通配符   *  任意字符,可重复多次     ? 任意字符,重复一次     [] 代表一个字符 举例: [a,b,c] 表示abc中任意一个 通配符的作用是用来匹配文件名的 正则表达式 正则表达式 ...

  9. 关于JS的return false

    之前真的不知道JS里的return false 还能跳出事件. 今天在修改BUG的时候,用到了这个,就去查了一下,为了加深记忆在此处做个总结. retrun true: 返回正确的处理结果. retu ...

  10. CAP理论与MongoDB一致性、可用性的一些思考

    大约在五六年前,第一次接触到了当时已经是hot topic的NoSql.不过那个时候学的用的都是mysql,Nosql对于我而言还是新事物,并没有真正使用,只是不明觉厉.但是印象深刻的是这么一张图片( ...