五、Javaweb之JSP详解

1.JSP的概念和特点
HTML语言用于网页中静态内容的显示,而在web开发过程中,页面的内容往往包含动态的内容展示。JSP是基于Java servlet的web开发技术,在HTML中嵌入Java脚本代码,由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本代码。然后将生成的整个页面信息返回给客户端。
JSP页面元素包括:
静态代码:HTML静态文本
声明:<%! 方法 %>
注释:
<%– 这也是注释,但客户端不能查看到 –%>
指令:以“<%@ ” 开始,以“%> ” 结束。比如:<%@ include file = ” Filename”% >
表达式:<%=Java表达式 %>
小脚本:<% Java 代码 %>
特点:
(1)适用于所有的平台
当一个应用程序从一个平台移植到另一个平台时,jsp代码不需要重新进行编译。而Java的字节码是与平台无关的。
(2)将程序逻辑和页面显示相分离
开发人员使用HTML来设计界面,使用jsp标签和脚本生成页面上的动态内容。在服务器端,jsp引擎解析jsp标签和脚本,生成请求内容,将结果以HTML形式返回到浏览器。
(3)采用标签化简化页面开发
(4)组件可重用
2.JSP运行机制
这里写图片描述
web容器处理jsp文件请求需要经历三个阶段,先将jsp文件翻译成Java文件,再编译成class文件,最后执行class文件。将执行的结果返回给客户端。
这里写图片描述
3.JSP脚本元素
(1)声明语句<%! 方法 %>
用于声明变量和方法<%! int a=3; %>
(2)表达式<%=Java表达式 %>
<%=是一个完整的符号,<%=a%>
(3)小脚本<% Java 代码 %>
4.JSP指令元素(以“<%@ ” 开始,以“%> ” 结束。比如:<%@ include file = ” Filename”% >)
(1)page
称为页面指令,用来定义jsp页面的全局属性,指定所使用的脚本语言、导入指定的类及软件包。
总共13个(language,extends,import,session,buffer,autoFlush,isThreadSafe,info,ErrorPage,isErrorPage,contentType,pageEncoding,isELIgnore),常用的page指令有8个:
1.<%@page language=”“%>设置jsp中用到的语言
2.<%@page extends=”“%>设置目前jsp要继承的父类,一般不需要设置,在默认情况下,jsp页面默认的父类是HttpJspBase。
3.<%@page import=”“% > jsp页面所用到的类
4.<%@page errorPage=”“%> 设置该jsp页面出现异常时所要转到的页面,如果没设定,容器将使用当前的页面显示错误信息
5.<%@page isErrorPage=”“%> 设置该jsp页面是否作为错误显示页面,默认是false,如果设置为true,容器则会在当前页面生成一个exception对象,和4拍配使用
6.<%@page contentType=”“%> 设置页面文件格式和编码方式
7.<%@page isThreadSafe=”“% > 设置容器以多线程还是单线程运行该jsp页面,默认是true,是多线程。设置为false,则以单线程的方式运行该jsp页面
8.<%@page session=”“% > 设置该jsp页面是否可以用到session对象(jsp内置对象,为web容器创建),默认是true,能用到session.设置为false,则用不到
(2)include
是文件的加载指令,向jsp文件中插入一个代码文件,把插入后的文件和原来的jsp文件合并成一个新的jsp文件。只有一个file属性:<%@ include file = ” login.jsp”% >
(3)taglib
用来引用标签库并设置标签库的前缀。
<%@ taglin uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%>
uri属性用来指定标签文件或标签库存在的位置
prefix用来指定该标签库所使用的前缀
5.JSP内置对象
JSP内置对象是 Web 容器创建的一组对象
JSP内置对象的名称是JSP 的保留字
JSP内置对象是可以直接在JSP页面使用的对象,无需使用“new”获取实例
JSP中一共预先定义了9个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception
(1)request对象
request(处理)客户端的请求信息。
(2)response对象
响应客户请求并向客户端输出信息
常用方法1.void sendRedirect (String location):将请求重新定位到一个不同的URL,即页面重定向
RequestDispatcher rd=request.getRequestDispatcher(“welcome.jsp”);
rd.forward(request,response);
(3)session对象
session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。
(4)application对象
application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。
(5)out 对象
out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。
(6)pageContext 对象
pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。
(7)config 对象
config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。
(8)page 对象
page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。
(9)exception 对象
exception 对象的作用是显示异常信息,只有在包含 isErrorPage=”true” 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。excepation对象和Java的所有对象一样,都具有系统提供的继承结构。exception 对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来处理异常情况; 如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。

6.JSP四大作用域
page (作用范围最小)、request、session、application(作用范围最大)。

page范围 在一个页面范围内有效,通过pageContext对象访问该范围内的对象
request范围 在一个服务器请求范围内有效,与客户端请求绑定一起
session范围 在一次会话范围内容有效,在会话期间与session绑定的对象皆属于该范围
application范围 在一个应用服务器范围内有效,当应用服务启动后即创建该对象,并向所有用户所共享
7.JSP动作元素

<jsp:forward>:请求的转发。相当于request.getRequestDispatcher(“”).foward(request,response);
<jsp:include>:动态包含。相当于request.getRequestDispatcher(“”).include(request,response);
<jsp:param>:参数传递。和<jsp:forward><jsp:include>配合使用用来传递参数。
<jsp:plugins>:在页面上引入java applet组件或javabean组件
以下三个标签用在  JavaBean的连接中。  JavaBean是软件构建,他可以在jsp中封装Java代码并从内容中分析出逻辑表达。
<jsp:useBean>:在页面上使用JavaBean类的对象。
<jsp:getProperty>:获取JavaBean中的属性值,相当于调用get方法
<jsp:setProperty>:向JavaBean的制定属性设置值,相当于调用set方法
  1. JavaBean:
    JavaBean是用Java语言描述的软件组件模型,可实现代码的重复利用,极大的简化编程设计。
    (1)是一个特殊的public类。
    (2) 属性的获取和设置使用标准格式定义getXXX()、setXXX()方法。
    (3)包含一个无参构造方法

猜你喜欢

转载自blog.csdn.net/simplehappiness7/article/details/81608364