`
jipengyun2008
  • 浏览: 32560 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jsp jstl el ognl

 
阅读更多
jsp+servlet+el+jstl学习笔记2009-12-17 10:561.myeclipse中编译器不进行语法检查和智能提示,是因为项目中的.classpath和.mymetadata文件不存在

2.biz用于进行数据处理,而servlet也就是web用于进行页面传值的处理,它将具体的数据和业务处理联系起来。 它用于接受数据和显示结果,biz用于进行数据处理的抽象。注意不要架空 sevlet

3.新型学习模式,网络笔记法,这样只要访问相应的网络空间就能够知道相应人的学习进度,如果能开发出一种适应于学习的远程协助,就能够将这种学习模式扩大

4.使用servlet进行处理后,显示结果可以直接输出HTML文本响应,包括js代码!
PrintWriter out=response.getWriter();
out.println("<script type='text/javascript'>alert('adsf')</script>");

5.No suitable driver found for jdbc
表示Tomcat没有找到相应的jdbc,需要把jdbc放到Tomcat的Lib目录下(使用Properties需要把jdbc放到Tomcat的lib目录下)

6.out.close();这句造成响应终止的原因:response也不过是一个输出流而已,out.close()会关闭当前线程中的所有输出流,所以会关闭response。

7.会话超时问题是存在的,所以要预防用户在某个页面待的时间过长后造成的会话终止的情况,至少应该提示用户会话已经结束

8.servlet中的页面跳转要执行一次,就要在跳转后下面仍有代码的情况下, 在跳转代码后加return

9.路径问题总结:

首先,考虑 请求方式(考虑存储数据的方式)+给谁看+使用路径是相对还是绝对,再考虑根据资源的编码浏览器如何解析

请求方式:
a.html标签的链接路径如src,href,action(浏览器先获得HTML数据流,再根据资源的url进行请求)
b.请求转发
c.重定向

给谁看(将url解释执行的第一个人)
a.浏览器
b.容器

使用的路径:
a.相对
b.绝对

资源编码:
a.内置编码,用于交给浏览器继续请求
b.无内置编码,浏览器根据地址栏的资源目录和相对路径信息,来拼装绝对路径并请求资源

流程:

在编辑转发页面时:
对于要展示的页面路径,应根据是否需要在request中携带信息来决定使用 请求转发/重定向;
重定向,交给浏览器,通过"/"+request.getContextPath()+"/"+页面名称,来获得其资源URL绝对路径。因为考虑到应用程序名称硬编码会造成应用程序名称变动困难的影响,所以一般采用此种方式获得绝对路径;
请求转发,交给容器,可以使用相对路径,也可以使用绝对路径,一般用相对路径,所以就要求请求相应的页面在编码上要

给予浏览器,一个相对路径标准而不要用其默认的地址栏获取URL进行拼装的方法,通过在页面中编写:
<%
String path=request.getContextPath();//获取以项目名开头以此资源上级目录结尾的路径
String BasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

并在Head中编写
<base href="<%=basePath%>">
于是浏览器就能够正确定位的资源的位置 

在编写展示页面HTML标签时:
直接交给浏览器,使用/代表了容器的webapps目录,所以需要加上工程名(一定是工程名,不一定是项目名称)


10.include的运用
include表示的是在使用include指令的地方插入一部分代码,代码的来源就是src的指向的文件的所有内容
要注意使用include指令的作用是把include拼装页面,所以要满足HTML页面的标准,标签个数,位置一致的原则

11.iframe的运用
iframe多用于把一个页面放在一个叫做iframe的容器内,通过控制点击iframe所在页面的超链接的Target属性的值,来控制

iframe所盛放的页面内容,并且使用iframe盛放的页面是完全的页面,可以进行单独的编写


开发中经常通过iframe+include来实现框架的效果

如果要用按钮来控制iframe的连接,只要把按钮之外用超链接圈套就OK

js获得iframe的Target
var w=window.frames["IFRAME1"];

w.location="frmNextPage.aspx";


12.java组件的概念,如何在组件的层次上进行运用


13.编码的概念,page指令中的enConding指令的作用是指示Tomcat解释翻译在程序此文件采用的编码

14.项目运行中更改文件似乎有效?有效,tomcat5.x有效

15.以后开发尽可能使用include+iframe开发,而搭建include和iframe的页面 尽量使用Div+CSS布局、也可以用表格

16.命名ID,项目名缩写,

17.jsp页面在应用程序运行时可以查看,但不能查看创建的页面

18.获得当前日期
import java.text.SimpleDateFormat;

Date now=new Date();
SimpleDateFormat formater=new SimpleDateFormat("yyyy年MM月dd日");
String str=formater.format(now);

19.出现问题,先将问题归类,看以前解决类似的问题的方法能否用在此问题中,或者说是将现有问题用以前解决问题的方式解决,

看是否能成功,变形

20.使用iframe+include开发,要控制iframe的src,用jsp获得到servlet要显示的页面(存进了参数里),然后动态设置iframe的

src属性,就能完成页面的变化


21.jsp流程

用户请求资源URL通过浏览器发送到服务器——服务器受到请求进行资源解析,查看是否存在(包括在web.xml中查看是否请求的是

servlet),如果找到资源,将jsp,servlet文件编译成.java文件,再把.java解释成.class文件,容器再通过执行.class文件向浏

览器输出html的二进制数据流,浏览器收到开始解析——用户在资源上进行操作,执行相应的js代码,动态嵌入到浏览器的js脚本区

执行——发送第二次请求


所以:
jsp,servlet文件,虽然是用户请求的资源,但是其中写的动态程序 只有在生成html数据流的过程才存在;而javascript,也是html

文本,只不过这种html文本是动态的嵌入到浏览器中 并且能接受用户si的


22.使用iframe+include开发餐馆系统的流程是:
index.jsp页面的iframe指向login.jsp,
A.设置iframe的name,将要在iframe中显示的页面的链接源(如超链接,form)设置其Target属性指向此name

B.如果使用的是请求转发,直接转向到相应页面就OK,如果使用的是重定向,就要设置执行提交的源的Target,必须设置才能正确,

或者通过js代码实现,如果需要携带参数,就用请求转发,就可以不用Target属性,如果用重定向,就必须要有Target属性

C.在各个跳转到的页面通过javascript控制显示信息alert(),要有非空判断

D.在iframe的页面中执行的页面跳转 无论采取什么方式都会显示在iframe中;而在iframe外面的跳转无论什么方式都会显示在整个浏

览器中,所以对于外部的链接请求要用target来设置




总结:在设计的时候要从是否携带数据的方面考虑是否使用Target属性,如果需要携带数据,就必须用请求转发,就不需要使用

Target属性;如果不需要携带数据,就要设置Target属性!

试验成功!
结论是正确的,详见target项目


23.out对象,和request对象,response执行的页面跳转一样,属于同级别,不能输出out的同时又输出页面跳转

24.jsp语言以及以后要学的php,EL等都是为输出HTML文本的,所以<%=mess %>输出的是个值,字符串,如果要作为参数传入

javascript,只能传入基础数据类型,待检验

25.form的target要是设置的话,如果在servlet的处理中跳转到的页面将会显示在from的所在页面的位置,同样,超链接的target要

设置的话,也是一样

26.使用iframe 不同于include的预编译,可以存在HTML基本标签

27.小脚本的弊端在于 非模式化 或者说是相对于其改进方法而言的缺点,因为程序逻辑是程序员构建的,美工需要先了解结构和逻

辑才能掌握页面内容,而如果使用javaBean+EL+Jstl就能给美工一个功能端口,他只要知道这个规则,就能知道这里是做什么的而不

需要确切了解逻辑组织过程

28.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 使用Jstl固定这么写在文件头

29.反射:
原理:
通过反射获得Class对象,通过Class对象获得所传字符串表示的类的父类对象或者获得字符串表示的类的方法/字段,并且获得功能

!可以通过遍历方法来实现

Class对象是所有类的模版,他能真实的反映出类的结构

1.获得Class对象
Class c=Class.forName('完全限定类名');
或者 Class c=对象.getClass();

2.根据完全限定名获得字符串表示的类的父类对象
父类 f=(父类)c.newInstance();

3.使用完全限定名表示的类的功能

a.需要已知方法名和方法参数列表或者已知方法索引和方法参数列表

java.lang.Reflect.Method me=c.getMethods();
for(Method m:me){
if(me.getName().equals(''))
m.invoke(参数列表);
}

b.需要已知方法名和方法类型列表

java.lang.Reflect.Method m=c.getMethod("方法名",new Class[]{参数类型列表})
m.invoke(参数列表);

4.使用完全限定名表示的类的属性

待研


30.
使用EL
$(pageContext.request.requestURL)
是因为pageContext中存在request.getRequest方法,request又存在requestURL方法
所以在使用request中的方法的时候要注意使用的是get开头的方法,并且在访问的时候要去掉get并且将去掉后的大写字母改成小写

使用EL获取方法
要求:
1.使用<内置隐式对象>的方法,就必须要保证存在get隐式对象()的方法,其次调用隐式对象的方法必须是以get开头,并且是无参的

2.使用javaBean的方法,直接调用方法即可


31.javaBean
在数据封装上,和普通实体类效果一致

对于和jsp标准动作的衔接(被jsp翻译器通过反射衔接)上,javaBean必须满足:
1.存在无参构造函数
2.存在对jsp标准动作属性存取值的get/set方法,并且要满足命名规则(前2位不能是连续的大写字母)


32.使用标准动作,EL,JSTL要多注意查看生成的页面的class代码,上面有出错的原因~

33.jsp标准动作,EL,JSTL都是对javaBean的get,set方法以及无参构造函数有要求

34.学习CSS+DIV布局技术,全面掌握标准动作,因为设计模式不仅仅是MVC还有Model1的View+Model的开发

35.jsp标准动作,EL,JSTL的功效

jsp标准动作:创建对象,属性赋值,页面跳转,输出属性值到HTML

EL:获得内置对象中存储的对象,获得内置对象的无参get方法的返回值;获得javaBean的方法返回值;输出值到jsp标准动

作,jstl,HTML

jstl:创建对象,局部变量,输出变量值到HTML,删除变量,条件判断,迭代操作

36.
<c:set>标签用于保存数据。
  语法1:将value的值储存至范围为scope的varName变量之中:
  <c:set value="value" var="varName" [scope="{ page|request|session|application }"]/>
  语法2:将本体内容的数据储存至范围为scope的varName变量之中:
  <c:set var="varName" [scope="{ page|request|session|application }"]>
  … 本体内容
  </c:set>
  语法3:将value的值储存至target对象的属性中:
  c:set value="value" target="target" property="propertyName" />
  语法4:将本体内容的数据储存至target对象的属性中:
  <c:set target="target" property="propertyName">
  … 本体内容
  </c:set>


37.jstl用到索引的遍历方式:
第一种:使用内置索引
<c:forEach var="list" items="${list}" varStatus="status">
    <c:out value="${status.index+1}"/>
</c:forEach>

第二种:自定义索引
<c:set var="i" value="1"/>
<c:forEach var="beans" items="${list}">
    <tr bgcolor="#FFFFFF" class="font">
        <td class="font"><div align="center"><c:out value="${i}"/></div></td>
    </tr>
<c:set var="i" value="${i+1}"/>
</c:forEach>

第三种:迭代方式 获得总值
<c:set var="sum" value="0"/>
<c:forEach var="i" begin="1" end="100" step="1">
<c:set target="sum" value="${sum+i}"/>
</c:forEach>

其他遍历

List:
<c:forEach var="student" items="${sessionScope.list}"
varStatus="status">
<font size=5 color=blue> index:${status.index }<br>
ID:${student.id }<br> Name:${student.name }<br>
Country:${student.address.country }<br>
City:${student.address.city }<br>
Street:${student.address.street } <br></font>
</c:forEach>


Map:
<c:forEach var="entry" items="${sessionScope.map}"
begin="0" end="4" step="1" varStatus="status" >
<font size=5 color=red> index:${status.index }<br>
ID:${entry.key }<br> Name:${entry.value.name }<br>
Country:${entry.value.address.country }<br>
City:${entry.value.address.city }<br>
Street:${entry.value.address.street }<br> </font>
</c:forEach>


Array:
<c:forEach var="color" items="${sessionScope.colors}">
${color}<br>
</c:forEach>




分享到:
评论

相关推荐

    JSP+Struts+JSTL+EL学习实例

    本学习实例主要围绕Java Web开发中的JSP、Struts、JSTL和EL技术展开,旨在帮助开发者深入理解和应用这些核心技术构建实际的Web应用程序。这些技术都是Java EE平台上的重要组件,广泛用于企业级应用开发。 首先,JSP...

    ognl和el区别

    EL不支持方法调用,但可以与JSTL(JavaServer Pages Standard Tag Library)结合使用,扩展其功能。 3. **主要区别** - **功能范围**:OGNL比EL更强大,它支持更多的操作,如方法调用、数组和集合操作、条件语句...

    JSTL、EL、ONGL、Struts标签的区别

    例如,在 JSP 页面中,可以使用 JSTL 来控制流程和数据处理,同时利用 EL 或 OGNL 进行数据的访问和展示。在 Struts2 应用中,则可以充分利用 Struts 标签来处理复杂的业务逻辑和数据展示需求。

    Ognl_JSTL_学习笔记.zip

    3. **OGNL与EL的区别**:了解两者在数据绑定上的差异,EL(Expression Language)是JSP 2.0引入的标准,通常与Servlet 2.5及更高版本一起使用。 4. **JSTL与JDBC**:学习如何使用JSTL的JDBC标签执行数据库查询和操作...

    OGNL表达式

    在Struts2框架中,默认使用的表达式语言即为OGNL,这是因为相比于其他表达式语言(如JSTL、Groovy和Velocity等),OGNL具有以下显著优点: 1. **支持对象方法调用**:OGNL允许直接调用对象的方法,而无需显式创建...

    EL表达式所有jar包(包含两个)

    虽然具体的jar包名称没有给出,但通常这些库可能包括Apache Tomcat或Jetty等服务器提供的标准EL实现,如`javax.el.jar`,以及可能的第三方扩展,如OGNL(Object-Graph Navigation Language)或Unified EL。 在描述中...

    【温故而知新】一个极好极全极简明的EL表达式的学习文档

    在这个文档中,我们将深入探讨EL表达式,并通过与OGNL、JSTL和STRUTS2标签的对比,进一步理解其用法。 首先,让我们关注EL表达式的语法。EL表达式通常以`#{}`包围,它允许开发者以一种声明式的方式访问和操作Java...

    EL语言规范

    EL和JSP标签库(如JSTL)结合使用,可以构建更清晰、更可维护的JSP页面。 7. **EL与MVEL、OGNL等其他表达式语言的比较** 虽然EL主要针对JSP环境,但还有其他类似的语言,如MVEL(多功能表达式语言)和OGNL(Object...

    s:iterator的EL表达式原理

    EL表达式在JSP 2.0及更高版本中被广泛使用,与JSTL(JavaServer Pages Standard Tag Library)一起提供了更简洁的页面表示方式。 **OGNL(Object-Graph Navigation Language)** 在EL表达式中,实际上底层是使用了...

    struts2 + jsp 简单通讯录

    - **JSTL(JavaServer Pages Standard Tag Library)**:为了减少脚本代码,提高可读性和可维护性,JSP页面可能使用JSTL标签库,如`&lt;c:forEach&gt;`、`&lt;fmt:formatDate&gt;`等,实现循环、条件判断等操作。 3. **MySQL...

    jsp+strut2.1使用

    3. **JSP视图层**:JSP页面主要负责数据的展示,可以使用EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)标签库来显示由Action传递过来的数据。 4. **OGNL**:Struts 2中的默认表示语言...

    Thymeleaf模板驱动web1

    1. 提供标准和 spring 标准两种方言,可以直接套用模板实现 JSTL、OGNL 表达式效果,避免每天套模板、改 JSTL、改标签的困扰。 2. 开发人员也可以扩展和创建自定义的方言。 Thymeleaf 是一个功能强大且灵活的模板...

    网上商店struts2

    - **JSP与EL/JSTL**:熟悉JSP页面的结构,以及如何使用EL和JSTL简化页面逻辑。 - **数据库交互**:学习如何使用JDBC进行数据库操作,如查询、插入、更新和删除。 - **部署与运行**:了解如何将项目打包成WAR文件...

    在tarena培训 struts&jsp上

    - **JSTL(JavaServer Pages Standard Tag Library)**:提供了一组标准标签库,如fmt, c, sql等。 4. **Struts2的增强特性**: - **拦截器(Interceptor)**:提供了可插拔的处理机制,如日志、权限验证等。 - ...

    公司的网站设计 完整的jsp网站 struts2.0技术

    JSP的核心概念包括JSP元素(指令、脚本元素和动作元素)、生命周期(翻译、初始化、服务、销毁)、EL(Expression Language)表达式、JSTL(JavaServer Pages Standard Tag Library)标签库等。在这个公司网站设计中...

    jsp课件资料

    4. **JSTL(JavaServer Pages Standard Tag Library)**:JSTL是一组标准的JSP标签库,提供了数据处理、条件语句、循环、国际化等功能,有助于减少脚本代码,提高可读性和可维护性。 【Struts2框架】 Struts2是基于...

    struts+mybatis+jsp成绩管理系统.zip

    开发者可以在JSP中嵌入Java代码或使用EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)标签库来简化视图层的开发,提高页面的可维护性和可读性。 4. **权限控制**:在系统中,不同的角色...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    全书分4篇,共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e...

    struts2所用到的jar包,都是一些基础的jar包。很通用。

    - `jsp-api.jar`:JSP(JavaServer Pages)API,用于处理JSP页面和表达式语言(EL)表达式。 - `el-api.jar`:Expression Language API,提供了一个标准的方式来访问和操作JavaBean属性。 4. **依赖的JSTL库**: ...

Global site tag (gtag.js) - Google Analytics