JSP基础
1.JSP 是一种运行在 WEB 服务器的脚本语言,它的本质就是 Servlet .
page.jsp --"翻译"--> page_jsp.java --"编译"--> page_jsp.class
2.jsp的作用
* Servlet
> 缺点:不适合设置html响应体,需要大量的response.getWriter().print("html")
> 优点:动态资源,可以编程
* html
> 缺点:html是静态页面,不能包含动态信息
> 优点:不用为输出html标签而发愁
* jsp(java server pages)
> 优点:在原有html的基础上添加java脚本,构成jsp页面
3.jsp和Servlet的分工
* JSP
> 作为请求发起页面,例如显示表单、超链接
> 作为请求结束页面,例如显示数据。
* Servlet
> 作为请求中处理数据的环节
4.JSP文件中可以出现的 JSP "元素":
--> 指令: 程序通过 JSP 源码 向 JSP 容器 ( Tomcat ) 下达的命令
<%@ 指令名称 属性名称="属性值" %>
page指令 --> <%@ page language="java" %>
include指令 --> <%@ include file="inner.jsp" %>
使用 include 指令可以包含 一个 .html 、.jsp 、 .txt 文件(只能是字符文件,不能是图片等文件,也不能是 Servlet )
使用 include 包含一个文件,包含操作发生在 .jsp 被翻译成 .java 阶段
5.include产生的乱码问题
pageEncoding和contentType两种属性的区别:
1)pageEncoding是jsp文件本身的编码
2)contentType的charset是指服务器发送给客户端时的内容编码
方法一:在html代码首行加上<%@ page language="java" pageEncoding="UTF-8" %>
taglib指令 -->
<c:forEach begin="1" step="2" end="11" var="x">
${ x }
</c:forEach>
--> 表达式:
<%= 表达式 %>
<%= reqeust.getContextPath() %>
--> 声明:
<%! 声明属性或方法 %>
<%! public String name = "Java Server Pages"; %>
--> 脚本:(java代码片段)
<% 直接书写 Java 代码块 %>
<%
for( int i = 0 ; i < 10 ; i ++ ) {
System.out.println( i ) ;
}
%>
--> JSP注释: 只存在于 JSP 文件中,相应的 .java 文件和 .class 文件中都不存在
<%-- JSP注释的内容 --%>
6.jsp的组成
* jsp = html + java脚本 + jsp标签(指令)
* jsp中无需创建即可使用的对象一共有9个,被称之为9大内置对象。例如:request对象,out对象
request、response、session、application、pageContext、config、out、page、exception
* 3种java脚本
> <%...%>:java代码片段(常用),用于定义0~N条java语句!
方法内能写什么,它就能放什么
> <%=...%>:java表达式,用于输出(常用),用于输出一条表达式(或变量)的结果
System.out.println();括号内能放什么,它就能放什么
> <%!...%>:声明,用来创建类的成员变量和成员方法(基本不用,但容易被考到)
class MyClass{
类体中能放什么,<%!...%>内就能放什么
}
案例:演示jsp中java脚本的使用
案例:演示jsp与servlet分工
7.jsp原理(理解)
* jsp其实是一种特殊的servlet
> 当jsp页面第一次被访问时,服务器会把jsp编译成java文件(这个java其实是一个servlet类)
> 然后再把java编译成.class文件
> 然后创建该类对象
> 最后调用它的service()方法
> 第二次请求同一jsp时,直接调用service方法
* 在tomcat的work目录下可以找到jsp对应的.java源代码
* 查看jsp对应java文件;
> java脚本
> html
8.jsp注释
<%-- --%>
JSP 的 9 个标准内置对象
* application
类型:ServletContext
* request
类型: HttpServletRequest
* response
类型:HttpServletResponse
* session
类型:HttpSession
* pageContext
类型:PageContext
* out
类型:JspWriter
* config
类型: ServletConfig
* exception
在可能发生异常的页面中使用 <%@ page errorPage="catch.jsp" %>; 指定错误处理页面
在错误处理页面:只有声明了 <%@ page isErrorPage="true" %> 的页面才会有 exception 对象存在
* page
类型: Servlet