Taglib ….金沙js娱乐场官方网站:任何人自定义的各种标签,我们使用JSP开发信息展现非常方便

Taglib 、JSF Taglib 、Webwork Taglib ….任何人自定义的各种标签,首先形容下我眼中的 JSP,Taglib ….任何人自定义的各种标签,原生代码、JSTL 表达式、Struts Taglib 、JSF Taglib 、Webwork,              出事提示不明确,我们使用JSP开发信息展现非常方便,JSP是Servlet技术的扩展,保存在服务端,JSP是Servlet技术的扩展,Servlet和JSP最主要的不同点在于

金沙js娱乐场官方网站 2

杂谈 Taglib、EL、OGNL,杂谈taglibelognl

   本篇主要是自己对 JavaWeb中 EL、OGNL、Taglib 个人理解。

   因为以上内容都是在 JSP 的基础下产生的概念, 首先形容下我眼中的 JSP。

 
 她自由的、奔放的,就像辽阔的大海,跨越任何服务器屏障、运行在各种平台。

   她能容纳下各种形式的代码和标签库,Java 原生代码、JSTL 表达式、Struts
Taglib 、JSF Taglib 、Webwork Taglib ….任何人自定义的各种标签。

   Web 视图层的基本思想已被 JSP 阐述的淋漓尽致,但 IT
领域人们不喜欢阳关积极的老人。

   眼下琳琅满目的模版引擎以其灵活的表现形式和简洁的书写方式大有取缔 JSP
的势头。

   本篇主要是自己对
JavaWeb中 EL、OGNL、Taglib 个人理解。

 一、JSTL

1、jsp和servlet的区别、共同点、各自应用的范围??


1. Taglib(tag library) 标签库

   JSP 中原生的 java 代码,总是给人一种杂乱的感觉,与整个 JSP
页面不搭调。

   而且增加维护难度和成本、前端 JSP
美工也必须是程序员、增加程序开发成本。

   Taglib 是在这种前提下孕育而生,在很久以前已经被很多 Javaweb mvc
框架采用和扩展,发扬广大。

   小巧活泼的 Taglib 将杂乱的原生 java 代码移出了 JSP 的世界,还原了 JSP
原本整洁干净的样子。

   未引入 taglib 实例代码:

<% @page import="cn.javass.user.UserModel" %>  
<% UserModel user = (UserModel)request.getAttribute("user"); %>  
<table border="1">  
    <tr>  
        <td colspan="2">用户信息</td>  
    </tr>  
    <tr>  
        <td>姓名</td>  
        <td><%=user.getName()%></td>  
    </tr>  
    <tr>  
        <td>年龄</td>  
        <td><%=user.getAge()%></td>  
    </tr>  
</table>  

   引入 struts <c:/>标签和 EL 表达式 实例代码:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  
<table border="1">  
    <tr>  
        <td colspan="2">用户信息</td>  
    </tr>  
    <tr>  
        <td>姓名</td>  
        <td><c:out value="${user.name}"/></td>  
    </tr>  
    <tr>  
        <td>年龄</td>  
        <td><c:out value="${user.age}"/></td>  
    </tr>  
</table>  

 
 可能是业务逻辑不够复杂,所以你可能没有满脸络腮胡子的大叔,变为阳光活泼的小鲜肉的感觉,没关系,听我慢慢道来。

   下面是比较主流的一些 TagLib,和具体的参考资料:

   由 apache 开发维护的 JSTL(JSP Standard Tag
Library),具体参考资料: 

   Struts2 Taglib

   webwork
Tablib:

   当然你也可以自定义扩展
Taglib:

   因为以上内容都是在 JSP
的基础下产生的概念, 首先得说说我眼中的 JSP。

   来源

JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.

=====

2. EL(Expression Language) 表达式

   EL 设计灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP
中简化表达式的方法。

   EL 依次从Web Page、Request、Session、Application
范围查找值,同样也能从定义的隐式对象
pageScope、requestScope、sessionScope和applicationScope 中获取数据。

   EL 既不是编程语言、也不是脚本语言、最佳搭档为
JSTL,能使用简单方便的符号来表达和操作复杂的行为。

   不引入 EL 和 JSTL,Java 原生代码 HTML 中渲染数据代码示例:

