`
阅读更多
工作原理:

1.翻译阶段:当容器接受到客户端的请求后,先判断被请求的jsp是否存在,若不存在返回404错误,如存在,将该jsp先翻译成一个servlet

2.编译阶段:将servlet的源文件编译成一个字节码文件,然后有容器将其装载进虚拟机并构造出一个实例对象(单例)。

3.执行阶段:按照servlet生命周期(init(),service(),destory())的过程来运行servlet。

补充:如果被请求的jsp已经有对应的servlet实例对象,那么直接运行该servlet。如果jsp的源文件发生变化,那么要重新将jsp翻译成servlet,再编译,装载和实例化,最后运行。

-----------------------------------------------------------------------------------------------------------------------------

MVC

1.M(Model)--------------->JavaBeans

2.V(view)----------------->jsp

3.C(Controllor)---------->servlet

-----------------------------------------------------------------------------------------------------------------------------

JSP中的元素

1.脚本元素

a.声明(declaration)

语法:<%!declaration%>

作用:为servlet声明一些成员变量,成员方法和内部类

注意:声明的内容处于jspService()方法之外。另外,在声明中不能使用表达式和隐含对象。

b.表达式(expression)

语法:<%=expression%>

作用:将expression写入到输出流中,expression的内容最终显示在页面上。

expression可以是变量、(算术、逻辑、关系表达式)、带返回值的方法、9种隐含对象。

表达式中的输出值都一律被转换成字符串后再写到输出流out(JspWriter)中

注意:expression中不能出现(;)

c.脚本(scriptlet)

语法:<%java code%>

作用:在jsp中嵌入java代码

注意:脚本(java代码)被翻译进servlet的jspservice()方法中。

2.指令元素

a.page指令

语法:<%@ page attribute="attributeValue"....%>

作用:利用page指令中的这些属性可以和容器进行通信,这些属性的设置对整个jsp都有影响。

b.include指令

语法:<%@ include file="url"%>

称为静态导入。比如:页面的logo和版权信息。

作用:在当前jsp中导入另一页面的内容(这些内容一般不变化)。

特点:在jsp翻译成servlet时就将被导入的页面内容嵌入到jspService()中,发生在编译阶段。

优点:执行效率高。

缺点:若被导入的页面的内容一旦发生变化,那么jsp必须要重新被翻译。

c.taglib指令

语法:<%@ taglib url="/web-inf/a.tlb" predix="**"%>

作用:用于在jsp中制定要使用的标签库描述文件的(*.tld)路径.

3.动作元素

a.动态导入

语法:<jsp:include page="url" flush="true/false"/>或者

<jsp:include page="url" flush="true/false">

[<jsp:param.../>]*

.......

</jsp:include>

作用:在一个页面导入另外一个页面的内容

特点:动态导入发生在执行阶段,也就是在运行servlet的时候才动态生成被导入页面的内容,然后嵌入到调用页面,最后两个页面的内容一起返回给客户端

注意:在翻译阶段并没有导入

缺点:执行效率没有静态导入高。

优点:如果被导入的页面内容发生变化,不必重新编译。

b.forward

语法:<jsp:forward page="url"/>

--------------------------------------------------------------------------------------------------------------------------------

jsp注释

1.html/xml注释

语法:<!----content------>

特点:被注释的内容会出现在翻译后的servlet中,也会出现在客户端的页面的源文件中,但是不会显示在浏览器中。

注意:只能注释html,xml,不能注释java代码。

2.隐藏注释

语法:<%----content----%>

特点:被注释的内容不会出现在翻译后的servlet中,在客户端也不会出现。

注意:可以注释jsp中所有的内容。

3.脚本注释

语法:<%

//java code

/**java code*/

%>

特点:被注释的内容出现在翻译后的servlet中,但是不会出现在客户端。

------------------------------------------------------------------------------------------------------------------------------

JSP内置对象

名称                             类型                                                  注释和范围

request                       javax.servlet.http.httpRequest        request                      

response                    javax.servlet.http.httpResponse      response

pageContext              javax.servlet.jsp.PageContext         page

session                       javax.servlet.http.httpSession        session

application                  javax.servlet.ServletContext           ServletContext

out                             javax.servlet.jsp.JspWriter               output stream

config                         javax.servlet.ServletConfig               ServletConfig

page                          javax.lang.Object                              page

exception                   javax.lang.Throwable                        page

----------------------------------------------------------------------------------------------------------------------------

jsp异常处理

1.jsp中处理异常的方式

a)在有异常出现的jsp中,设置page指令中的属性errorPage="处理异常的目标页面",这样当有异常出现的时候,直接跳转到errorPage指定的目标页面来处理异常。

b)在处理异常的目标页面中,设置page指令中的属性isErrorPage="true",告诉容器自己就是来处理异常的,这样就可以使用隐含对象exception来处理异常。

2.通过容器来处理异常(配置web.xml)

<error-page>

<exception-type>

异常类型

</exception-type>

<location>

处理异常的目标页面

</location>

</error-page>

当系统出现了某种异常,容器会判断这种异常的处理方式是否在web.xml中进行配置,若有就按照指定的处理方式处理;若没有就将异常处理交给虚拟机,虚拟机再抛给用户。

3.对错误代码(如404)的处理,通过容器在web.xml中配置。

<error-page>

<error-code>

404

</error-code>

<location>

404.jsp

</location>

</error-page>



jsp笔记
Jsp总结

Wha
JSP(IAVA SERVER PAGES)是由Sun 公司在java语言上开发出来的一种动态网页制作技术

Why
可以将网页中的动态部分和静态的HTML相分离。您可以使用平常得心应手的工具并按照平常的方式来书写HTML语句。然后,将动态部分用特殊的标记嵌入即可,这些标记常常以“<%”开始并以“%>”结束

How
使用十大对象
request, response, out, session, application, config, pageContext,  page, exception, cookie
out  向客户端输出数据
request 向客户端请求数据
response 封装了jsp产生的响应,然后被发送到客户端以响应客户的请求
application 应用程序级对象(即应用程序上下文),多个用户之间共享信息
config 表示Servlet的配置
pagecontext 为JSP页面包装页面的上下文
session 会话对象
exception 反映运行的异常
page  JSP网页本身
cookie  缓存

他们分别继承于
①request         javax.servlet.http.HttpServletRequest
②response        javax.servlet.http.HttpServletResponse
③pageContext     javax.servlet.http.PageContext
④session         javax.servlet.http.Httpsession
⑤out            javax.servlet.jsp.JspWriter
⑥application      javax.servlet.servletContext
⑦config          javax.servlet.servletConfig
⑧page           java.lang.Object
⑨exception       java.lang.Throwable

Jsp的生命周期
1, 编译为java文件
2, 实例化
3, 初始化
4, 服务
5, 销毁


Jsp的工作原理:
客户端请求jsp页面jsp解析为*.jsp,编译为*.javajavac命令编译为*.class执行class文件响应,返回结果给客户端

jsp的优点
简便性:和一般的静态网页很相似
更新速度快:因为是基于服务器的,时刻保持最新版本

Jsp的缺点:
   性能较低,因为含有html,js,css代码,层次不清晰
   安全性低,源代码会暴露在客户端

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics