HeadFirst Jsp 07 (使用 jsp)

时间:2022-09-17 00:08:15

Jsp 变成 Servlet, 容器会查看你的JSP, 把它转换成java源代码, 再编译成完整的Java servlet类.

Jsp 不需要你的编译, 容器会自动替换成servlet.

HeadFirst Jsp 07 (使用 jsp)

在 jsp中可以使用 scriptlet放入常规的java代码, 所谓scriptlet, 就是放在 <% … %> 标记中的Java代码.

导入一个包, 多个包用逗号分隔

<%@ page import=”java.util.*, foo.*;” %>

多个包

<%@ page import=”foo.*, java.util.*;”%>

<%@ %> 表示指令

<% %> 普通jsp 代码  // 注意这里的内容都是局部变量, 因为jsp再转化成Servlet时, 所有的代码都在一个函数内, 函数内的变量当然是局部变量了.

<%= %> 表达式 例如 <%= ++count %>   // 注意表达式后边不要分号, 自动会调用 out.print(++count);

<%! %> 用来声明静态变量和方法, 实例变量和方法, 所有内容都会增加到类中, 而且置于服务方法之外. 这里所时候的类是jsp最后生成的那个类.

<%! int count=0; %>  // 这是一个实例变量

<%! int doubleCount() {

count = count * 2;

return count;

}

%>

<jsp:include page=”wickedFooter.jsp” />   // 标准动作

<c: set var=”rate” value=”32” />  // 其他动作

HeadFirst Jsp 07 (使用 jsp)

在开发过程中, 没有必要查看容器生成的代码, 但是可以利用这些代码帮助学习, 一旦了解了容器如何处理JSP的各个不同元素, 就不用再查看容器生成的.java源文件了, 而且有些开发商不准许你查看生成的java源代码,只保留了编译后的.class文件.

HeadFirst Jsp 07 (使用 jsp)

HeadFirst Jsp 07 (使用 jsp)

HeadFirst Jsp 07 (使用 jsp)

容器自己生成的隐式对象

HeadFirst Jsp 07 (使用 jsp)

在jsp中的注释:

HeadFirst Jsp 07 (使用 jsp)

HeadFirst Jsp 07 (使用 jsp)

jsp 生命周期

HeadFirst Jsp 07 (使用 jsp)

HeadFirst Jsp 07 (使用 jsp)

HeadFirst Jsp 07 (使用 jsp)

HeadFirst Jsp 07 (使用 jsp)

HeadFirst Jsp 07 (使用 jsp)

HeadFirst Jsp 07 (使用 jsp)

JSP 转换成 servlet 只发生1次, JSP一旦得到转换和编译, 就像其他servlet一样了, 而且类似于其他的servlet, 一旦servlet得到加载和初始化, 请求时只会发生一件事, 就是创建或分配一个线程来运行服务方法. 所以创建JSP转换成servlet类只是在第一个请求时发生.

配置 servlet 初始化参数

HeadFirst Jsp 07 (使用 jsp)

以上的配置, 是针对某个特定的servlet.

覆盖 jspInit() 方法

<%!

public void jspInit() {

}

%>

HeadFirst Jsp 07 (使用 jsp)

JSP中可以通过隐式对象, 访问属性

HeadFirst Jsp 07 (使用 jsp)

3 大指令

注意下边, page是一个指令, 而import是page指令的一个属性.

HeadFirst Jsp 07 (使用 jsp)

HeadFirst Jsp 07 (使用 jsp)

即前端开发人员和美工人员, 他们不懂java代码, 所以从这个角度说, 嵌套在一起不好.

要是 JSP 中有办法使用简单的标记来运行java方法, 而且不用把具体的java代码放在页面中, 那该多好, 一切答案尽在EL中.

对于JSP的做法, 往往有两大抱怨:

1) 不应该要求Web页面设计人员必须懂 java.

2) JSP中的 java代码很难维护和修改.

EL 即表达式语言(Expression Language)的简写, 从 JSP2.0规范开始, 它已经正式成为规范一部分. 原先能用scriptlet和表达式完成的事情, 都能用EL完成, 而且EL往往更为简单. 但是编写具体的功能(方法代码), 不是EL的用途, EL的用于使提供一种更简单的方法来调用java代码. 但是代码本身放在别的地方. 按照当今的最佳实践, 不能再JSP中编写方法代码, 要把java方法写在别的地方, 再用EL来调用.

EL 表达式: Please contact: ${applicationScope.mail} 表达式形式: ${something}

对于 Java程序员来说, 从开发角度看 EL 不一定是显著地进步, 实际上, 在 java程序员看来, 这只是意味着“拜托, 我已经懂java了, 可是又要学一个东西” 不过不能只看你自己, 对于WEB美工人员来说, EL更好学, 更易掌握.