jsp(13)(jsp原理和语法)

1.jsp其实也是一个servlet。

服务器会把jsp解析成一个继承httpJspBase的类,而HttpJspBase这个类是继承httpservlet的。
(这个类存放在tomcat下的work目录中)

 

对于jsp中的标签采用输出流的方式输出html标签,对于jsp中的java直接放入类中

 

jsp中能够直接使用一些对象的原因是在其编译后的servlet已经定义好(即;隐式对象):

 

2.为什么不直接使用servlet,选择jsp: 

jsp最佳实践,即:最合适用在什么地方。

原因是:

所以servlet一般用业务处理,而jsp布局显示。

3.jsp语法:

3.1.模板元素:

3.2.脚本表达式:

如:注意没有分号(;)结尾

能直接输出的原因是,作为一个输出参数(源码):

 3.3.脚步片段:

脚本片段之间可以插入html代码,并且所有片段java代码是同一个类,可以相互调用。
单独的片段代码可以不完整,但是所有组合起来的java代码要遵守java语法规范。

这样组合起来使用可以控制html代码:(一般不使用,代码会太乱)

3.4.jsp声明:<%!   %>,常规java代码块是方法的成员(解析到方法中),这种声明作为类的成员。

 

 3.5.jsp注释:<%-- --%>,被注释的内容不会发送给浏览器。

html注释:<!-- --!>,被注释的html内容会发送给浏览器,只是不显示。

注意:用html注释是不能注释java代码的因为服务器只会解析jsp注释。

3.6.jsp指令:(一些固定属性和处理方式)

3.6.1.page指令:用于定义jsp页面的属性,不管定义在哪个位置作用都是整个页面,但习惯放在最上面。(jsp2.0语法规范:)

(对于session和exception默认不会在servlet的方法中创建这2个对象属性,需要设置下面的属性开关)

isThreadSafe=true,即:

 

错误处理页面:

 

单个页面异常,跳转页配置,如果当前页面中配置了异常跳转页,出现异常,不会再去执行xml中全局的异常跳转页面,局限就是每个页面都有配置一个:

即:优先级高于web.xml配置

 

可以在WEB-INF/web.xml配置全局异常跳转的页面:(exception-type)

还可以配置不存在的跳转页面(error-code),针对不同错误码配置不同跳转页面。

(对于错误路径也可以用通配符配置映射路径)

404:找不到页面,500:服务器异常,针对上面那种页面异常。

 

将错误显示页面增加isErroorPagge=ture,意味在错误显示页面可以使用上个页面的产生的异常对象。

(原因是:解析jsp的时候,会将产生的异常对象传递给该servlet,)

 

为true时,(源码中的)在方法中添加了一个exception属性。

 

 

关于contentType和pageEncoding的用法,解决JSP乱码问题直接使用pageEncoding就可以了(contentType可以省略)。

 

3.6.2.include标签:又称静态包含,是将多个页面解析成一个servlet。

注意:包含的页眉,页脚的页面不要有<html> <body>等布局标签,因为主页面本身就有这些标签,造成html标签冗余。

细节补充:

 

还有一种动态包含:

是把每个包含页面分别解析成不同的servlet,运行时,动态加载到一起。

(效率低于编译在一起的静态包含方式)

 

 

4.jsp映射:jsp其实也是一个servlet,也可以类似servlet映射的方式将地址映射到jsp上

(注意在web.xml配置中jsp是jsp-file标记;servlet是servlet-class)

 

posted @ 2017-02-07 07:07  假程序猿  阅读(260)  评论(0)    收藏  举报