| chap5 生成动态内容 |
| 5.1创建jsp页面 |
| (1)jsp页面扩展名为jsp,以告诉server该页面需由jsp container处理。 |
| 5.2安装jsp页面 |
| (1)web.xml(即deployment descritptor)包含了安全需求、资源之间如何关联等信息。 |
| (2)war文件:包含deployment descriptor和其它web应用程序文件的压缩包(可用jar或zip工具创建)。 |
| (3)为避免每次修改都要更新war文件,一般container都允许以war文件定义的文件结构,把应用程序文件直接存储在文件系统中。 |
| (4)对于tomcat,在webapps下的任何一个子目录都被看成一个web应用程序,只要使用了标准的web应用程序的文件结构。 [例如] 在webapps下建立一个test目录,在其中复制ora的WEB-INF目录(包括web.xml,classes文件夹,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.jar,struts.jar |
| (7)classes目录:所有没有打包到jar的class文件都存放于此。[重要]文件存放的子目录必须与它们所在的package结构一致,例如com.ora.jsp包中的class必须存放在WEB-INF/classes/com/ora/jsp目录。 |
| 5.3 运行jsp页面 |
| (1)tomcat中,默认子目录名称为context path,例如/test |
| (2)请求web app.资源(例如html,jsp,servlet)时,url的hostname+port num.之后,必须是context path,例如http://localhost:8080/test/…,以便container知道哪个app.用于处理该请求。 [例外] 每个container中可以有一个app被作为default(root)应用程序。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使用jsp的Directive元素 |
| (1)三种jsp的directive:page,include,taglib |
| (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元素(directive,action,scripting element)的文本。被不作改变地传给浏览器。 |
| (2)用途:可用jsp产生所有基于文本的输出类型,例如xml,wml,或普通文本。 |
| (3)container不关心template text代表什么。 |
| 5.6 使用jsp的Action元素 |
| (1)执行条件:当jsp页面被请求时(即“请求处理阶段”)。即:action元素代表发生在runtime的动态action。 [对比]jsp的directive元素仅在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]使不同library的action可以有相同的名字;[2]使container可以识别出某个action属于哪个library. |
| (5)uri:是tag library的唯一标识,供容器寻找处理action所需的信息。 |
| (6)action分为3类:standard,custom,jstl。[参见]chap3 - 3.3.1 |
| 5.6.1 JSTL tag库 |
| (1)来源:一群经验丰富的tag library开发者通过JCP制定的。 |
| (2)内容:由多个library组成,每个library包括一些有关的action:Core,XML处理,国际化和格式,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表达式:${开头,}结尾。 |
chap5 生成动态内容
最新推荐文章于 2022-08-16 22:09:18 发布
博客涉及JSP、action、library等信息技术相关内容,涵盖浏览器交互及部署描述符等方面,但具体内容未给出。
6770

被折叠的 条评论
为什么被折叠?



