JSP相关

来源:互联网 发布:淘宝店铺网红 编辑:程序博客网 时间:2024/05/19 13:06

1.简介

① HTML擅长显示一个网页,但是它不能调用Java代码,是一个静态页面。
② Servlet擅长调用Java程序,但是Servlet不擅长显示一个页面。
③ HTML + Servlet = JSP
④ JSP:Java Server Pages
⑤ JSP集合HTML和Servlet的优点,既可以编写一个HTML页面,又可以调用Java程序。
⑥ JSP不能脱离服务器运行。
⑦ JSP本质上是一个Servlet。

2.运行原理解析

① 当我们访问一个JSP时,服务器会先将JSP文件转换成一个Java类,然后再调用Java类去处理我们的请求。而这个Java类就是一个Servlet。
② 可以发现在镜像服务器的work目录中,Tomcat自动生成了一个java文件,名字就叫做index_jsp.java,我们的jsp文件叫做index.jsp,这个文件就是从jsp翻译出来的java文件。
③ 可以发现index_jsp.java这个类继承了HttpJspBase,而HttpJspBase又继承了HttpServlet,所以从类的角度讲它就是一个Servlet。
④ 在总的web.xml文件中也发现了jsp相关的配置信息,由此可以发现,jsp就是Servlet。

3.基本语法

① 模板元素
- JSP中的模板元素指的就是JSP页面中的HTML代码。
- 模板元素中的内容会作为out.write()的参数,最终输出到页面中。
- 所以在JSP中可以完全按照在HTML页面中的方式来编写网页。
② 脚本片段
- 格式:<% %>
- 在脚本片段中可以直接编写Java代码
- 脚本片段中的内容会原封不动地复制到jsp对应的Java文件中指定位置。
- 在jsp页面中可一个编写多个脚本片段,但是要求多个脚本片段之间的结构完整。
- 脚本片段中的内容会复制到对应的java文件中的service()方法中。
- 所以在service()方法中能写什么,在脚本片段中就能写什么。
③ 表达式
- 格式:<%= %>
- JSP表达式用来在页面中输出一个对象。
- jsp表达式中的内容最终会作为out.print()的参数输出到页面中。
- 所以out.print()可以接收什么类型的参数,表达式中就可以写什么对象。而它可以接收Object类型的参数,所以在表达式中可以传任意对象。
④ 注释
- 格式:<%-- --%>
- 注释中的内容不会被JSP引擎翻译到jsp对应的java类中。
- JSP中可以使用的注释:
1.jsp注释:<%-- --%>
2.HTML注释:<!-- -->
3.Java注释://、/**/
⑤ 声明
- 格式:<%! %>
- 声明中的内容会直接放到jsp对应的java文件类中。
- 所以在类中可以写什么在声明中就可以写什么。

4.JSP指令

格式:<%@ 指令名 属性1=“属性值1” 属性名2=“属性值2” %>

page指令:用来告诉JSP引擎如何翻译jsp文件。

- <%@ page %>

- 属性:session:页面中是否可以使用session对象,需要一个布尔值,默认是true可以使用,如果将该值设置为false,则不能直接使用session对象。

import:用来导包。

errorPage:当页面中出现异常以后,转发到的页面。

isErrorPage:当前页面是否是一个错误页面,需要一个布尔值,默认是false,当该值设置true可以在jsp中使用exception对象,设置false不能使用。

language:用来指定JSP将会被翻译为的语言。这个属性的默认值java,可选值java。

contentType:用来指定我们JSP的编码类型,一般我们使用:text/html;charset=utf-8

pageEncoding: 告诉jsp引擎当前jsp使用的编码格式。

extends:指定jsp对应java类的父类。不用

isELIgnored:是否忽略EL表达式,需要一个布尔值,默认是false不忽略,如果将该值设置true,则页面中的EL表达式将不会自动解析。

include指令
- include指令用于将一个页面包含进另一个页面
- <%@ include file="/include/2.jsp" %>
- include指令叫做静态包含,它将相当于将目标页面,原封不动复制到当页面中。
- 使用静态包含时,只会翻译当前的jsp页面,而不会翻译被包含页面。

