Sun认证Java程序员考试旨在观察您通过应用软件分配进行复杂编程的能力,之后还要测试您完成编程所需的知识。下面是小编整理的关于SUN认证考试常见知识点,欢迎大家参考!
day1
JSP 定义:
1)Java Server Page, Java EE 组件,本质上是 Servlet。
2)运行在 Web Container.接收 Http Request,生成 Http Response(默认协议是 Http 请求和响应)
3)JSP 使得我们能够分离页面的静态 HTML 和动态部分——我们需要的技术。
4)使页面可以混和html代码、Java代码以及JSP标签;允许访问组件
Servlet的缺陷(JSP出现的原因):
1)写静态页面必须部署后才能看到效果,很难控制页面的外观。
2)从技术角度来说Servlet是Java代码和HTML静态代码的混合代码。
3)从市场竞争角度来说,微软推出了ASP产品。
JSP的改进:
1)JSP是标签式的文本文件(区Servlet是Java文件)
2)JSP不需要编译(其实是由服务器监测JSP文件的变化,再将其翻译成 Servlet 代码)
服务器对其进行编译并在第一次请求时创建一个Servlet实例。所以,第一次访问JSP页面时会后延迟
3)JSP不用写配置文件
4)JSP以静态代码为主,Java代码为辅。Servlet反之。
5)是J2EE蓝图的一部分(Servlet、JSP以及EJB是J2EE的三大组件)
JSP从本质上来说内核还是Servlet,但与Servlet不是替代关系而是一种互补的关系。
JSP适合于写显示层的动态页面,而Servlet则适合写控制层的业务控制(页面转发)。
JSP往纯标签方向发展,Servlet往纯代码方向发展,他们以Servlet内核(请求响应式的工作方式)往两个方向发展。
基本语法
一、JSP的声明(statement)
用来定义在产生的类文件中的类的属性和方法(成员变量)。可声明类(即是内部类)。
由于servlet是工作在多线程环境下,所以尽量不要在service方法体外声明成员变量。
//声明时要加"!",属于类成员,最先加载,可写于任何位置;不加则是脚本的局部变量,必须调用前写。
如: //变量的声明
//变量的调用
//函数的声明
//函数的调用
声明规则:
1) JSP中声明的变量和方法对应于Servlet中的实例方法和实例变量。这些将被同时请求该页面的所有用户所共享;
2) 在使用变量或方法前须先定义(不是说声明变量的位置在页面中要处于使用变量的前面,而是指变量不声明不能使用);
3) 声明的变量或方法的作用域为当前页面或包含的页面;
4) 语句间以分号分隔。
二、JSP代码段(Scriptlet)
是一段可以在处理请求时间执行的Java代码。可以产生输出,也可以是一些流程控制语句。
在代码段中定义的变量为service方法中的局部变量。
1._jspService()中的局部代码:
//在控制台打印出,网页上没显示
//打印在网页上
问:能否在JSP脚本里定义方法?
答:不能! //脚本相当于方法,不能在方法里定义方法
//可以声明方法
//编译出错;脚本不能定义方法
2.比较:
//成员变量
//_jspService()方法中的局部变量
//同一文件里,局部变量优先
3.脚本小程序规则:
1) 你使用的脚本语言决定了脚本小程序的规则;
2) 语句间以分号分隔;
3) 可以使用默认的对象、import进的类、declaration声明的方法和对象以及useBean tag中声明的对象。
三、JSP表达式(expression)
// "="号
在JSP请求处理阶段计算他的值,表达式生成的代码是Service方法中的一个代码片断。
JSP对于声明的处理:1、计算表达式的值
2、将值转换成String
3、用out.println发送标签;把数据输出至页面的当前位置
//out.println("Hello,JSP world");
// out.println(name);
//out.println(new java.util.Date());
表达式规则:
1) 你使用的脚本语言决定了脚本小程序的规则;
2) 执行的顺序为从左到右;
3) 分号不能用于表达式。
四、JSP指令(direction)
指令用于从JSP发送信息到容器上。用来设置全局变量,声明类,要实现的方法和输出内容等。
指令在JSP整个文件内有效。它为翻译阶段提供了全局信息。
// "@"符号
指令包括:page、include、taglib
1.page指令
import、session、errorPage、isThreadSafe
页面的语言、内容类型、字符集、页面编码
language:java唯一值,表示脚本中使用的编程语言
contentType:设置了内容的类型和静态页面的编码 (告诉浏览器以什么编码显示)
pageEncoding:页面本身的编码格式 (写页面时用的编码格式)
上面的代码等价于servlet里: response.setContentType("text/html; charset=gbk");
import:导入其他的包和类; 其中,JSP默认导入的包是java.lang.*
//具体的包和类
//包下的所有类
//连写,逗号分隔
Session:指示当前的jsp是否参与会话 (默认为true; 参与会话)
通过指令使当前页面与session不可会话:
session="true"时,可用内建对象session直接访问会话,例如:
errorPage:
isErrorPage:Jsp页面中出现异常的处理方式
对于有可能出现异常的页面:
//异常时会跳转到处理异常的页面;这页面自己写
在有可能异常的地方打印原因: throw new Exception("数据库连接出错");
对于处理异常的页面(error.jsp)里:
,其中使用把异常信息打印出来
isThreadSafe——此属性已经不再使用(已废弃)
当前Jsp页面是否线程安全 default--->true
//普通的Servlet,可以并发处理用户请求
//相当于Servlet实现了SingleThreadModel
2.include指令
把目标页面的内容包含到当前页面,产生页面叠加以后的输出效果 //相当于将两个页面合并;编译时就包含进来
//可插入任意位置
3.taglib指令
留在JSTL里讲解。
五、JSP中的注释
1.java格式注释
编译器会忽略掉此类注释中的内容(客户端的源码看不见)
2.html风格注释
编译器会执行此类注释中的代码(客户端的源码看得见)
等价于out.println("")
这种注释方式不好的地方就是当页面注释信息太多的时候会增大服务器的负荷。
还有注释信息需要在网络上传输,从而降低效率;内部程序员的测试数据一般不能写在这种注释中,以免泄露。
六、动作(Action)
JSP的动作包括:
forward、include、useBean、setProperty、getProperty
1.forward动作
形式:
等价于 Servlet中通过RequestDispatcher.forward();
可以传参数
2.Include动作
形式:
等价于 Servlet中通过RequestDispatcher.include();
Include动作也可以传参数
与比较:
include动作在运行期处理(include指令编译期),jsp:include包含的是所包含URI的响应,而不是URI本身。
这意味着:jsp:include 对所指出的 URI 进行解释,因而包含的是生成的响应。
对于页面是静态内容,这没有太大的关系。但如果是动态内容,include动作可传参数。
flush 属性
flush 指示在读入包含内容之前是否清空任何现有的缓冲区。
JSP 1.1 中需要 flush 属性,因此,如果代码中不用它,会得到一个错误。
但是,在 JSP 1.2 中, flush 属性缺省为 false。
建议:由于清空大多数时候不是一个重要的问题,因此,对于 JSP 1.1,将 flush 设置为 true;
而对于 JSP 1.2 及更高版本,将其设置为 false 或不设置(用默认值)。