2023年11月28日发(作者:)
JSP基础知识总结
JSP
JSP基础
jsp⼯作原理:web服务器(tomcatjboss等)先把jsp⽂件翻译成servlet的java⽂件,然后编译成字节码⽂件,就是.class⽂件,当客户
端访问的时候,服务器直接装载jsp对应的servlet的字节码⽂件。
基本语法
jsp的脚本
⼩脚本的格式:
<%
java代码
%>
表达式格式:
<%=表达式 %>
通过对编译后的java⽂件分析发现,表达式脚本的底层就是<% 定义变量的语句; (变量) %>
输出是相同的:
<% int i=10;
out.print(i);
%>
<%=i%>
声明格式:
<%! %> 表⽰定义全局变量和静态代码块,也可以声明⽅法。
成员变量我们直接在<% %>中定义即可。
<%! %>是我们⽤来声明全局变量、创建静态代码块、声明⽅法的地⽅。
2、请求到达服务器[IP地址和端⼝号]
3、服务器进⾏请求资源的定位 /pp/,如果不存在则直接对客户端响应404报错
4、如果存在,因为后缀是.jsp,所以服务器会调⽤jsp引擎将jsp⽂件转换为Servlet类⽂件[.java]
5、Tomcat调⽤Servlet引擎编译⽣成的.java⽂件,得到.class的字节码⽂件
6、Servlet引擎创建Servlet对象⽣成响应[html⽂档]
7、客户端接收到响应的html⽂档进⾏渲染显⽰
8` jsp是不能直接运⾏,jsp究其本质就是servlet
为什么jsp不能取代servlet?
1.当前,Java程序员还⽐较少。
2. JSP程序调试困难。jsp页⾯⾸先被转化为⼀个.java⽂件(servlet),然后再被编译。这样, 出错信息实际上指向的是经过转化的那个
.java⽂件⽽不是jsp本⾝。 例如在.jsp⽂件第⼀⾏的错误可能被显⽰为第20⾏。如果试图通过反跟踪来解决这个问题 有时会使结果显
得很滑稽。(但是,在Resin的引擎中,错误已经可以指向.jsp⽂件的出错⾏。) 你也可以使⽤⼀些集成设计⼯具IDE如VAJ或
JDeveloper,但这有悖于JSP简单易⽤这⼀基本特性。
3. 数据库连接并不那么容易。⼤多数servlet引擎并不⽀持本地的缓冲池连接。 因此,不得不写很多代码来完成这项⼯作。
4. 很难选择合适的servlet引擎。没有⼀个独⽴的组织来对各种引擎提供独⽴的benchmark测试。 提供商当然地对他们⾃⼰的产品提供
了benchmark测试,但结论通常以数据形式给出, 但均回避了稳定性。
JSP的三个指令
JSP相关技术,觉的要掌握的点还是⾮常多的,包括三个指令,六个动作,九个内置对象还有四⼤域对象等。下⾯就简单写⼀下我对三个指
令的理解。
JSP的三个指令:JSP指令是为JSP引擎⽽设计的,他们并不直接产⽣任何可见输出,⽽只是告诉引擎如何处理JSP页⾯中的其余部分
1. page 指令
作⽤ : ⽤于定义JSP页⾯的各种属性,告诉tomcat服务器如何翻译JSP⽂件。
属性:
① import 和java中的import 是⼀样的
<%@ page import=","%>
<%@ page import=""%>
<%@ page import=""%>
JSP会⾃动导⼊以下的包:
② session(会话): 是否会⾃动创建session对象。默认值是true;
③ buffer: JSP中有ter输出字符流。设置。输出数据的缓存⼤⼩,默认是8KB。
④ errorPage: 如果页⾯中有错误,则跳转到指定的资源。
errorPage="/uri" 如果写“/”则代表当前应⽤的⽬录下,绝对路径。
如果不写“/”则代表相对路径。
⑤ isErrorPage: 是否创建throwable对象。默认是false;
⑥ contentType: 等同于tentType(“text/html;charset=utf-8”);
⑦ pageEncoding: 告诉JSP引擎要翻译的⽂件使⽤的编码。
⑧ isELIgnored: 是否⽀持EL表达式。 默认是false
2. Include指令:
作⽤:在当前页⾯⽤于包含其他页⾯。
静态包含: 把其它资源包含到当前页⾯中,代码格式:
<%@ include file="/include/" %>
动态包含:
<jsp:include page="/include/">jsp:include>
3. taglib指令
作⽤:在JSP页⾯中导⼊JSTL标签库。替换jsp中的java代码⽚段。
<%@ taglib uri="/jsp/jstl/core" prefix="c" %>
六⼤页⾯动作
Include、 Forward、 UseBean、 GetProperty、 SetProperty、 Plugin
下⾯是每个动作的具体含义:
jsp:include:在页⾯被请求的时候引⼊⼀个⽂件。
jsp:useBean:寻找或者实例化⼀个JavaBean。
jsp:setProperty:设置JavaBean的属性。
page this 封装页⾯对象,该对象代表了正在运⾏的由JSP⽂件产⽣的类对象,相当于this。⼀般情况下不建议使⽤该对象
request ServletRequest,封装请求对象,代表的是来⾃客户端的请求HttpServletRequest。包括从GET/POST请求传递过来的参
数
response ServletResponse,封装响应对象,代表的是对客户端的响应HttpServletResponse。⽹页传回客户端的信息
application ServletContext,封装应⽤程序对象,负责提供应⽤程序在服务器中运⾏时的⼀些全局信息,是⼀个容器级的共享对象数
据
作⽤域⾥的变量,它的存活时间是最长的,如果不进⾏⼿⼯删除,它们就⼀直可以使⽤


发布评论