JSP执行过程

  1. 客户端发出请求访问JSP文件
  2. JSP Container将要访问的JSP文件转译为Servlet的源代码(转译时期),并将其编译成.class文件(编译时期);
  3. 执行编译后的.class文件并将结果返回给客户端(请求时期)

在转译后的Servlet的源代码中(.java),存在_jspService的方法,该方法将JSP中的java代码原封不动地翻译出来,而其中的html则通过out.write("<html标签>\r\n")这样的方法翻译出来;

JSP声明<%! java代码%>;JSP注释<%--注释内容--%>;

JSP指令:

基本的语法格式<%@ 指令 属性名= ‘值’ %>

JSP有3大指令:

  • Page指令:用于定义JSP页面的各种属性;

常用属性:

import属性,引入多个包和类,之间用逗号隔开;注:Jsp页面默认自动导入的包有java.lang.*,javax.servlet.*,javax.servlet.jsp.*,javax.servlet.http.*;

errorPage属性,指明当出错后所跳转的页面,其中“/”表示 WEB程序的根目录;也可以在web.xml中设置好其出错后的处理方式,不过其优先级低于errorPage指令;

如若使用web.xml设置出错处理方式,是通过<error-page>标签实现的,该标签有3个子元素:<error-code>:(指定错误状态码)、<exception-type>:(指定异常类的完全限定名)、<location>(指定处理的跳转页面);

isErrorPage属性,默认情况下的false状态,可以在错误页面中设置为true,其作用_jspService方法中会多提供声明一个exception对象,可通过该对象获取错误信息,如:

<body>
异常信息如下:<%=exception.getMessage()%>
</body>
  • include指令:引入文件,会将两个jsp翻译成一个Servlet,为静态引入,被引入文件经常用.jspf加以区分,常用语法如下:

    <%@include file="/xxx/xxx" %>

    其中第一个“/”表示当前web应用;

与jsp:include指令加以区分,这个指令为动态指令,其运行流程是将所include的文件运行后将结果返回;

  • taglib指令:声明用户使用自定义标签,将标签库描述符文件导入jsp页面中,语法如下:

    <%@taglib uri="/xxx" prefix="xxx"%>

uri属性:定位标签库描述符的位置。唯一标识和前缀相关的标签库描述符,可以使用绝对或相对

prefix属性:标签的前缀,区分多个自定义标签。不可以使用保留前缀和空前缀,遵循XML命名空间的命名约定。

java_第一年_JavaWeb(7)的更多相关文章

  1. java_第一年_JavaWeb(14)

    EL :EL表达式主要用于获取数据.执行运算.获取对象.调用java方法: 获取数据 语法:"${标识符}" 会调用pageContext.findAttribute方法,从pag ...

  2. java_第一年_JavaWeb(13)

    JSTL标签库——核心标签库 为了弥补html标签的不足,为了更加方便地在jsp页面中使用java逻辑代码,JSTL标签库因运而生,而其中的佼佼者,被恩宠最多的就是核心标签库了: 核心标签库从功能上可 ...

  3. java_第一年_JavaWeb(11)

    自定义标签:主要是用来移除JSP页面中的java代码. 先从一个简单的案例了解其怎么移除代码: 一个正常的jsp页面: <%@ page language="java" pa ...

  4. java_第一年_JavaWeb(15)

    Filter过滤器,Servlet API 中提供了一个Filter接口,用于实现用户在访问某个目标资源前对其进行拦截: 拦截原理:web服务器通过Filter接口调用doFilter方法,会传递一个 ...

  5. java_第一年_JavaWeb(12)

    SimpleTag标签 定义了五个方法:setJspContext.setJspBody.setParent和getParent以及最重要的doTag方法(完成了所有的业务逻辑): setJspCon ...

  6. java_第一年_JavaWeb(10)

    JavaWeb的两种开发模式 JSP+JavaBean框架:JavaBean负责封装数据.提供方法,JSP负责处理用户请求和显示数据:只能开发较为简单的业务: JSP+JavaBean+Servlet ...

  7. java_第一年_JavaWeb(9)

    JavaBean是一个遵循某种特定写法的Java类,有以下特点: 必需具有一个无参的构造函数 属性必需私有化 私有化的属性必需通过public类型的方法暴露给其它程序,其方法命名也有一定的规范 范例: ...

  8. java_第一年_JavaWeb(8)

    前面说到,JSP在运行时会被编译成Servlet源代码,通过_jspServlet方法处理请求,此时该方法会传递和提供9个与web开发相关的对象进行使用,开发人员在JSP页面通过对这些变量即可引用这9 ...

  9. java_第一年_JavaWeb(6)

    会话 会话:浏览器从打开一个进程访问服务器到该浏览器关闭,我们称之为一个会话: 在浏览器和服务器交互期间,会不可避免地产生一些数据,而为了为每个用户保存其对应的数据,可使用两种技术:Cookie和Se ...

随机推荐

  1. Java开发桌面程序学习(10)——css样式表使用以及Button使用

    css 样式表使用 javafx中的css样式,与html的有些不一样,javafx中的css,是以-fx-background-color这种样子的,具体可以参考文档JavaFx css官方文档 简 ...

  2. 【杂记】mysql 左右连接查询中的NULL的数据筛选问题,查询NULL设置默认值,DATE_FORMAT函数

    MySQL左右连接查询中的NULL的数据筛选问题 xpression 为 Null,则 IsNull 将返回 True:否则 IsNull 将返回 False. 如果 expression 由多个变量 ...

  3. goland使用:导入一个github开源项目tidb

    概要:在windos下的IDEA 的go语言的编辑器 goland的使用,导入github上面的开源项目. 问题: 下载好goland之后,open project打开一个下载好的githubhub项 ...

  4. 获取用户真实IP:(模拟:客户端--F5--nginx--tomcat 后端获取用户真实IP)

    模拟:客户端--F5--nginx--tomcat 后端获取用户真实IP 192.168.109.137 :nginx01(充当第一层代理==F5)192.168.109.138 :nginx02(二 ...

  5. UNIX网络编程总结三

    套接口结构 IPv4套接口地址结构: 1 2 3 4 5 6 7 struct sockaddr_in{/*16字节*/ uint8_t sin_len;  /*结构体长度,8位*/ sa_famil ...

  6. SPOJ - DQUERY (主席树求区间不同数的个数)

    题目链接:https://vjudge.net/problem/SPOJ-DQUERY 题目大意:给定一个含有n个数的序列,有q个询问,每次询问区间[l,r]中不同数的个数. 解题思路:从左向右一个一 ...

  7. Swagger详解(SpringBoot+Swagger集成)(转)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/ai_miracle/article/de ...

  8. ht-2 arrayList特性

    一.arrayList对象创建 当调用无参构造方法来构造一个ArrayList对象时,它会在内部分配一个初始大小为10的一个Object类型数组, 当添加的数据容量超过数组大小的时候,会产生一个新的数 ...

  9. 简述php标记符有哪些

    <?php ?> 是PHP的解析符(长标记),所有需要运行的代码都要放到解析符中. 1 2 3 <?php echo "hello world"; ?> 短 ...

  10. 【HDOJ6656】Kejin Player(期望DP)

    题意:玩一个共有n级的游戏,i级出发每次可以花a[i]的代价,有p[i]的几率变成i+1级,有1-p[i]的几率变成x[i]级,x[i]<=i 多次询问,每次询问从l级升到r级的期望总代价 n, ...