JSP概要

1、  JSP工作原理

JSP是一种servlet,但工作方式不一样。HttpServlet是先由源代码编译为class文件后部署到服务器下的,先编译后部署。而JSP则是先部署源代码后编译为class文件的,现部署后编译。

JSP在客户端第一次请求的时候JSP文件会被编译为HttpJspPage类(接口Servlet的一个子类)。该类会被服务器临时存放在服务器工作目录里面。(tomcat\work\Catalina\localhost\jsp\org\apache\jsp)。

 

2、  JSP生命周期

servlet的生命周期一样,但还有自己的初始化方法_jspInit()和销毁方法jspDestory()

 

3、  JSP语法

jsp脚本:<%  %>

jsp输出:<%=  %>

jsp注释://  /* */ <%-- --%>

条件语句与java一样,if else,while,for,return,break

 

4、  JSP指令

page指令

http://www.cnblogs.com/elleniou/archive/2012/09/09/2678101.html

<% page trimDeiectiveWhitespaces=”true|false”%>取消输出指令的前后的空白字符

include指令

<%@ include file=”relativeRUL”%>,先包含后编译

另一种包含文件的行为

<jsp:include page=”relativeURI”/>,先运行后包含

taglib指令

指明JSP页面内使用的JSP标签库,有两个属性,uri为类库地址,prefix为标签前缀。

<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %> 

5、  JSP行为

标准的JSP行为格式<jsp:elements {attribute=”value”}*/>

<jsp:include/>行为

<jsp:include flush=”true” page=”relativeURI”></jsp:include>

使用request.getRequestDispatcher(“relativeURI”).forwaard(request,response)来执行被包含的文件。

使用Java BeanPOJO

useBeanJSP页面中定义一个JavaBean

<jsp:useBean id=”beanId” class=”className”scope=”Value”/>

<jsp:getProperty name=”beanName”property=”protertyName”/>

<jsp:setProperty name=”beanName”property=”propertyName” value=””/>

<jsp:forward/>行为

对应servlet中的request.getRequestDispatcher(“relativeURI”).forwaard(request,response),对其方法的一种封装

<jsp:forward page=”/somePage.jsp”>

         <jsp:paramname=”param1” value=”value1”/>

         <jsp:paramname=”param2” value=”value2”/>

</jsp:forward>

<jsp:directive/>行为

相当于jsp指令

<jsp:directive.page/>==<%@page%>

<jsp:directive.include/>==<%@include%>

<jsp:directive.taglib/>==<%@taglib%>

 

6、  JSP隐藏对象

out输出流对象

request请求对象

response响应对象

config配置对象:配置在web.xml中初始化JSP的参数

session会话对象

application应用程序对象

page页面对象,代表当前JSP页面,是当前JSP编译后的Servlet类的对象。相当于普通Java类的this

pageContext页面上下文对象,代表当前JSP页面编译后的内容,通过pageContext能够获取到JSP中的资源。

exception异常对象

要使用exception隐藏对象,需要设置<%@page isErrorPage=”true” %>,经常失败,不推荐使用。

7、  JSP配置

<servlet>

       <servlet-name>demo</servlet-name>

       <jsp-file>/WEB-INF/hello.jsp</jsp-file>   //WEB-INF前必须有/ ,表示从根目录开始

         <init-param>

                   <param-name>message</param-name >

                   <param-value>messagevalue</ param- value >

         </init-param >

<init-param>

                   <param-name>encoding</param-name >

                   <param-value>utf-8</param- value >

         </init-param >

</servlet>

<servlet-mapping>

      <servlet-name>demo</servlet-name>

      <url-pattern>/hello.lxh</url-pattern>         //此文件名可任意起,后缀名也可任意

</servlet-mapping>

<jsp-config>标签,在web.xml中支持对jsp的批量配置。

来自:http://janwer.iteye.com/blog/150217/

<jsp-config> 包括 <taglib>  <jsp-property-group> 两个子元素。其中<taglib> 元素在JSP 1.2 时就已经存在;而<jsp-property-group> JSP 2.0 新增的元素。<jsp-property-group> 元素主要有八个子元素,它们分别为: 
1.<description>
:设定的说明 
2.<display-name>
:设定名称 
3.<url-pattern>
:设定值所影响的范围,如: /CH2  /*.jsp
4.<el-ignored>
:若为 true,表示不支持 EL 语法 
5.<scripting-invalid>
:若为 true,表示不支持 <% scripting %>语法 
6.<page-encoding>
:设定 JSP 网页的编码 
7.<include-prelude>
:设置 JSP 网页的抬头,扩展名为 .jspf
8.<include-coda>
:设置 JSP 网页的结尾,扩展名为 .jspf

 

一个简单的<jsp-config> 元素完整配置: 

 

Xml代码                               spacer.gif

1.<jsp-config>     

2.  <taglib>     

3.    <taglib-uri>Taglib</taglib-uri>     

4.    <taglib-location>/WEB-INF/tlds/MyTaglib.tld</taglib-location>     

5.  </taglib>     

6.  <jsp-property-group>     

7.    <description>Special property group for JSP Configuration JSP example.</description>     

8.    <display-name>JSPConfiguration</display-name>     

9.    <url-pattern>/jsp/* </url-pattern>     

10.    <el-ignored>true</el-ignored>     

11.    <page-encoding>GB2312</page-encoding>     

12.    <scripting-invalid>true</scripting-invalid>     

13.    <include-prelude>/include/prelude.jspf</include-prelude>     

14.    <include-coda>/include/coda.jspf</include-coda>     

15.  </jsp-property-group>     

16.</jsp-config>  

 

对于Web 应用程式来说,Scriptlet 是个不乐意被见到的东西,因为它会使得HTML Java 程式码交相混杂,对于程式的维护来说相当的麻烦,必要的时候,您可以在web.xml 中加上<script-invalid> 标签,设定所有的JSP 网页都不可以使用Scriptlet ,例如:

Xml代码  spacer.gif

1.<web-app ..>  

2.    ....  

3.    <jsp-config>  

4.        <jsp-property-group>  

5.            <url-pattern>*.jsp</url-pattern>  

6.            <script-invalid>true</script-invalid>  

7.        </jsp-property-group>  

8.    </jsp-config>  

9.....  

10.</web-app>  

 

8、  EL表达式

${},用来方便的读取对象,是写在html代码中的,不能写在jsp的脚本中<%%>

EL表达式能方便的操作JavaBean,甚至集合等,并支持简单的运算,但是不能直接访问普通的方法,以及静态属性。

 类别              隐含对象              描述

  JSP                pageContext           当前jspjavax.servlet.jsp.PageContext对象

  作用域           pageScope             页面范围内所有对象的集合

               requestScope          所有请求范围内的对象集合

               sessionScope          所有会话范围内的对象集合

               applicationScope    应用程序范围内的对象变量组成的集合

请求参数           param                   所有请求参数字符串组成的集合

                 paramValues          所有作为字符串集合的请求参数

请求头              header                   http请求头部,字符串

                headerValues          http请求头部,字符串集合

cookie               cookie                   所有cookie组成的集合

初始化参数       initParam                     全部引用程序参数名组成的集合

 


你可能感兴趣的:(jsp,概要)