JavaWeb之JSP

1.JSP是什么: 

JSP(Java Server Pages )是Java服务器页面,是一种跨平台的动态网页技术标准,由Sun Microsystems公司倡导、多家公司参与建立。它在HTML文件中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。

2.JSP和Servlet在web应用中的角色:

servlet作为web应用中的控制器组件来使用,而把JSP技术作为数据显示模板来使用。其原因为,程序的数据通常要美化后再输出:    1.让jsp既用java代码产生动态数据,又做美化会导致页面难以维护。     2.让servlet既产生数据,又在里面嵌套html代码美化数据,同样也会导致程序可读性差,难以维护。 因此最好的办法就是根据这两门技术的特点,让它们各自负责各的:     1.servlet只负责响应请求产生数据,并把数据通过转发(不能重定向)技术带给jsp     2.数据的显示jsp来做。

3.JSP运行原理

WEB容器(Servlet引擎)接收到以.jsp为扩展名的URL的访问请求时,它将把该访问请求交给JSP引擎去处理。Tomcat中的JSP引擎就是一个Servlet程序,它负责解释和执行JSP页面。网络服务器需要一个JSP引擎,也就是一个容器来处理JSP页面。容器负责截获对JSP页面的请求。Apache Tomcat使用内嵌JSP容器的来支持JSP开发。

4.执行过程:

JSP的执行过程主要可以分为以下几点:    1.客户端发出请求;  2.Web容器将JSP转译成Servlet源代码;  3.Web容器将产生的源代码进行编译;  4.Web容器加载编译后的.class文件;    5.执行.class文件;  6.把执行结果响应至客户端; 

5.JSP语法:

      脚本程序的语法格式:<% 代码片段 %> 脚本程序可以包含任意量的Java语句、变量、方法或表达式,只要它们在脚本语言中是有效的。任何文本、HTML标签、JSP动作元素不能写在<% %>里面。JSP表达式    

JSP表达式的语法格式:<%= 表达式 %>     一个JSP表达式中包含的脚本语言表达式,先被转化成String,然后插入到表达式出现的地方。     由于表达式的值会被转化成String,所以可以在一个文本行中使用表达式而不用去管它是否是HTML标签。     表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分号来结束表达式。

JSP指令用来设置与整个JSP页面相关的属性。 JSP指令语法格式:<%@ directive attribute="value" %>

三种常用指令标签:

指令

描述

<%@ page ... %>

定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等

<%@ include ... %>

包含其他文件

<%@ taglib ... %>

引入标签库的定义,可以是自定义标签

JSP行为标签基本上是一些预先就定义好的函数,下表列出了一些可用的JSP行为标签: 

语法

描述

jsp:include

在页面被请求的时候引入一个文件。

jsp:useBean

装载一个将在JSP页面中使用的JavaBean。

jsp:setProperty

设置 JavaBean组件的值

jsp:getProperty

输出某个JavaBean的属性。

jsp:forward

从一个JSP文件向另一个文件传递一个包含用户请求的request对象

jsp:plugin

用于在生成的HTML页面中包含Applet和JavaBean对象

jsp:element

定义动态XML元素

jsp:attribute

定义动态创建的XML元素的属性

jsp:body

定义动态创建的XML元素的主体

jsp:text

用于封装模板数据

JSP运算符 JSP支持所有Java逻辑和算术运算符。 下表罗列出了JSP常见运算符,优先级从高到底: 

类别

操作符

结合性

后缀

() [] . (点运算符)

左到右

一元

++ - - ! ~

右到左

可乘性

* / % 

左到右

可加性

+ - 

左到右

移位

>> >>> <<  

左到右 

关系

> >= < <=  

左到右

相等/不等

== != 

左到右

位与

左到右

位异或

左到右

位或

左到右

逻辑与

&& 

左到右

逻辑或

|| 

左到右

条件判断

?: 

右到左

赋值

= += -= *= /= %= >>= <<= &= ^= |= 

右到左

逗号 

左到右 

JSP 字面量 JSP语言定义了以下几个字面量: 布尔值(boolean):true 和 false; 整型(int):与 Java 中的一样; 浮点型(float):与 Java 中的一样; 字符串(string):以单引号或双引号开始和结束; Null:null。 

6.JSP 隐式对象

     JSP 隐式对象作用范围

request对象    

request对象是javax.servlet.http.HttpServletRequest 类的实例。每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求。     request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等等。 

response对象    

response对象是javax.servlet.http.HttpServletResponse类的实例。当服务器创建request对象时会同时创建用于响应这个客户端的response对象。     response对象也定义了处理HTTP头模块的接口。通过这个对象,开发者们可以添加新的cookies,时间戳,HTTP状态码等等。 

session对象  

session对象是 javax.servlet.http.HttpSession 类的实例。和Java Servlets中的session对象有一样的行为。   session对象用来跟踪在各个客户端请求间的会话。

application对象  

application对象直接包装了servlet的ServletContext类的对象,是javax.servlet.ServletContext 类的实例。 这个对象在JSP页面的整个生命周期中都代表着这个JSP页面。这个对象在JSP页面初始化时被创建,随着jspDestroy()方法的调用而被移除。   通过向application中添加属性,则所有组成web应用的JSP文件都能访问到这些属性。 

out对象    

out对象是 javax.servlet.jsp.JspWriter 类的实例,用来在response对象中写入内容。     最初的JspWriter类对象根据页面是否有缓存来进行不同的实例化操作。可以在page指令中使用buffered='false'属性来轻松关闭缓存。     JspWriter类包含了大部分java.io.PrintWriter类中的方法。不过,JspWriter新增了一些专为处理缓存而设计的方法。还有就是,JspWriter类会抛出IOExceptions异常,而PrintWriter不会。

方法

描述

out.print(dataType dt)

输出Type类型的值

out.println(dataType dt)

输出Type类型的值然后换行

out.flush()

刷新输出流

config对象  

config对象是 javax.servlet.ServletConfig 类的实例,直接包装了servlet的ServletConfig类的对象。   这个对象允许开发者访问Servlet或者JSP引擎的初始化参数,比如文件路径等,它不是很重要,所以不常用. 以下是config对象的使用方法:   config.getServletName() : 返回包含在<servlet-name>元素中的servlet名字   config.getParameter(key) : 返回web.xml中配置的key对应的初始化参数

pageContext 对象  

pageContext对象是javax.servlet.jsp.PageContext 类的实例,用来代表整个JSP页面。   这个对象主要用来访问页面信息,同时过滤掉大部分实现细节。   这个对象存储了request对象和response对象的引用。application对象,config对象,session对象,out对象可以通过访问这个对象的属性来导出。   pageContext对象也包含了传给JSP页面的指令信息,包括缓存信息,ErrorPage URL,页面scope等。   PageContext类定义了一些字段,包括PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE, APPLICATION_SCOPE。它也提供了40余种方法,有一半继承自javax.servlet.jsp.JspContext 类。   其中一个重要的方法就是removeArribute(),它可接受一个或两个参数。比如:   pageContext.removeArribute("attrName")移除四个scope中相关属性 , 但是下面这种方法只移除特定scope中的相关属性:   pageContext.removeAttribute("attrName", PAGE_SCOPE);

page 对象

这个对象就是页面实例的引用。它可以被看做是整个JSP页面的代表。 page 对象就是this对象的同义词。

exception 对象

exception 对象包装了从先前页面中抛出的异常信息。它通常被用来产生对出错条件的适当响应。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值