5.JSP动态标签

1.格式:<jsp:标签名 属性名=“属性值”></jsp:标签名>
2.jsp动作标签,使用形式和标签很像,但是动作标签都是由服务器解析的,动作标签在服务器会被转换成java代码。
3.forward标签:
- 用来在jsp页面中将请求转发到另一个页面。
<jsp:forward page="/index.jsp"><jsp:param value="sunwukong" name="username"/><jsp:forward/>
4.include标签:
<jsp:include page="/include2/2.jsp"></jsp:include>
- 动态包含,当前页面和被包含页面都会被翻译成java文件
- 动态包含会在页面执行时,调用如下:
include(request, response, "/include2/2.jsp", out, false);
5.include指令和include标签的不同:
- 格式不同
- include指令执行时,不会翻译被包含的页面,include标签执行时两个都会被翻译成java文件。
- include指令执行时会发送一个请求,include标签执行时会发送两个请求。

6.隐含对象

隐含对象也叫内置对象,指的是可以在JSP中直接使用的对象。
九大隐含对象是:pageContext  request  session  application  config  response  out  page  exception

7.域对象

① 域对象可以在不同的WEB资源之间共享数据。
② WEB资源:这里我们的WEB资源主要指JSP和Servlet。
③JavaWeb中一共有四个域对象:pageContext  request  session  application
在jsp中可以获取到全部四个域对象,在Servlet中只能获取到三个,没有pageContext
④ 每一个域对象中都维护着一个map,用来保存数据。
⑤ 域对象都共有的三个方法:
void setAttribute(String name, Object value) --> 向域中设置一个属性。
Object getAttribute(String name) --> 根据属性名从域中获取属性值。
void removeAttribute(String name) --> 从域中根据属性名移除指定的属性。
⑥ pageContext
- 类型:PageContext
- 作用:它是page域的域对象,page域就是当前页面,一旦切换页面则page 域中的属性全部丢失
主要用来在jsp 和标签之间来传递数据。
⑦request
- 类型:HttpServletRequest
- 作用:它是request域的域对象,request域代表的是当前请求,一旦发送两次请求则request中的属性全部丢失
主要是在转发时共享数据的。
⑦ session
- 类型:HttpSession
- 作用:它是session域的域对象,session域代表的是当前会话,会话就是指一次打开浏览器到关闭浏览器的过程。
一旦会话停止则session域中属性全部丢失。不同的浏览器就是不同的会话。
⑧application
- 类型:ServletContext
- 作用:它是application域的域对象,application域代表的是整个web应用,只要项目不停止,则application域中的属性就不会丢失
主要用来在web应用中共享数据。
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 花洒连接管坏了怎么办 软管接头生锈了怎么办 不锈钢杯子摔扁怎么办 兔子身上有胶怎么办 硅胶手机壳脏了怎么办 手机太滑了怎么办 油井套管断了怎么办 一二苯胍过敏怎么办 墨盒托架被卡怎么办 安华花洒调节不了方向怎么办 广联达计价软件打不开怎么办 夏天中午浇花了怎么办 喷壶不喷水了怎么办 防止油锅溢油怎么办 公寓消防喷头失灵怎么办 喷头管子裂了怎么办 露台有燃气管道怎么办 布防报警器响了怎么办 汽车报警器老响怎么办 铝框箱子扣不上怎么办 旅行箱 卡扣坏了怎么办 天然气火力不旺怎么办 内螺纹坏了怎么办 ppr管内丝松动了怎么办 点开微信链接被扣钱了怎么办 下水道往外渗水怎么办 小区下水道堵了怎么办 洗碗下水管堵塞怎么办 小区下水管漏水怎么办 墙内下水道漏水怎么办 暖气回水管漏水怎么办 厨房下水道管子漏水怎么办 硬是堵住马桶了怎么办 请问下水道堵了怎么办 下水道堵实了怎么办 农村下水道堵了怎么办 南京房子水管漏水怎么办 下雨天卫生间屋顶漏水怎么办 打孔打到水管怎么办 卫生间门角渗水怎么办 预埋水管漏水怎么办