1. JSP的核心运行原理

1) 客户端浏览器发送请求到服务器,访问a.jsp文件。

http://localhost:8989/应用名/a.jsp

2) 服务器端接收到请求后所做的处理

a) 创建request和response两个对象

b) 根据请求中的应用名找到该应用下面的web.xml文件,发现该应用的配置文件中没有关于a.jsp路径相关的<url-pattern>的配置,所以会去找tomcat服务器中的全局web.xml的配置。我们发现全局的web.xml配置文件中有关于a.jsp的<url-pattern>的配置内容:

根据上面这段配置我们就找到了JspServlet,这个JspServlet就是jsp引擎。它会把jsp文件转义成一个Java文件。我们可以查看tomcat安装目录下的路径:

Tomcat安装目录/work/catalina/localhost/jsp/org/apache/jsp

这个目录下有一个a_jsp.java和a_jsp.class两个文件。这就是tomcat帮我们把jsp文件转换成的Servlet类的源文件和.class文件。

我们平时在写Servlet时,会继承HttpServlet,然后覆盖service方法,但是我们发现这个a_jsp.java文件中没有service方法,但是有一个_jspService方法。其实,a_jsp类会继承org.apache.jasper.runtime.HttpJspBase类,这个HttpJspBase类有继承HttpServlet类,然后HttpJspBase类中的service方法,调用了_jspService(request, response)方法。到此,我们就知道了最后调用的还是a_jsp类中的_jspService方法。这也是整个a.jsp的核心执行流程。

1. page命令(page指令的作用:设置jsp在转译时的一些配置信息)

A) Page命令中的属性学习

1) <%@page language=”java”%>

声明jsp文件转译的语言,language=”java”的意思是转译为.java文件。

2) <%@page import=”java.util.*,java.lang.*”%>

上面的import属性还可以分开写:

<%@page import=”java.util.*”%>

<%@page import=”java.lang.*”%>

声明转译时导入的java包文件。

3) <%@page pageEncoding=”UTF-8”%>

设置Jsp的数据保存的编码格式

4) <%@page contentType=”text/html;charset=UTF-8”%>

设置数据的响应编码格式

注意:tomca帮我们把jsp文件转译为.java文件,我们查看.java文件时,发现其中有这样一行代码:response.setContentType(“text/html”);

pageEncoding=”UTF-8”和contentType=”text/html;charset=UTF-8”中的任何一个都可以让这行代码变成这样:

response.setContentType(“text/html;charset=UTF-8”);

5) <%@page session=”false”%>

设置session的状态,也就是转译成的.java文件中session是否开启。默认为true,是开启的,设置为false,session就是关闭的。

默认情况下是session=”true”,当session属性取默认值的时候,jsp文件对应的.java文件中会有这样一行代码:

javax.servlet.http.HttpSession session = null;

session = pageContext.getSession();

当我们设置为session=”false”后,.java文件中就没有了关于session的那两行代码。

6) <%@page isErrorPage=”true”%>

默认为false,如果设置为true,就等于开启异常对象的使用

7) <%@page errorPage=”error.jsp”%>

设置当本jsp页面出现异常或错误时,跳转到的指定页面。

B) 局部代码块、全局代码块、java脚本段(表达式)

1) 局部代码块<% Java代码 %>

局部代码块的特点:使用局部代码块声明的java代码会原样转译到_jspService方法中,也就是局部代码。

2) 全局代码块<%! java代码 %>

注意:全局代码块中声明的内容,到了jsp文件转译为.java文件时,会放在.java文件中的成员变量的位置,如上图中,我们就是声明了一个成员变量和一个成员方法,如果我们想调用test方法,应该在哪里调用呢?

我们应该在局部代码块中对test方法进行调用。<% test(); %>

1) Java脚本段(表达式)

声明方式:<%= 变量或调用方法 %>

作用:将java代码的运算结果数据或者其他数据响应给浏览器。一般是方法的调用或者变量。如果是调用方法,则把方法的返回值响应给浏览器。

注意:java脚本段中不能加分号”;”。

A) Jsp的注释

HTML注释:<!-- -->会被转译也会被响应给浏览器,但是浏览器不会执行。

CSS注释:/* */和HTML注释一样,会被转译也会被响应给浏览器,但是浏览器不会执行。

JavaScript注释://和/* */,同HTMl注释一样,会被转译也会被响应给浏览器,但是浏览器不会执行。

Java注释:会被转译,但是不会被执行。

Jsp注释:<%-- jsp注释 --%> 注释内容不会被转译,jsp的注释是最高级别的注释。

c标签判断true false jsp_北京尚学堂卓越班252天[第042天]——Jsp相关推荐

  1. c标签判断true false jsp_巧妙使用if(true)以及if(false)语句

    巧妙使用if(true)以及if(false)语句 作者:未知    文章来源:www.jspcn.net 发布日期:2005年01月19日 作者: ZDNET CHINA 特稿 调试代码的程序开发设 ...

  2. c标签判断true false jsp_Java学习知识点:小白如何掌握JSP技术?

    今天千锋广州小编就给大家分享零基础如何掌握JSP技术,下面一起来看看吧! 一.Java初级开发之jsp概述 1.关于jsp JavaServer Pages简称jsp,从"server&qu ...

  3. 北京尚学堂JAVASE课程

    北京尚学堂JAVASE课程 一.java历史-特点 1.计算机语言发展史 何为要发明计算机:为了进行科学计算,复杂的科学计算. 人类如何和计算机沟通,去分配任务. 通过计算机语言 实现 人类和计算机的 ...

  4. 学习python,北京尚学堂,第07课到第30课的个人的总结

    在学习了那几节课以后,又找了一个新的视频,北京尚学堂的百战程序员,感觉还挺全 链接:https://pan.baidu.com/s/12HT1UCkK9SHadn8zESZRFA  提取码:zc7l ...

  5. 北京尚学堂python 百度网盘_北京尚学堂_1903期_Python_全套视频教程(视频、源码、课件)...

    北京尚学堂_1903期_Python_全套视频教程(视频.源码.课件) |____尚学堂官网.url |____尚学堂_程序员修炼手册(电子版).url |____软件开发常用词汇(北京尚学堂发布). ...

  6. 北京尚学堂:献给奋斗在一线的“码农”

    2019独角兽企业重金招聘Python工程师标准>>> 版权声明:本文为北京尚学堂原创文章,未经允许不得转载. 很长一段时间以来,我们都在关注如何提高代码质量,也为此做过一些尝试,在 ...

  7. 北京尚学堂|程序员励志名言

    2019独角兽企业重金招聘Python工程师标准>>> 版权声明:本文为北京尚学堂原创文章,未经允许不得转载. 北京尚学堂科技有限公司 编者的话:作为一个真正的程序员,首先应该尊重 ...

  8. 北京尚学堂|程序员的智慧

    2019独角兽企业重金招聘Python工程师标准>>> 版权声明:本文为北京尚学堂原创文章,未经允许不得转载. 编程是一种创造性的工作,是一门艺术.精通任何一门艺术,都需要很多的练习 ...

  9. 北京尚学堂退课退课,口碑还不错

    解约协议书 甲方:北京尚学堂科技有限公司 统一社会信用代码:911101067855246634 乙方: 手机号: 甲方北京尚学堂科技有限公司与乙方 姓名 于 年 月 日签订的教育培训服务合同,乙方以 ...

最新文章

  1. pcl需要注意的编译问题
  2. 大型分布式系统中的缓存架构
  3. 每日两SQL(8),欢迎交流~
  4. dropbox_Google的新存储定价与Microsoft,Apple和Dropbox相比如何
  5. linux ospf 命令,OSPF单区域配置 - linuxprobe2020的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. [导入]ASP常用函数:getIMG()
  7. Node.js小Httpserver
  8. 计算火车运行时间(pta)
  9. Java 游戏报错 看不懂求教
  10. case when then 统计去重数据_数据分析--SQL求职面试题
  11. python实用技巧(二)
  12. Java多线程看着一篇足够了!
  13. html隐藏标签console,console的隐藏知识点,你get到了嘛?
  14. 多元函数泰勒展开与黑塞矩阵
  15. ExtJs6 为Ext.Img对象添加单机事件
  16. 微信小程序倒计时组件开发
  17. unity 暂停按钮_Unity通过按钮控制视频播放与停止
  18. java docx4j 合并word_如何使用docx4j在word中添加合并字段?
  19. 解决EZP_XPro无法烧录
  20. 卸载的软件电脑重启后又出现了,怎么办?

热门文章

  1. 技术案例分享:WIPTEC采用Aruba边缘服务平台,实现物流配送生产自动化、精简生产力
  2. OpenInfra 基金会积极推动开源项目在中国市场的发展与应用
  3. 任正非采访的数据分析解读
  4. SDN精华问答 | 使用SDN的一个例子
  5. oom 如何避免 高并发_【面试】如何避免OOM的发生
  6. 日期 java cal,日期系列教材 (三)- 如何使用Java的Calendar类
  7. html翻转切换div效果,图片翻转效果
  8. kibana-7.15.2 中文简体
  9. Shiro 实现免密登陆
  10. 使用idea创建JavaWeb项目