一、基础概念

1)jsp:Java Server Page--web服务器设计标准,动态网站

2)web:world wide web 缩写www 万维网

3)url:统一资源标识符(网址)=协议名称+主机名/域名/IP地址+文件名(包含路径)

http:超文本传输协议

https与http的区别:https是以安全为目标的http通道,是http的安全版,在http下加入套接字SSL层,对传输页面进行加密。

二、JSP

1)JSP与Servlet

JSP设计的动态网页主要实现显示功能,JSP是服务器端脚本语言,降低了Servlet的使用难度。它提供了Servlet能够实现的所有功能,JSP是先被翻译成Servlet后才编译并运行的。

Servlet设计的动态网页主要实现控制功能。

2)JSP指令元素

<%@ 指令名称 属性1="属性值1" 属性2="属性值2" … %>

   page指令:定义整个页面的全局属性

    设计JSP程序(ch03_3_page.jsp),显示(服务器)系统的当前时间。

 由于要使用日期类对象,所以,要由page指令导入java.util.Date类,同时,由于页面中使用了汉字,需要使用支持汉字的编码,这里采用“UTF-8”编码,所以,需要page指令指定

contentType="text/html" 

pageEncoding="UTF-8"

import="java.util.Date"

   

include指令:用于包含一个文件

 taglib指令:引用第三方标签库

3)JSP动作元素

动作元素属于服务器端的JSP元素,它用来标记并控制JSP引擎的行为

JSP页面生命周期的第一阶段就是转换阶段,在该阶段JSP页面转换成包含相应Servlet的Java文件,容器根据如下规则将JSP中的元素转换成Servlet代码:

  • 有些指令在转换阶段产生Java代码,例如page指令的import属性产生Servlet类的import语句。有些指令仅仅通知容器关于页面的总体性质,例如page指令的contentType属性指定响应的内容类型,session属性指定页面是否参加HTTP会话。

  • 所有的JSP声明,都变成产生的Servlet类的一部分,它们被原样拷贝。这样声明的变量成为实例变量,声明的方法成为实例方法。

  • 所有JSP脚本,都变成_jspService()方法的一部分,它们也被原样拷贝。因此脚本中声明的变量变成_jspService()方法的局部变量,不能在脚本中声明方法,因为在Java语言中不能在方法中定义方法!!

  • 所有的JSP表达式,都变成_jspService()方法的一部分,表达式的值使用out.print()语句输出。

  • 所有的JSP动作都通过针对厂商的类来替换。

  • 所有表达式语言EL通过计算后使用out.write()语句输出。

  • 所有的模板文本,都成为_jspService()方法的一部分,模板内容使用out.write()语句输出。

  • 所有的JSP注释都被忽略

  • 在JSP页面的转换阶段,容器在_jspService()方法中声明并初始化一些变量,可以在JSP页面脚本中或表达式中直接使用这些变量。这些变量是由容器创建的对象,因此也被叫做隐含对象或内置对象

注意事项:

  • 因为JSP页面的声明中定义的变量和方法都变成产生的Servlet类的成员,所以它们在页面中出现的顺序无关紧要。

  • 由于脚本将被转换成Servlet的_jspService()方法的一部分,因此脚本中声明的变量成为该方法的局部变量,故它们出现的顺序很重要。下面的代码将不能被编译

        <%  String s=s1+s2; %>    //s2在声明之前使用的

        <%! String s1="hello"; %>

        <%  String s2="hello"; %>

        <%  out.print(s); %>

  • 在Java语言中,实例变量被自动初始化为默认值,而局部变量使用之前必须明确赋值。因此在JSP声明中声明的变量被初始化为默认值,而脚本中声明的变量使用之前必须明确初始化。

  • 需要注意的是,实例变量是在容器实例化Servlet时被创建的并只被初始化一次,因此在JSP声明中声明的变量在多个请求中一直保持它们的值,而局部变量对每一个请求都创建和销毁一次,因此脚本中声明的变量在多个请求中不保持其值,而是在JSP容器每次调用_jspService()方法时被重新初始化

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