java牛马之路-21-jsp核心语法

1.什么是JSP

JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。JSP/Servlet规范。JSP实际上就是Servlet

JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据

1.jsp原理

2.jsp的作用

不管是JSP还是Servlet,虽然都可以用于开发动态web资源。但由于这2门技术有各自的特点,servlet只负责响应请求产生数据,并把数据通过转发技术带给jsp,数据的显示交给jsp来做, 在长期的软件实践中,人们逐渐把servlet作为web应用中的控制器组件来使用,而把JSP技术作为数据显示模板来使用。

3.JSP语法

1.JSP模板元素 JSP页面中的HTML内容称之为JSP模版元素。 JSP模版元素定义了网页的基本骨架,即定义了页面的结构和外观。

2.JSP脚本表达式 JSP脚本表达式(expression)用于将程序数据输出到客户端

语法:<%= 变量或表达式 %>

举例:当前时间:<%= new java.util.Date() %>(JSP脚本表达式中的变量或表达式后面不能有分号)

3.jsp脚本片段 JSP脚本片段,用于在JSP页面中编写多行Java代码。

语法:

<% 多行java代码 %>

JSP脚本片段中只能出现java代码,不能出现其它模板元素

JSP脚本片段中的Java代码必须严格遵循Java语法,例如,每执行语句后面必须用分号(;)结束。

4.JSP声明

JSP页面中编写的所有代码,默认会翻译到servlet的service方法中,而Jsp声明中的java代码被翻译到_jspService方法的外面

语法:

<% java代码 %>

5.JSP注释

JSP注释的格式:

<%-- 注释信息 --%>

JSP引擎在将JSP页面翻译成Servlet程序时,忽略JSP页面中被注释的内容.

6.JSP指令

JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。在JSP 2.0规范中共定义了三个指令:

page指令

include指令

taglib指令

语法:<%@ 指令 属性名="值" %>

举例:<%@ page contentType="text/html;charset=utf-8"%>

如果一个指令有多个属性,这多个属性可以写在一个指令中,也可以分开写。

<%@ page contentType="text/html;

charset=utf-8" import="java.util.Date"%>

也可以这样写

<%@ page contentType="text/html;charset=utf-8"%>

<%@ page import="java.util.Date"%>

7.九大内置对象四大作用域

每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理。JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet) ,然后按照servlet的调用方式进行调用。

由于JSP第一次访问时会翻译成servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所以程序的执行效率不会受到影响。

JSP引擎在调用JSP对应的jspServlet时,会传递或创建9个与web开发相关的对象供jspServlet使用。JSP技术的设计者为便于开发人员在编写JSP页面时获得这些web对象的引用,特意定义了9个相应的变量,开发人员在JSP页面中通过这些变量就可以快速获得这9大对象的引用

1九大内置对象

out对象:用于向客户端、浏览器输出数据-JspWriter request对象:封装了来自客户端、浏览器的各种信息-- HttpServletRequest response对象:封装了服务器的响应信息 -- HttpServletResponse exception对象:封装了jsp程序执行过程中发生的异常和错误信息-exception(只有在page指令中具有属性isErrorPage="true"时才有效) config对象:封装了应用程序的配置信息-config -- ServletConfig page对象:指向了当前jsp程序本身- 当前类 session对象:用来保存会话信息。也就是说,可以实现在同一用户的不同请求之间共享数- HttpSession application对象:代表了当前应用程序的上下文。可以在不同的用户之间共享信息-application -- ServletContext pageContext对象:提供了对jsp页面所有对象以及命名空间的访问-PageContext

2.四大作用域

page范围:只在一个页面保留数据(javax.servlet.jsp.PageContext(抽象类))

request范围:只在一个请求中保存数据(javax.servlet.httpServletRequest)

Session范围:在一次会话中保存数据,仅供单个用户使用(javax.servlet.http.HttpSession)

Application范围:在整个服务器中保存数据,全部用户共享(javax.servlet.ServletContext)

1.pageContext对象和作用域

pageContext对象是JSP技术中最重要的一个对象,它代表JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的引用,它自身还是一个域对象,可以用来保存数据

getException方法返回exception隐式对象

getPage方法返回page隐式对象

getRequest方法返回request隐式对象

getResponse方法返回response隐式对象

getServletConfig方法返回config隐式对象

getServletContext方法返回application隐式对象

getSession方法返回session隐式对象

getOut方法返回out隐式对象

pageContext封装其它8大内置对象的意义

2.pageContext作用域对象
1.pageContext对象的方法
public void setAttribute(java.lang.String name,java.lang.Object value)
​
public java.lang.Object getAttribute(java.lang.String name)
​
public void removeAttribute(java.lang.String name)
 
2.访问其它域的方法
public java.lang.Object getAttribute(java.lang.String name,int scope)
​
public void setAttribute(java.lang.String name, java.lang.Object value,int scope)
​
public void removeAttribute(java.lang.String name,int scope)

3.代表各个域的常量

PageContext.APPLICATION_SCOPE

PageContext.SESSION_SCOPE

PageContext.REQUEST_SCOPE

PageContext.PAGE_SCOPE

8.jsp中include 的两种用法

1、两种用法

静态include: <%@ inlcude file =”header.jsp” %>

此时引入的是静态的jsp文件,它将引入的jsp中的源代码原封不动地附加到当前文件中,所以在jsp程序中使用这个指令的时候file里面的值(即要导入的文件)不能带多余的标签或是与当前jsp文件重复的东西。例如里面不要包含这样的标签,因为是把源代码原封不动的附加过来,所以会与当前的jsp中的这样的标签重复导致出错。

动态include:

此时引入执行页面或生成的应答文本.jsp:include标签导入一个重用文件的时候,这个文件是经过编译的,通俗点说就是附加这个要导入文件经过编译后的效果,所以可以含有与当前jsp程序中重复的内容,因为在附加过来之前就会被解析掉。其中flush 表示在读入包含内容之前是否清空任何现有的缓冲区。

2、include页面携带入参

解释<jsp:include page=”header.jsp” flush=”true”>
        <jsp: param name=”shuui”value=”2”/>
<jsp:include>
​
<jsp:param name = "" value="">是将值传给被包含页面(即header.jsp),可通过<%=request.getParameter("shuui")%>获取
12345

3、两种用法的区别

区别includejsp:include
执行时间翻译阶段在请求处理阶段执行
引入的内容引入静态文本,先包含后编译引入执行页面或servlet所生成的应答文本. 被包含的文件先编译,后包含进来,然后显示

翻译阶段: jsp页面不能原封不动地被传送给浏览器,全部的jsp元素都必须首先由服务器进行处理。这是通过将jsp页面转达化成servlet,然后执行这个servlet来结束的。服务器需要一个jsp容器来处理jsp页面。jsp容器平常以servlet的形式来实现,这个servlet经过配置,可以处理对jsp页面的全部请求。

Jsp容器同时将jsp页面转化成servlet(称为jsp页面实现类—JSP Page implementation class),并编译这个servlet。这两步就组成了翻译阶段。

请求处理阶段: Jsp容器除了上面提到的同时将jsp页面转化成servlet外,还同时调用jsp页面实现类以处理每个请求并产生应答,这个阶段我们就称为请求处理阶段,请求处理阶段仅执行类文档。

  • 30
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值