1.jsp对比Servlet
Servlet
优点:逻辑处理方便
缺点:页面表现麻烦
jsp
优点:页面表现方便
缺点:逻辑处理麻烦
2.jsp简述
jsp是一种动态网页技术(动态生成网页数据,而不是有动态效果的网页)
Jsp就是servlet, 所以jsp也是java类,通过jsp引擎把jsp转译成了servlet
jsp = java+html
3.jsp执行过程
tomcat收到*.jsp请求,则会到org.apache.jasper.servlet.JspServlet处理(tomcat的web.xml中有配置)
JspServlet调用相应的java类,及jsp引擎根据hi.jsp生成的java类(位于:tomcat子目录work下面:hi_jsp.java, hi_jsp.class)。
执行hi_jsp.class。将HTML数据输出给tomcat。Tomcat再将这些数据输出给客户端。
4.jsp语法
编译器指令
include, page, taglib
如:
<%@ page contentType="text/html; charset=GBK"%>
<%@ page import="java.util.*, java.lang.*" %>
<%@ page errorPage="error.jsp" %>
脚本语法
注释
<!--…-->Servlet中会生成,会发给浏览器
<%--…--%>Servlet中不生成,不发给浏览器
声明
<%!...%>
表达式
<%=…%>
Java脚本段
<%...%>
动作语法
<jsp:forward> 用于请求转发(标签以后的代码将不会执行)
例:<jsp:forward page="myjsp.jsp"><jsp:param name="a" value="AAA"/></jsp:forward>
<jsp:include>:动态导入界面
例:<jsp:include page="myjsp.jsp"><jsp:param name="a" value="AAA"/></jsp:include>
注意:中间不加参数时,不要加任何内容,包括空格,否则会报错
<jsp:useBean>
<jsp:getProperty> <jsp:setProperty>用于读写bean属性
5.jsp页面导入
静态导入
<%@ include file="相对位置" %>
在jsp引擎转译时,就把此文件内容包含了进去(两个文件的源代码整合到一起,全部放到_jspService方法中),
所以只生成了一个servlet,所以两个页面不能有同名的变量。
动态导入
<jsp:include page=“logo.jsp”></jsp:include>
在servlet引擎转译后,请求的此页面,所以共生成了两个servlet,所以可以有同名变量
<@include>运行效率稍高一点,耦合性较高,不够灵活
<jsp:include>生成两个servlet,相当于两个类之间的调用,耦合性较低,非常灵活。
6.JavaBean
用于封装数据
基本元素:属性 相应的getter,setter方法 空的构造函数
7.九大内置对象
request:请求对象
response:响应对象
pageContext:页面上下文对象,封装了当前jsp页面的运行信息,提供了返回jsp页面的其他隐式对象的方法
session:会话对象,使用如:购物车,客户轨迹跟踪
application:应用程序对象,提供全局信息,就是servlet中的servletContext对象,常用的方法有getMimeType和getRealPath等
out:输出对象:代表了向客户端发送数据的对象 PrintWriter out = response.getWriter();(out对象内部包含了一个缓冲区)
config:配置对象:提供一些配置信息,常用的方法有getInitParameter和getInitParameterNames,以获得Servlet初始化时的参数。
page:页面对象:代表了jsp文件正在运行的由jsp文件产生的类的对象
exception:例外对象
代表了JSP文件运行时所产生的例外对象,此对象不能在一般JSP文件中直接使用,而只能在使用了“<%@ page isErrorPage="true "%>”的JSP文件中使用