chap5 生成动态内容

来源:互联网 发布:长沙java招聘 编辑:程序博客网 时间:2024/05/22 03:17
chap5 生成动态内容5.1创建jsp页面(1)jsp页面扩展名为jsp,以告诉server该页面需由jsp container处理。5.2安装jsp页面(1)web.xml(即deployment descritptor)包含了安全需求、资源之间如何关联等信息。(2)war文件:包含deployment descriptor和其它web应用程序文件的压缩包(可用jarzip工具创建)。(3)为避免每次修改都要更新war文件,一般container都允许以war文件定义的文件结构,把应用程序文件直接存储在文件系统中。(4)对于tomcat,在webapps下的任何一个子目录都被看成一个web应用程序,只要使用了标准的web应用程序的文件结构。
[例如
]
webapps下建立一个test目录,在其中复制oraWEB-INF目录(包括web.xmlclasses文件夹,lib文件夹),再新建一个jsp文件easy.jsp,就可以在浏览器中输入http://localhost:8080/test/easy.jsp,访问该jsp
页面。
如果
test/easy/easy.jsp,则可以通过http://localhost:8080/test/easy.easy.jsp访问
(5)WEB-INF目录的内容不允许浏览器访问,因此可以把不想public的文件放在里边。(6)lib目录:存放jar文件。例如dom.jarstruts.jar(7)classes目录:所有没有打包到jarclass文件都存放于此。[重要]文件存放的子目录必须与它们所在的package结构一致,例如com.ora.jsp包中的class必须存放在WEB-INF/classes/com/ora/jsp目录。5.3 运行jsp页面(1)tomcat中,默认子目录名称为context path,例如/test(2)请求web app.资源(例如htmljspservlet)时,urlhostname+port num.之后,必须是context path,例如http://localhost:8080/test/…,以便container知道哪个app.用于处理该请求。
[例外
]
每个container中可以有一个app被作为defaultroot)应用程序。Tomcat中,该app.默认存放在webapps/ROOT中。可以不用context path(事实上是context path为空字符串),例如http://localhost:8080/index.jsp,事实上该jsp存放在webapps/ROOT中。
(3)server处理了被请求页面的jsp元素,只把结果输出给浏览器。
[例如
]
jsp
代码:
<%@ page contentType="text/html" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
  <head>
    <title>JSP is Easy</title>
  </head>
  <body bgcolor="white">

    <h1>JSP is as easy as ...</h1>

    <%-- Calculate the sum of 1 + 2 + 3 dynamically --%>
    1 + 2 + 3 = <c:out value="${1 + 2 + 3}" />

  </body>
</html>
浏览器中看到的html
源代码:

<html>
  <head>
    <title>JSP is Easy</title>
  </head>
  <body bgcolor="white">

    <h1>JSP is as easy as ...</h1>

   
    1 + 2 + 3 = 6

  </body>
</html>
5.4使用jspDirective元素(1)三种jspdirectivepageincludetaglib(2)directive格式:
开头标识:
<%@
中间:属性,包括多个“属性名称/属性值”配对,例如contentType="text/html"。所有属性值必须用""括起来。

结尾标识:%>
[
注意]jsp元素、属性名称及(大多数情况下)属性值是区分大小写的。
(3)page directive:(可用的属性参见本书附录A
[例如
]
container
content type作为response header Content-Type传递给浏览器,以便浏览器知道如何解释及表现该页面。
(4)taglib directive:声明该页面所用的自定义标签库。其中,prefix定义标签库的名称前缀;uri是标识该标签库的唯一字符串。5.4.1 jsp 注释(1)<%----%>之间的任何内容都被忽略。
[]对于例如<%-- <%----%>--%>,注释截止于第一个%>
5.5 使用template text(1)template text:所有不是jsp元素(directiveactionscripting  element)的文本。被不作改变地传给浏览器。(2)用途:可用jsp产生所有基于文本的输出类型,例如xmlwml,或普通文本。(3)container不关心template text代表什么。5.6 使用jspAction元素(1)执行条件:当jsp页面被请求时(即“请求处理阶段”)。即:action元素代表发生在runtime的动态action
[对比]jspdirective元素仅在translation阶段(即jsp页面转换成servlet代码时)使用。
(2)action的语法与html元素的语法相同:
[包含一个
body]
<prefix:action_name attr1="value1" attr2="value2">
action_body
</prefix:action_name>
[
不包含
body]
<prefix:action_name attr1="value1" attr2="value2"
/>
,等价于<prefix:action_name attr1="value1" attr2="value2"></prefix:action_name>
(3)action element:通常被称为tag,被聚合成库,即tag library(4)prefix:在taglib directive中定义了prefix namespace。两个用途:[1]使不同libraryaction可以有相同的名字;[2]使container可以识别出某个action属于哪个library.(5)uri:是tag library的唯一标识,供容器寻找处理action所需的信息。(6)action分为3类:standardcustomjstl[参见]chap3 - 3.3.15.6.1 JSTL tag(1)来源:一群经验丰富的tag library开发者通过JCP制定的。(2)内容:由多个library组成,每个library包括一些有关的actionCoreXML处理,国际化和格式,RDB读取(sql
[例如
]
<c:out value="${1 + 2 + 3}" />
<c:out>
Core library中的action,把表达式${1+2+3}的值赋给属性value
5.6.1.1 JSTL表达式语言(EL),详细参见本书附录C(1)EL表达式:${开头,}结尾。
原创粉丝点击