JavaWeb的技术体系
一.Java Server Pages
JSP 与 PHP、ASP、ASP.NET 等语言类似,运行在服务端的语言。
JSP(全称Java Server Pages)是由 Sun Microsystems 公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成 HTML、XML 或其他格式文档的Web网页的技术标准。
-
1)Java Server Pages,顾名思义就是运行在java服务器中的页面,也就是在我们JavaWeb中的动态页面,其本质就是一个Servlet。
-
2)其本身是一个动态网页技术标准,它的主要构成有HTML网页代码、Java代码片段、JSP标签几部分组成,后缀是.jsp
1.为什么要使用JSP
1)早期只有servlet与HTML,HTML不会处理请求,只能使用response输出标签数据,非常麻烦。
2)后来有了jsp,相比于Servlet与HTML,JSP既能处理请求又能处理显示页面,简化了Servlet的开发(意义)
3)但如果过度使用jsp,在jsp中即写大量的java代码,又写html,造成难于维护以及分工协作,而Servlet更擅长处理业务逻辑,两种技术各有专长,所以一般我们会将Servlet和JSP结合使用,Servlet负责业务,JSP负责显示。
4)一般情况下, 都是Servlet处理完的数据,转发到JSP,JSP负责显示数据的工作
5)再后来,javaweb开发借鉴mvc开发模式,程序的设计也变得更加合理
2.JSP的处理流程
服务器第一次使用jsp页面时:
之后会一直使用该servlet对象,除非页面发生改变。
JSP对应的java与class文件,在服务器文件夹:
- org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\WebTest\
3.JSP语法
1)JSP的脚本元素:
- 脚本片段是嵌入到JSP中Java代码段
- 格式以<%开头,%>结尾,两个%号之间就可以编写Java代码了
<!-- 1.JSP脚本片段
作用:用来在里面写Java代码-->
<%
//在JSP中循环打印h1标签内容
for(int i = 0 ; i < 10 ; i ++ ){
//out.print("今天天气好晴朗,处处好风光!");
%>
<h1>今天天气好晴朗,处处好风光!</h1>
<%
}
%
2)JSP的表达式:用来输出对象
- JSP表达式用来直接将Java变量输出到页面中
- 格式以<%=开头,以%>结尾,中间是我们要输出的内容
<!-- 2.JSP表达式
作用:用来输出对象-->
<%="我是通过JSP表达式输出的" %>
3)JSP中的注释
- 1)<%-- JSP的注释 --%> —— 当被JSP引擎翻译成java文件时,会忽略JSP注释
- 2)//JAVA的注释:JVM编译java文件时会忽略注释
- 3)<!-- HTML的注释 -->:浏览器加载时,会忽略
4.JSP的九大隐含对象
变量名 | 真实类型 | 作用 |
---|---|---|
pageContext | PageContext | 当前页面共享数据,还可以获取其他八个内置对象 |
request | HttpServletRequest | 一次请求访问的多个资源(转发) |
session | HttpSession | 一次会话的多个请求间 |
application | ServletContext | 所有用户间共享数据 |
response | HttpServletResponse | 响应对象 |
page | Object | 当前页面(Servlet)的对象 this |
out | JspWriter | 输出对象,数据输出到页面上 |
config | ServletConfig | Servlet的配置对象 |
exception | Throwable | 异常对象 |
5.JSP的域对象
1)四个域对象:
范围从小到大依次为:
a) pageContext域
- 范围:当前页面;——离开这个页面,相关值不能使用
- 对应的域对象:pageContext
- 域对象的类型:PageContext
b) request域
范围:当前请求(一次请求)
对应的域对象:request
域对象的类型:HttpServletRequest
c) session域
- 范围:当前会话(一次会话);从打开页面开始,到浏览器关闭——这是一次会话
- 对应的域对象:session
- 域对象的类型:HttpSession
d) application域
- 范围:当前Web应用;只要服务器不关,一直可以使用
- 对应的域对象:application
- 域对象的类型:ServletContext
2)四个域对象都有以下三个方法:
- void setAttribute(String key , Object value); //设置雨中key-value元素
- Object getAttribute(String key); //获取key对应的value值
- void removeAttribute(String key);//移除元素
3)四个域对象的使用规则:
能用小的就不用大的
- 查找域对象中的key值,是从最小域开始
案例: