标签:vax jsp原理 请求 因此 运行 维护 symbol inux 安全
一.JSP原理:
原因分析:
当我们通过浏览器访问1.jsp时,服务器首先将1.jsp翻译成一个_1_jsp.class,在Tomcat服务器的work\Catalina\localhost\项目名\org\apache\jsp
目录下可以看到_1_jsp.class的源代码文件_1_jsp.java
我们可以看到,_1_jsp这个类是继承 org.apache.jasper.runtime.HttpJspBase这个类的,通过查看Tomcat服务器的源代码,可以知道在apache-tomcat-8.0.36-src\java\org\apache\jasper\runtime目录下存在HttpJspBase这个类的源代码文件,如下图所示:
HttpJspBase类是继承HttpServlet的,所以HttpJspBase类是一个Servlet,而_1_jsp又是继承HttpJspBase类的,所以_1_jsp类也是一个Servlet,所以当浏览器访问服务器上的1.jsp页面时,其实就是在访问_1_jsp这个Servlet,_1_jsp这个Servlet使用_jspService这个方法处理请求。
二。
第一次执行:
*.jsp
文件。*.jsp
文件通过转换变为*.java
文件。*.java
文件经过编译后,形成*.class
文件。*.class
文件。第二次执行:
*.class
文件,所以不在需要转换和编译的过程。修改后执行:
三。JSP基础语法:
1.JSP脚本表达式
<%= 变量或表达式 %> 作用:脚本表达式,它的作用就是向浏览器输出数据
2.脚本片段:
<% 多行java代码 %> 在<% %>
中可以定义变量、编写语句,但不能定义方法
3.JSP声明:
<%! java代码%> JSP页面中编写的所有代码,默认会翻译到servlet的service方法中, 而Jsp声明中的java代码被翻译到_jspService方法的外面
(1) page 指令 include指令 taglib指令
(2) JSP指令的基本语法格式: %@ 指令 属性名="值" %>
(3). page指令
page指令用于定义JSP页面的各种属性,无论page指令出现在JSP页面中的什么地方,它作用的都是整个JSP页面,
为了保持程序的可读性和遵循良好的编程习惯,page指令最好是放在整个JSP页面的起始位置
属性:
<jsp:include>指令 动态包含
面试题:静态包含和动态包含有什么区别? 答:静态包含是在编译时包含,会把包含到的所有jsp编译成一个Servlet。而动态包含是运行时包含,包含过程中,涉及到的所有jsp对应单独的一个Servlet。而且静态包含性能好的多。
(5)..taglib指令
taglib指令用于在JSP页面中导入标签库。
注意:
四.jsp运行原理和九大隐式对象
1.运行原理:
每个JSP页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理。JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet) ,然后按照servlet的调用方式进行调用。
2.九大隐式对象:
No. | 内置对象 | 类型 |
---|---|---|
1 | pageContext | javax.servlet.jsp.PageContext |
2 | request | javax.servlet.http.HttpServletRequest |
3 | response | javax.servlet.http.HttpServletResponse |
4 | session | javax.servlet.http.HttpSession |
5 | application | javax.servlet.ServletContext |
6 | config | javax.servlet.ServletConfig |
7 | out | javax.servlet.jsp.JspWriter |
8 | page | java.lang.Object |
9 | exception | java.lang.Throwable |
五。* jsp属性范围
No. | 方法 | 描述 |
---|---|---|
1 | public void setAttribute(String name,Object value) | 设置属性 |
2 | public object getAttribute(String name) | 取得属性 |
3 | public void removeAttribute(String name) | 删除属性 |
<jsp:include>
标签其语法为:
<jsp:include page="relativeURL | <%=expression %>" flush="true|false" />
<jsp:forward>
标签其语法为:
<jsp:forward page="relativeURL | <%=expression%>" />
<jsp:param>
标签 语法1
<jsp:include page="relativeURL | <%=expression%>">
<jsp:param name="parameterName" value="parameterValue|<%= expression %>" />
</jsp:include>
语法2
<jsp:forward page="relativeURL | <%=expression%>">
<jsp:param name="parameterName" value="parameterValue|<%= expression %>" />
</jsp:include>
标签:vax jsp原理 请求 因此 运行 维护 symbol inux 安全
原文地址:https://www.cnblogs.com/betterprimebestus/p/8901409.html