`

JSP总结

 
阅读更多

                                          JSP总结

<!--[if !supportLists]-->1.       <!--[endif]-->基础

<!--[if !supportLists]-->1)  <!--[endif]-->注释:

HTML注释:<!—xxxxx  --->

JSP注释: <%--  xxxxx     -- %> 

    2)JSP表达式:每次请求时都计算并发送到客户程序

       <%= Java value      %>

3)JSP脚本:每次请求页面时执行一个或多个语句(放到serivces的方法中)

        <%   Java Statement      %>

4)JSP声明:在页面生成Servlet时,成为类定义的一部分的字段或方法

       <%!   Field Definition   %>

<%!   Method Definition   %>

<!--[if !supportLists]-->2.       <!--[endif]-->JSP指令

主要包括Servlt代码的高层结构信息(page),页面转换期间引入的代码(include)和采用定制的标签库(taglib)。其格式为:

    <%@  directive att = ”val”  %>

<!--[if !supportLists]-->1)      <!--[endif]-->Page指令

Page指令可以定义的属性有import,contentTypepageEncodingsessionisELIgnoredbufferautoFlushinfoerrorPageisErrorPageisTreadSafelanguageextends

Input属性:主要引入JSP中要用到的类库或自定义类;格式为<@page import=”java.util.*”>

Session属性:控制页面是否参与会话,默认为true,表示如果存在己有会话,则预定义变量sesseion应该绑定到现在的会话;否则创建新的会话,若为false,表示不自动创建会话,JSPservlet时,对session的访问会导致错误。

contentType属性:设置Content-Type响应报头,表明发送到客户程序的文档的MIME类型。

pageEncodeing属性:表示JSP页面的字符集。

isELIgnored属性:是否忽略JSP表达式语言

buffer属性:指定out变量使用的缓冲区大小,默认大小与服务器有关。格式为:

<% page @ buffer=”sizekb”%>

autoFlush属性:控制当缓冲区充满之后,是否自动清空缓冲区,默认为true

Info属性:对应servletgetServeltInfo方法获取的值。

errorPage:指定当前页面抛出示处理的异常时,跳转到的出错的页面。

isErrorPage:指示当前页面是否可以作为其他JSP页面的错误页面。

 

<!--[if !supportLists]-->2)      <!--[endif]-->include指令:

可以在主JSP文档转换成sevlet时(一般是在首次被访问时),将文件包含到文档。其格式为 <%@ include file=”Relative URL”%>。其这jsp::inlude的区别见后面介绍。

 

3taglib指令:

 

<!--[if !supportLists]-->3.       <!--[endif]-->JSP动作:

页面被请求时采取的动作,主要有include动态包含(jsp::include),useBean动作(jsp::useBeanjsp::setPropertyjsp::getProperty),param动作(jsp::param传递参数)forward动作(jsp::forward),plugin动作(,jsp::plugin)。

<!--[if !supportLists]-->1)  <!--[endif]-->jsp::include动作

请求期间将其他页面的输出也含进来。优点是在被包含页面发生更改时,无需对主页面做出修改,缺点包含的是次级页面的输出而非实际代码,在被包含的页面中不能使用任何有可能影响总体上影响主页面的JSP构造。

   格式:〈jsp::include page=” URL “ flush=”true/false” />  注意如果URL不以”/”开头,则解释为相应于主页面的位置,以“/”开对则解释为相当web应用的根目录(不是相对服务器的根目录)。

 

jsp:includeinclude的区别:

 

 

jsp::include

incude指令

语法的基本形式

<jsp::include page=”” />

<%@ include file=”” %>

动作的时间

请求期间

页面转换期间

产生多少个sevlet

两个(主页面和被包含页面都会产生

一个(被包含页面被插入到主页面中,得到的新页面生成sevlet

被包含页面中是否影响主页面的响应报头

不可以

可以

被包含页面是否可以定义主页面使用的字段和方法

不可以

可以

被包含页面发生更改时是否需要更新新页面

不需要

需要(但是很难实现,所以不好用)

 

<!--[if !supportLists]-->2)  <!--[endif]-->useEban动作:

jsp:useBean:

       构建一个新的bean,格式<jsp:useBean  id=”beanName”  class=”package.class(完全限定路径)” scope=”request/session/application” />

       示例: <jsp:Bean id=”book” class=”mypack.Book” />

ó <% myPack.Book book = new mypack.Book()%>

jsp::setPeoperty

修改bean的属性

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

       示例:〈jsp:setProperty name=”book” property=”title” value=”Java” />

          ó <% book.setTitle(“java”);%>

jsp::getProperty

       获取或输出bean的某一属性。格式为:

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

       示例:〈jsp:getProperty name=”book” property=”title” />

          ó <%= book.getTitle(“java”); %>

 

<!--[if !supportLists]-->3)      <!--[endif]-->jsp::param(jsp:params)动作

增加请求的参数。格式为:

        <jsp:params>

               <jsp:param name=”paramName1” value=”paramValue1” />

<jsp:param name=”paramName2” value=”paramValue2” />

       </jsp:params>

 

4)jsp:forward动作

       转发请求,格式

       <jsp:forward page=”url”>

        <jsp:param name=”paramName1” value=”paramValue1” />

<jsp:param name=”paramName2” value=”paramValue2” />

       </jsp:forward>

 

5jsp;plugin动作

 

<!--[if !supportLists]-->4.       <!--[endif]-->JSP九大内置对像

OutrequestresponsesessionapplicationpageconfigexceptionpageContext

 

5. 服务端跳转的两种方法对比:

1<jsp:forward page="xxx.jsp"/>:等价于

request.getRequestDispatcher("xxx.jsp").forward(request,response);本服务器的资源跳转,效率更高.地址栏不改变(仍为跳转前的页面).可得到request属性值.

2response.sendRedirect("xxx.jsp"):

重定向到任意资源.地址栏改为当前页面.无法得到request属性值.

3)客户端的跳转方式:

1).使用form表单的action属性设置要跳转的页面(此方法可以将此页面的form表单属性值传递到下一页面):如下

<form action="my.jsp" name="lili" onsubmit="return test()">

<input type="submit" value="提交">

或者(button类型需要手动提交表单):

<input type="button" value="注册" onclick="test()">

javascript的函数:

function test(){

    //手动设置跳转页面

     document.lili.action="my1.jsp";

    document.lili.submit();

}

2).使用javascript中的页面跳转的方法(不能将form表单中的属性值传递到下一页面):

window.location.href="my.jsp";

window.location.replace("my.jsq");//此方法不可将页面后退.

 

<!--[if !supportLists]-->5.       <!--[endif]-->表达式语言:

<!--[if !supportLists]-->1)  <!--[endif]-->表达式语言的形式:

${ expression }

如果希望 ${ 出现在页面的输出中,在JSP页面中需要使用 \${ 转义,如果希望在表达式中使用单引号或双引号,则使用“ \’ 和“ \”

<!--[if !supportLists]-->2)  <!--[endif]-->用表达式语言访问作用域变量

%{name}

         PageContext, HttpSevletRequest,HttpServletResponse,HttpSessionServletConext中按顺序查找name的属性。

 

<!--[if !supportLists]-->3)  <!--[endif]-->访问bean的属性

%{beanName.propertyName}

         %{ custeomer.firstName }:访问custemer对象的firstName属性;也可以用数组记法访问bean属性,如%{ custeomer[“firstName”] }

 

<!--[if !supportLists]-->4)      <!--[endif]-->访问集合

使用 ${ attribteName[entryName] }的方式访问集合中的项

如果是数组,${theArray[index]}  ${customerNames[0]}

如果是实现了List接口的对象,theList.get(index) => ${theList[index]}

如果是实现了Map的接口,theMap.get(key) => %{theMap[key]}

 

<!--[if !supportLists]-->5)      <!--[endif]-->引用隐式对象

pageContet:引用当前页面的pageContext,如输出当前对话的ID ,${pageContext.session.id}

paramparamValuts:允许我们访问基本的请求参数(param)或请求参数值的数组(paramValues;

headerhaedValues:分别访问HTTP请求报头的主要值及全部值,如${header.Accept}${header[“Accepted”]},若点号后面的值不能作为合法的名称,则不能用点号记法。如访问header”Acctept-Encoding”报头,就必须用${header[“Accept-Encoding”]}

cookie:允许我们快捷地引用输入cookie,如%{cookie.user.value}%{cookie”.[user”].value}

initParam:允许我们容易地访问上下文初始化参数,如${initParam.defaultColor}

       pageScope, reuqestScope, sessionScope,applicationScope;允许我们限定系统在什么地方查找作用域变量,如${requestScope.name} 只会在request中查找name的值。

 

6)表达式语言中的运算符

算术运算符:

       + - :常规的加减运算,需要注意的是,第一,任一操作数为字符串,则字符串会被自动解析成数值;第二,任一参数为BigIntegerBintegerDecimal类型,系统会使用相应的add,subtract方法;

       */div:常规的乘除法运算,类型自动转换,常规运算优先依然适用,/div等同的;

       % mod:计算模数,和Java编程语言中的%相同。

 

关系运算符

 == eq :类似于Javaequals方法;

 != ne:检查参数是否相同,类似于equals的否定式;

 < lt  > gt <= le >=ge:标准的关系运算符

 

逻辑运算符

 &&  and  ||  or  !  not :标准的ANDORNOT运算符,使用短求值

 

空运算

Empty:如果运算符的参数为null,空字符串,空map,或空集合,返回true,否则返回false

 

表达式的条件求值:

       ${test?expresstion: expression2},需要注意的是,表达式的条件求值的主要目标是简单显示,避免将这项技术用在商业逻辑中

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics