2
?2004 Marty Hall JSP, Servlet, & Struts Training Courses: https://www.doczj.com/doc/919591785.html,
Available in US, China, Taiwan, HK, and Worldwide
JSP and Servlet Books from Sun Press: https://www.doczj.com/doc/919591785.html,
Available in English, Chinese (simplified and traditional script),
and 12 other languages
用JSP脚本元素调用Java
代码
议程
?静态和动态文本
?动态代码和好的JSP设计
?JSP表达式
?servlet和JSP页面对类似任务的处理
?JSP scriptlet
?JSP声明
?预定义变量
?表达式、scriptlet和声明之间的对比
4JSP/servlet/Struts/JSF training: https://www.doczj.com/doc/919591785.html, 不同JSP 构造的应用
?脚本元素直接调用servlet 代码
?脚本元素间接调用servlet 代码(通过实用工具类)
?bean
?servlet/JSP 的组合(MVC)
?MVC 连同JSP 表达式语言
?定制标签
简单应用复杂应用
设计策略:限制JSP 页面内的Java 代码
?有两种选择:
–将25行Java 代码直接放在JSP 页面中
–将这25行代码放在单独的Java 类中,在JSP 页面中用一行代码调用它
?为什么第二种选择更好?
–开发。我们可以在Java 开发环境(编辑器或IDE )中编写单独的类,而非在HTML 环境中。
–调试。如果代码中含有语法错误,在编译时就能够直接看到。简单的打印语句可以直接看到结果。–测试。我们可以编写测试过程,每次更改后都通过循环进行上万次的测试。
–重用。多个页面都可以使用同一个类。
6JSP/servlet/Struts/JSF training: https://www.doczj.com/doc/919591785.html, 基本语法
?HTML 文本
–
–不加更改地传递给客户。实际上是由类似于下面的servlet 代码生成:
?out.print("
?HTML 注释
–
–和其他HTMl 一样:直接传递给客户
?JSP 注释
–<%--注释内容--%>
–并不发送给客户
?要输出<%,使用<\%
脚本元素的类型
?表达式
–格式:<%= expression %>
–求值并插入到servlet 的输出中。也就是会产生类似于out.print(expression)的语句?scriptlet
–格式:<% code %>
–逐字地插入到servlet 的_jspService 方法中(由service 调用)
?声明
–格式:<%! code %>
–逐字地插入到servlet 类的定义体中,不在任何方法之内
8JSP/servlet/Struts/JSF training: https://www.doczj.com/doc/919591785.html, JSP 表达式
?格式
–<%=Java Expression %>
?结果
–表达式被求值,转换成字符串,将按照它在JSP 页面中出现的位置插入到HTML 页面中。
–即,表达式在out.print 内放置在That is, expression placed in _jspService inside out.print
?示例
–当前时间:<%= new java.util.Date() %>–您的主机名:<%= request.getRemoteHost() %>?XML 兼容的语法
–
?原始的JSP
<%= Math.random() %>
?所产生的具有代表性的servlet 代码
public void _jspService(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {response.setContentType("text/html");
HttpSession session = request.getSession(true);JspWriter out = response.getWriter();
out.println("
...
}
10JSP/servlet/Struts/JSF training: https://www.doczj.com/doc/919591785.html, JSP 表达式:示例
…
testParam
form parameter:<%= request.getParameter("testParam") %>