优点:
1.JSP代码跨平台, 即一次编写,处处运行
众所周知,由于微软的垄断性,它的产品可移植性做得十分差,ASP也不例外,
2.JSP组件跨平台
JSP组件(企业JavaBeans,JavaBeans或定制的JSP标签)都是跨平台可重用的.企业JavaBeans组件可以访问传统的数据库,并能以分布式系统模式工作于Solaris,Linux,UNIX和Windows平台.
3.支持多种网页格式
目前, JSP技术支持的网页格式还没有一个明确的标准.一般来说,JSP技术既可以支持HTML/DHTML的传统浏览器文件格式,又可以支持应用于无线通信设备如移动电话,PDA等设备进行网页预览的WML文件格式,还可以支持其他一些B2B电子商务网站应用的XML格式.
4.JSP标签可扩充性
尽管ASP和JSP都使用标签与脚本技术来制作动态Web网页,JSP技术允许开发者扩展JSP标签,定制JSP标签库,所以网页制作者充分利用与XML兼容的标签技术强大的功能,大大减少对脚本语言的依赖.由于定制标签技术,使网页制作者降低了制作网页的复杂度.
5.健壮性与安全性
由于JSP页面使用的脚本语言是java语言, 因此,它就具有java技术的所有好处, 包括健壮的存储管理和安全性.
缺点:
1. JSP技术极大的增加了产品的复杂性.为了获得 系统的跨平台功能和产品伸缩能力,java系统开发了多种产品,如,JRE,JDK,J2EE,EJB,JSWDK,JavaBeans ,只有有效地将它们组合在一起,才能产生强大的功能.(部署有难度)
2. java的高效率运行需要占用大量的内存和硬盘空间. 一方面,java的高速运行是通过 .class文件常驻内存来实现的.另一方面,还需要硬盘空间来存储一系列的.java 文件和.class文件以及对应的版本文件.(硬件要求高)
3. JSP程序调试困难.
JSP页面执行时, 首先被转换为 .java文件(Servlet), 然后将.java文件编译为字节码文件. 这样,出错信息实际上指向的是转换后的那个.java文件(Servlet), 而不是JSP本身. (调试有难度)
注意:
response.getWriter().write()全部换成out.write()
setTime.jsp动态资源
<%@ page import="java.net.URLDecoder" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.net.URLEncoder" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>展示时间</title>
</head>
<body>
<%
/*
第一次访问
不是第一次访问
*/
// 设置消息体的数据格式及编码
response.setContentType("text/html;charset=utf-8");
Cookie[] cookies = request.getCookies();
// 标记是否有lastTime
boolean flag = false;
// 如果为null或者长度为0则没必要遍历数组消耗性能
if (cookies != null && cookies.length > 0) {
for (Cookie cookie : cookies) {
String name = cookie.getName();
if ("lastTime".equals(name)) {
flag = true;
String lastTimeValue = cookie.getValue();
lastTimeValue = URLDecoder.decode(lastTimeValue, "utf-8");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String strNewTime = sdf.format(new Date());
strNewTime = URLEncoder.encode(strNewTime, "utf-8");
cookie.setValue(strNewTime);
cookie.setMaxAge(60 * 60 * 24 * 30);
response.addCookie(cookie);
out.write("<h3>您上次访问时间:" + lastTimeValue + "</h3>");
break;
}
}
}
if (cookies == null || cookies.length == 0 || flag == false) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String strNewTime = sdf.format(new Date());
strNewTime = URLEncoder.encode(strNewTime, "utf-8");
Cookie cookie = new Cookie("lastTime", strNewTime);
cookie.setMaxAge(60 * 60 * 24 * 30);
response.addCookie(cookie);
out.write("<h3>欢迎您首次访问</h3>");
}
%>
<h1>首页</h1>
</body>
</html>