<% 
      for (User user : UserList) { 
%>
        <h5>遍历的当前用户名称:<%=user.getName()%></h5>
        <h5>遍历的当前用户组织机构:<%=user.getOrg()%></h5>
<% 
       } 
%>

  引入 EL 和 JSTL代码实例:

<c:forEach var="user" items="${userList}" >
    <h5>遍历的当前用户名称:<c:out value="${user.name}"/></h5>
    <h5>遍历的当前用户组织机构:<c:out value="${user.org}"/></h5>
</c:forEach>

   ${userList} 为 EL 取值,<c:forEach> <c:out> 为 JSTL
循环和输出标签,引入 EL 和 JSTL 后的代码是不是简洁、易懂?

   至于 EL 和 JSTL 的使用方式和书写规则,参考资料:

   EL :

   JSTL: 

   这些东西罗列出来没意义,遇到具体项目和具体业务规则时,进行搜索吧。

 
 她自由的、奔放的,就像辽阔的大海,跨越任何服务器屏障、运行在各种平台。

      
我们使用JSP开发信息展现非常方便,也可嵌入java代码用来实现相关逻辑,但同样带来了很多问题:

2、cookie和session的作用、区别、应用范围,session的工作原理???

金沙js娱乐场官方网站 1

3. OGNL(Object-Graph Navigation Language) 对象图航语言

   OGNL 是 EL 的升级版,最佳搭档一般为 struts <s:/> 和 webwork
<ww:/> 等框架标签库配合使用。

 
 OGNL 提供了很多高级而必须的特性,例如强大的类型转换功能,静态或实例方法的执行,跨集合投影,以及动态
lambda 表达式定义等。

   OGNL 的计算围绕着 OGNL 上下文进行,可以在属性驱动的框架如
struts、webwork..值栈中增、删、改、查数据。   

   引入 OGNL 和 struts <s:/> 标签库页面渲染代码实例:

<s:iterator var="user" value="${userList}" id="user" status="status">
    <h5>当前对象索引:<s:property value="#status.index"/></h5>
    <h5>遍历的当前用户名称:<s:property value="user.name"/></h5>
    <h5>遍历的当前用户组织机构:<s:property value="user.org"/></h5>
</s:iterator> 

   #status.index 为 OGNL 取值,<s:property/> <s:iterator/>
struts 标签库输出和遍历便签。

 
 上述例子的举基本为简单常规的样例,但实际业务逻辑总是伴随着变化和复杂规则,OGNl
基本都能满足你的要求。

   OGNL 具体的使用方式和书写规则也不进行罗列了,比较好的参考资料:

 
 Struts2中的OGNL详解: 

   Webwork 学习之路【02】前端OGNL试练

 

Taglib、EL、OGNL,杂谈taglibelognl
本篇主要是自己对 JavaWeb中 EL、OGNL、Taglib 个人理解。
因为以上内容都是在 JSP 的基础下产生的概念,…

   她能容纳下各种形式的代码和标签库,Java
原生代码、JSTL 表达式、Struts Taglib 、JSF Taglib 、Webwork
Taglib ….任何人自定义的各种标签。

              jsp维护难度增加

Cookie:主要用在保存客户端,其值在客户端与服务端之间传送,不安全,存储的数据量有限。Session:保存在服务端,每一个session在服务端有一个sessionID作一个标识。存储的数据量大,安全性高。占用服务端的内存资源。

1、jsp和servlet的区别、共同点、各自应用的范围??

JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.

   Web 视图层的基本思想已被 JSP
阐述的淋漓尽致,但 IT 领域人们不喜欢阳关积极的老人。

              出事提示不明确,不容易提示

3、jstl是什么?优点有哪些??

2、cookie和session的作用、区别、应用范围,session的工作原理???

Cookie:主要用在保存客户端,其值在客户端与服务端之间传送,不安全,存储的数据量有限。Session:保存在服务端,每一个session在服务端有一个sessionID作一个标识。存储的数据量大,安全性高。占用服务端的内存资源。

 
 眼下琳琅满目的模版引擎以其灵活的表现形式和简洁的书写方式大有取缔 JSP
的势头。

              分工不明确等

