1.jsp的作用
* servlet:
- 缺点:不适合设置HTML,需要大量的 response.getwriter().print("html")
- 优点:动态资源,可以编程。
* HTML:
- 缺点:HTML是静态页面,不包含动态信息
- 优点:不用为输出HTML标签而发愁。
* jsp:
- 优点:在原有 HTML 的基础上添加 Java 脚本,构成 jsp 页面。
2. jsp和servlet的分工
jsp:
- 作为请求发起页面,例如显示表单、超链接。
- 作为请求结束页面,例如显示数据。
* servlet:
- 作为请求中处理数据的环节。
3. jsp 的组成
* jsp = HTML + Java脚本 + jsp标签(指令)
* jsp中无需创建即可使用的对象一共有9个,被称之为9大内置对象。例如:request对象、out对象。
* 3中Java脚本:
- <%......%> : Java代码片段(常用),用于定义0~N条Java语句!
- <%=......%>:Java表达式,用于输出(常用),用于输出一条表达式(或变量)的结果。
- <%!......%>:声明,用来创建类的成员变量和成员方法(基本不用,但容易被考到)
4.jsp指令概述
一个 jsp 中可以有 0~N 个指令。
jsp指令的格式:<%@指令名 attr1=" " attr2=" "%>,一般会把jsp指令放到 jsp 文件的最上方,但这不是必须的。
jsp 中有三大指令:page、include、taglib,最为常用,也最为复杂的就是 page 指令了。
5. jsp三大指令
(1)page 指令
page 指令是最为常用的指令,也是属性最多的指令!
page 指令没有必须属性,都是可选属性。例如 <%@page %>,没有给出任何属性也是可以的!
在 jsp 页面中,任何指令都可以重复出现!
<%@page language = "java"%>
<%@page import = "java.util.*"%>
<%@page pageEncoding = "utf-8"%>
这也是可以的!
* pageEncoding和contentType:
- pageEnconding 他指定当前 jsp 页面的编码,只要不说谎,就不会有乱码!在服务器要把jsp编译成 .jsp 时要使用 pageEnconding!
- contentType:他表示添加一个响应头;
content-Type!等同于 response.setContentType("text/html;charset=utf-8");
- 如果两个属性只设置一个,那么另一个的默认值为设置那一个。如果两个属性都没有设置,那么默认为ISO ;
* import:导包!可以出现多次;
* errorpage 和 isErrorpage
- errorPage:当前页面如果抛出异常,那么要转发到哪一个页面,由errorPage来指定。
- isErrorPage:它指定当前页面是否为处理错误的页面,当该属性为 true 时,这个页面会设置状态码为 500!而且这个页面可以使用 9 大内置对象中的 exception 。
(2)include -->静态包含
* 与 RequestDispatcher的include() 方法的功能相似!
* <%@include%> 它是在 jsp 编译成 Java 文件时完成的!他们共同生成一个 Java(就是一个servlet)文件,然后再生成一个 class!
* RequestDispatcher 的 include() 是一个方法,包含与被包含是两个 servlet,即两个 .class!他们只是把响应的内容在运行时合并了!
* 作用:把页面分解了,使用包含的方式组合在一起,这样一个页面中不变的部分,就是一个独立的 jsp,而我们只需要处理变化的页面。
(3)taglib -->导入标签库
* 两个属性:
- prefix:指定标签库在本页面中的前缀!有我们自己来气起名字!
- uri:指定标签库的位置!
- <%@taglib prefix="pre" uri="/标签库路径"%>
使用:
6.九大内置对象
* out --> jsp的输出流,用来向客户端响应
* page -->当前 jsp 对象,相当于 this
* request -->HttpServletRequest
* response -->HttpServletResponse
* session --> HttpSession
* application -->HttpservletContext
* pageContext
* exception
* config -->它对应真身中的 ServletConfig 对象!
7. JSP动作标签
这些 jsp 的动作标签,与 html 提供的标签有本质的区别。
* 动作标签由 tomcat(服务器)来解释执行!它与 Java 代码一样,都是在服务器端执行!
* html 由浏览器执行!
* :转发!它与 requestDispatcher 的 forward 方法是一样的,一个是在 servlet 中使用,另一个是在 jsp 中使用!
* :包含!它与 requestDispatcher 的 include 方法是一样的,一个是在 servlet 中使用,另一个是在 jsp 中使用!
* :他用来作为 forward 和 include 的子标签!用来给转发或包含的页面传递参数!
网友评论