jsp
1. 什么是jsp
jsp:Java Server Pages 也就是java服务器端的页面,也和Servlet一样,用于动态web技术!
最大的特点:
- 写jsp页面就感觉在写HTML页面一样。
- 区别:
- HTML只给用户提供静态数据,并且HTML页面不能写java代码。
- jsp页面能写java代码,可以为用户提供动态的数据。
2. jsp的原理
浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet。所以当访问一个jsp页面的时候,其实也是在访问一个Servlet。服务器执行jsp时,会把jsp翻译成成Servlet。
2.1 jsp是怎么样子执行的
- 首先代码层面没有任何的问题
- 服务器内部
- 当第一次执行jsp页面时启动Tomcat会在IDEA的Tomcat中产生一个work目录,work目录下的/Catalina/localhost/ROOT/org/apache/jsp 发现jsp页面被转换成了java程序。
- jsp最终也会转换成一个java类。
3. jsp本质上就是一个Servlet
//初始化
public void _jspInit() {
}
//销毁
public void _jspDestroy() {
}
//JSPService
public void _jspService(.HttpServletRequest request,HttpServletResponse response)
- 内置的一些对象
final javax.servlet.jsp.PageContext pageContext; //页面上下文
javax.servlet.http.HttpSession session = null; //session
final javax.servlet.ServletContext application; //applicationContext
final javax.servlet.ServletConfig config; //config
javax.servlet.jsp.JspWriter out = null; //out
final java.lang.Object page = this; //page:当前
HttpServletRequest request //请求
HttpServletResponse response //响应
- 输出页面前增加的代码
response.setContentType("text/html"); //设置响应的页面类型
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
以上的这些对象我们都可以在jsp中直接使用!
在JSP页面中;
只要是 JAVA代码就会原封不动的输出;
如果是HTML代码,就会被转换为:
out.write("<html>/r/n");
这样的格式,输出到前端!
4. jsp的基本语法
任何语言都有自己的语法,JAVA中有,。 JSP 作为java技术的一种应用,它拥有一些自己扩充的语法(了解,知道即可!),Java所有语法都支持!
4.1 注释
注释分为输出注释和隐藏注释
- 输出注释:输出注释是指会在客户端(浏览器)显示的注释。
- 语法:
- 隐藏注释:隐藏注释是指注释虽然写在JSP程序中,但是不会发送给客户。
- 语法:<%– –%> <%– 在页面源代码中,这个注释是看不见的 –%>
4.2 jsp声明
在JSP中,声明表示一段Java源代码,用来定义类的属性和方法,声明后的属性和方法可以在JSP文件的任意地方使用。
语法:<%! 声明 %>
<%!
static {
System.out.println("Loading Servlet!");
}
private int globalVar = 0;
public void kuang(){
System.out.println("进入了方法Kuang!");
}
%>
JSP声明:会被编译到JSP生成Java的类中!其他的,就会被生成到_jspService方法中!
在JSP,嵌入Java代码即可!
4.3 java脚本片段
脚本程序是一段在客户端请求时先被服务器执行的Java代码,它可以产生输出,并把输出发送到客户的输出流,同时也可以是一段流程控制语句。
语法:<% 代码块 %>
<%--jsp脚本片段--%> //隐藏注释
<%
int sum = 0;
for (int i = 1; i <=100 ; i++) {
sum+=i;
}
out.println("<h1>Sum="+sum+"</h1>");
%>
4.3.3脚本片段的在实现
<%
int x = 10;
out.println(x);
%>
<p>这是一个JSP文档</p>
<%
int y = 2;
out.println(y);
%>
<hr>
<%--在代码嵌入HTML元素--%>
<%
for (int i = 0; i < 5; i++) {
%>
<h1>Hello,World <%=i%> </h1>
<%
}
%>
5.jsp指令
5.1 page指令
page指令作用于整个JSP页面,定义了许多与页面相关的属性,这些属性将被用于和JSP容器通信,描述了和页面相关的指示信息。在一个JSP页面中,page指令可以出现多次,但是该指令中的属性只能出现一次,重复的属性设置将覆盖先前的设置。
语法: <%@ page attr1=”value1″ attr2=”value2″ … %>
注:page 指令的作用对整个页面有效,与其书写的位置无关,但习惯把 page 指令写****在 JSP 页面的最前面。
5.1.2 page常用的属性
-
contentType属性
-
contentType
属性设置JSP页面和生成的响应页面的字符编码。 默认内容类型为:text/html
,它是HTML页面的标准内容类型。如果要从JSP输出为XML,请使用以下
page
指令<%@ page contentType = "text/xml" %>
-
errorPage属性
-
如果希望在当前页面运行时出现错误时,指定一个错误提示页面,那么
errorPage
属性告诉JSP引擎显示哪个页面。errorPage
属性的值是相对URL。当抛出所有未捕获的异常时,以下指令用于在页面出错时指定显示
MyErrorPage.jsp
的内容<%@ page errorPage = "MyErrorPage.jsp" %>
-
5.2 include指令
include指令用于在JSP页面中静态包含一个文件,该文件可以是JSP页面、HTML网页、文本文件或一段Java代码。使用了include指令的JSP页面在转换时,JSP容器会在其中插入所包含文件的文本或代码,同时解析这个文件中的JSP语句,从而方便地实现代码的重用,提高代码的使用效率。
i语法: <%@ include file=”relativeURL” %>
<%@ include file="date.jsp" %>
<h1>
阳光明媚
</h1>
include指令的主要功能会将两个页面合二为一 上面的代码就是会将date.jsp页面和 < h1>所在的页面合二为一。
5.3 include动作
该动作标签告诉 JSP 页面动态包含一个文件,即 JSP 页面运行时才将文件加入。与静态插入文件的 include 指令标签不同,当 JSP 引擎把 JSP 页面转译成 Java 文件时,不把JSP 页面中动作指令 include 所包含的文件与原 JSP 页面合并一个新的 JSP 页面,而是告诉Java 解释器,这个文件在 JSP 运行时(Java 文件的字节码文件被加载执行)才包含进来。如果包含的文件是普通的文本文件,就将文件的内容发送到客户端,由客户端负责显示;如果包含的文件是 jsp 文件,JSP 引擎就执行这个文件,然后将执行的结果发送到客户端,并由客户端负责显示这些结果。
<jsp:include page="/common/header.jsp"/>
<h1>网页主体</h1>
<jsp:include page="/common/footer.jsp"/>
page: 要包括的页面的相对URL。
jsp:include:拼接页面,本质还是三个 和include指令有一定的区别 前后是拼接,后者是将网页合并
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/279739.html