JSTL(JSP
StandardTagLibrary,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,由四个定制标记库(core、format、xml和sql)和一对通用标记库验证器(ScriptFreeTLV和PermittedTaglibsTLV)组成。优点有:

3、jstl是什么?优点有哪些??

JSTL(JSP
StandardTagLibrary,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,由四个定制标记库(core、format、xml和sql)和一对通用标记库验证器(ScriptFreeTLV和PermittedTaglibsTLV)组成。优点有:

1、
在应用程序服务器之间提供了一致的接口,最大程序地提高了WEB应用在各应用服务器之间的移植。

2、 简化了JSP和WEB应用程序的开发。

3、
以一种统一的方式减少了JSP中的scriptlet代码数量,可以达到没有任何scriptlet代码的程序。在我们公司的项目中是不允许有任何的scriptlet代码出现在JSP中。

4、
允许JSP设计工具与WEB应用程序开发的进一步集成。相信不久就会有支持JSTL的IDE开发工具出现。

金沙js娱乐场官方网站 2

      
解决上面的问题可以使用定制标签库,Jstl使JSP开发开发者可以减少对脚本元素的需求,甚至可以不需要它们。

1、
在应用程序服务器之间提供了一致的接口,最大程序地提高了WEB应用在各应用服务器之间的移植。

4、j2ee的优越性主要表现在哪些方面?MVC模式

a、J2EE基于JAVA技术,与平台无关

b、J2EE拥有开放标准,许多大型公司实现了对该规范支持的应用服务器。如BEA

,IBM,Oracle等。

c、J2EE提供相当专业的通用软件服务。

d、J2EE提供了一个优秀的企业级应用程序框架,对快速高质量的开发系统打下了基础。

Model模型:应用程序的主体部分,用于表示业务逻辑。

View视图:应用程序中用户界面相关的部分,是用户看到并与之交互的界面。

Controller控制器:用于根据用户的输入,控制用户界面数据显示,更新Model对象状态。

MVC模式的出现不仅实现了功能模块和显示模块的分离,同时还提够了应用系统的可维护、可扩展性、可移植性、和组建的可复用性。

1. Taglib(tag library) 标签库

   JSP 中原生的 java
代码,总是给人一种杂乱的感觉,与整个 JSP 页面不搭调。

   而且增加维护难度和成本、前端 JSP
美工也必须是程序员、增加程序开发成本。

   Taglib
是在这种前提下孕育而生,在很久以前已经被很多 Javaweb mvc
框架采用和扩展,发扬广大。

   小巧活泼的 Taglib 将杂乱的原生 java
代码移出了 JSP 的世界,还原了 JSP 原本整洁干净的样子。

   未引入 taglib 实例代码:

<% @page import="cn.javass.user.UserModel" %>  
<% UserModel user = (UserModel)request.getAttribute("user"); %>  
<table border="1">  
    <tr>  
        <td colspan="2">用户信息</td>  
    </tr>  
    <tr>  
        <td>姓名</td>  
        <td><%=user.getName()%></td>  
    </tr>  
    <tr>  
        <td>年龄</td>  
        <td><%=user.getAge()%></td>  
    </tr>  
</table>  

   引入 struts <c:/>标签和 EL
表达式 实例代码:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  
<table border="1">  
    <tr>  
        <td colspan="2">用户信息</td>  
    </tr>  
    <tr>  
        <td>姓名</td>  
        <td><c:out value="${user.name}"/></td>  
    </tr>  
    <tr>  
        <td>年龄</td>  
        <td><c:out value="${user.age}"/></td>  
    </tr>  
</table>  

 
 可能是业务逻辑不够复杂,所以你可能没有满脸络腮胡子的大叔,变为阳光活泼的小鲜肉的感觉,没关系,听我慢慢道来。

   下面是比较主流的一些
TagLib,和具体的参考资料:

   由 apache 开发维护的 JSTL(JSP Standard
Tag
Library),具体参考资料: 

   Struts2 Taglib

   webwork
Tablib:http://wenku.baidu.com/link?url=EjR9GEfZUMw9nW3Asq6OUSTmXAuKf018QDV7

   当然你也可以自定义扩展
Taglib:

 

2、 简化了JSP和WEB应用程序的开发。

5、Struts的优点

a、实现MVC模式,结构清晰,使开发者只需关注业务逻辑的实现。

b、有丰富的tag可以用,能大大提够开发效率,缩短开发时间。

c、页面导航。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有很大的好处

d、提供Exception处理机制

e、支持L18N

2. EL(Expression Language) 表达式

   EL 设计灵感来自于 ECMAScript 和 XPath
表达式语言,它提供了在 JSP 中简化表达式的方法。

   EL 依次从Web
Page、Request、Session、Application 范围查找值,同样也能从定义的隐式对象
pageScope、requestScope、sessionScope和applicationScope 中获取数据。

   EL
既不是编程语言、也不是脚本语言、最佳搭档为
JSTL,能使用简单方便的符号来表达和操作复杂的行为。

   不引入 EL 和 JSTL,Java 原生代码 HTML
中渲染数据代码示例:

<% 
      for (User user : UserList) { 
%>
        <h5>遍历的当前用户名称:<%=user.getName()%></h5>
        <h5>遍历的当前用户组织机构:<%=user.getOrg()%></h5>
<% 
       } 
%>

  引入 EL 和 JSTL代码实例:

<c:forEach var="user" items="${userList}" >
    <h5>遍历的当前用户名称:<c:out value="${user.name}"/></h5>
    <h5>遍历的当前用户组织机构:<c:out value="${user.org}"/></h5>
</c:forEach>

   ${userList} 为 EL
取值,<c:forEach> <c:out> 为 JSTL 循环和输出标签,引入 EL 和
JSTL 后的代码是不是简洁、易懂?

   至于 EL 和 JSTL
的使用方式和书写规则,参考资料:

   EL

 
 JSTL: 

 
 这些东西罗列出来没意义,遇到具体项目和具体业务规则时,进行搜索吧。

    定义

3、
以一种统一的方式减少了JSP中的scriptlet代码数量,可以达到没有任何scriptlet代码的程序。在我们公司的项目中是不允许有任何的scriptlet代码出现在JSP中。

6、为什么要用struts?

JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。

基于Struts开发的应用由3类组件构成:控制器组件、模型组件、视图组件

3. OGNL(Object-Graph Navigation Language) 对象图航语言

   OGNL 是 EL 的升级版,最佳搭档一般为
struts <s:/> 和 webwork <ww:/> 等框架标签库配合使用。

 
 OGNL 提供了很多高级而必须的特性,例如强大的类型转换功能,静态或实例方法的执行,跨集合投影,以及动态
lambda 表达式定义等。

   OGNL 的计算围绕着 OGNL
上下文进行,可以在属性驱动的框架如
struts、webwork..值栈中增、删、改、查数据。   

   引入 OGNL 和 struts <s:/>
标签库页面渲染代码实例:

<s:iterator var="user" value="${userList}" id="user" status="status">
    <h5>当前对象索引:<s:property value="#status.index"/></h5>
    <h5>遍历的当前用户名称:<s:property value="user.name"/></h5>
    <h5>遍历的当前用户组织机构:<s:property value="user.org"/></h5>
</s:iterator> 

   #status.index 为 OGNL
取值,<s:property/> <s:iterator/> struts
标签库输出和遍历便签。

 
 上述例子的举基本为简单常规的样例,但实际业务逻辑总是伴随着变化和复杂规则,OGNl
基本都能满足你的要求。

   OGNL
具体的使用方式和书写规则也不进行罗列了,比较好的参考资料:

 
 Struts2中的OGNL详解: 

   Webwork 学习之路【02】前端OGNL试练

 

       JSTL(JSP
StandardTagLibrary,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat4.x。在JSP
2.0中也是作为标准支持的。

4、
允许JSP设计工具与WEB应用程序开发的进一步集成。相信不久就会有支持JSTL的IDE开发工具出现。

7、Sturt1的核心类、核心标签库?

ActionServlet控制器、ActionMapping状态改变事件
、Action控制器的一部分、ActionForward用户指向、ActionForm状态改变的数据

Html标签、bean标签、logic标签、tiles标签、nested标签

       引入jar包:jstl.jarstandard.jar

4、j2ee的优越性主要表现在哪些方面?MVC模式

8、struts1与sturts2的区别(struts2是struts1和webwork的结合体)

1、struts1要求Action类继承一个抽象基类,而不是接口。

struts2的action类可以实现一个action接口,也可以实现其他接口。

2、sturts1 action是单例模式,线程是安全的。

struts2 action线程是不安全的,action为每一个请求都生成了一个实例。

3、sturts1过去依赖serlet

API,不容易测试。

struts2不依赖于容器,允许Action脱离容器单独被测试。

4、Struts1使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。

Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。

5、Struts1整合了JSTL,因此使用JSTL
EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。

Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--”Object
Graph Notation Language” (OGNL).

6、Struts 1使用标准JSP机制把对象绑定到页面中来访问。

Struts
2使用”ValueStack”技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。

7、Struts 1
ActionForm属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换。

Struts2使用OGNL进行类型转换。提供基本和常用对象的转换器。

8、Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons
Validator的扩展来校验。

Struts2支持通过validate方法和XWork校验框架来进行校验。

9、Struts1支持每一个模块有单独的Request
Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。

Struts2支持通过拦截器堆栈(Interceptor
Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。

      
引入标记库:<%@taglib uri=””prefix=”c”%>

a、J2EE基于JAVA技术,与平台无关

9、过滤器和拦截器的区别

1、拦截器是基于java的反射机制的,而过滤器是基于函数回调

2、过滤器依赖于servlet容器,而拦截器不依赖于servlet容器

3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用

4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能

5、在action的生命周期中,拦截器可以多次被调用,而过滤器只在容器初始化时调用一次

拦截器
:是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。

过滤器:是在JavaWeb中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者struts的action前统一设置字符集,或者去除掉一些非法字符.

      
2.5版本需要加入:<%@page isELIgnored=”false”%> 
不忽略EL表达式

b、J2EE拥有开放标准,许多大型公司实现了对该规范支持的应用服务器。如BEA

 

,IBM,Oracle等。

    表达方式

c、J2EE提供相当专业的通用软件服务。

  • JSTL核心库 [基本的I/O, 流程控制, 循环 等功能]   
  • 数据库标签库 [基本的数据库操作功能]   
  • XML操作标签库 [用来处理XML文档]   
  • 国际化和格式标签库   
  • 函数标签库   

d、J2EE提供了一个优秀的企业级应用程序框架,对快速高质量的开发系统打下了基础。

     如:<c:out></c:out>、<c:set></c:set>

Model模型:应用程序的主体部分,用于表示业务逻辑。

 

View视图:应用程序中用户界面相关的部分,是用户看到并与之交互的界面。

  实例 

Controller控制器:用于根据用户的输入,控制用户界面数据显示,更新Model对象状态。

       单纯的jsp中嵌入java代码         

MVC模式的出现不仅实现了功能模块和显示模块的分离,同时还提够了应用系统的可维护、可扩展性、可移植性、和组建的可复用性。

 

5、Struts的优点

  1. <span style=”font-family:KaiTi_GB2312;font-size:14px;”>   <span style=”font-size:18px;”><%names = request.getAttribute(“name”);%>  
  2.     jsp代码  
  3.     <%for(int i=0;i<names.length;i++){  
  4.               String name=names.get(i);  
  5.     %>  
  6.     <tr>  
  7.         <td><%=name%></td>  
  8.     </tr>  
  9.   
  10.         <% }%></span></span>  

a、实现MVC模式,结构清晰,使开发者只需关注业务逻辑的实现。

  

b、有丰富的tag可以用,能大大提够开发效率,缩短开发时间。

   引入Jstl与EL 

c、页面导航。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有很大的好处

 

d、提供Exception处理机制

  1. <span style=”font-family:KaiTi_GB2312;font-size:14px;”>   <c:forEach var=’name’ items=’${names}’>//此句是Jstl表达式  
  2.     <tr>  
  3.         <td>  
  4.                  ${name}//此句是El表达式  
  5.         </td>  
  6.     </tr>  
  7. </span>  

e、支持L18N

    作用

6、为什么要用struts?

     
1、在应用程序服务器之间提供了一致的接口,最大程度地提高了WEB应用在各应用服务器之间的移植。

JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。

      2、 简化了JSP和Web应用程序的开发。

基于Struts开发的应用由3类组件构成:控制器组件、模型组件、视图组件

与EL关系

7、Sturt1的核心类、核心标签库?