JSP技术(一)
Servlet的两个缺点:
1.首先,写在Servlet中所有的HTML标签必须包含JAVA字符串,使得处理HTTP响应报文工作十分繁琐。
2.所有的文件和HTML标记是硬代码,导致即使是微小变化,也需要重新编译。
一.JSP(JavaServer Pages)
JSP的页面上是一个Servlet,但jsp更容易。
1.不必编译JSP页面。
2.JSP页面是一个以.jsp为扩展名的文本文件,可以使用任何编辑器编写。
JSP页面在JSP容器中运行,一个Servlet容器通常也是JSP容器。例如Tomcat就是一个Servlet/JSP容器。
当一个JSP页面第一次被请求时,Servlet/JSP页面做如下两件事:
1.转换JSP页面到JSP页面实现类,该类是一个实现java.servlet.jsp.JspPage接口或者子接口javax.servlet.jsp.HttpJspPage的Java类。JspPage是javax.servlet.Servlet的子接口,这使得 每个JSP页面都是一个Servlet。该实现类的类名由Servlet/JSP容器生成。如果出现转换错误,则相关信息被发送客户端。
2.如果转换成功,Servlet/JSP容器随后编译该Servlet类,并装载实例化该类,像其他正常的Servlet一样执行生命周期操作。
对于同一个JSP页面的后续请求,Servlet/JSP容器会检查JSP页面是否被修改过。如果是,则该JSP页面会被重新翻译、编译并执行。如果不是,则执行已经在内存中的JSP Servlet。
JSP自带的API包含4个包:
1.javax.servlet.jsp。包含用于Servlet/JSP容器将JSP页面翻译成Servlet的核心类和接口。
其中两个重要成员是JspPage和HttpJspPage接口。所有JSP页面实现类必须实现JspPage或HttpJspPage接口。在Http环境下,需要实现HttpJspPage接口。
2.javax.servlet.jsp.tagext。包含用于开发自定义标签的类型。
3.javax.el。提供统一表达式语言的API。
4.javax.servlet.jsp.el。提供一组必须由Servlet/Jsp容器支持,以便在JSP页面中使用的表达式语言的类。
"<%"表示JSP页面中Java代码块的开始,"%>"表示Java代码块的结束符。
例:welcome.jsp
1 2 3 4 5 6 | < html > < head >< title >Welcome</ title ></ head > < body > <% out.print("welcome"); %> </ body > </ html > |
todayDate.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <%@page import="java.util.Date" %> <%@page import="java.text.DateFormat" pageEncoding="utf-8" contentType="text/html;charset=utf-8"%> < html > < head >< title >Welcome</ title ></ head > < body > <% out.print("welcome"); %> <% DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.LONG); String s=dateFormat.format(new Date()); out.println("Today is "+s); %> </ body > </ html > |
二.JSP注释
JSP支持两种不同的注释格式
(1) JSP注释。该注释记录页面中做了什么。
(2) HTML/XHTML注释。这些注释将会发送到浏览器上。
JSP注释以“<%--”开始,以“--%>”结束。
例:
1 | <%--retrieve products to display--%> |
JSP注释不会被发送到浏览器端,也不会嵌套。
HTML/XHTML注释语法如下:
<!-- [comments here] -->
一个HTML/XHTML注释不会被容器处理,会原样发送给浏览器。
HTML/XHTML注释的一个用途是用来确定JSP本身。<!-- this is /jsp/store/displayProducts.jspf -->
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)