jsp入门

IE浏览器访问JSP页面时,Web服务器是如何调用并执行一个jsp页面的?(Servlet)

在浏览器访问jsp页面的时候,我们会进行一个判断:

1如果是第一次访问这个jsp,那么服务器就会进行一个翻译动作,然后把翻译为一个servletjava文件存在work的该主机目录下,也就是说我们,调用时候会调用这样的形式,在work目录下去调用class的文件!这样会进行一个编译!然后给我们显示!

2如果不是第一次访问,则直接访问jsp

 

Web服务器在执行jsp页面时,是如何把Jsp页面中的html排版标签发送到客户端的?

 

jsp是一个servlet,这样jsp有内置对象out是一个输出流!out会有一个缓存区!而我们的responsewerite没有!如何设置?我们可以通过

xml文件中!out会输出这些标签,原封不动!

 

Jsp页面中的java代码服务器是如何执行的?

 

会自动打包到生成的servlet中的service方法中!

 

Web服务器在调用jsp时,会给jsp提供一些什么java对象?

 

有九个内置的对象!

 

实际开发:

servlet会控制用户逻辑!jsp是页面显示!放到WEB_INF下!

 

 

jsp语法:

 

1.jsp模板元素

2.jsp的语法:

<%=  java表达似乎%>

<%

Java语句

%>

原理:在对应的Servlet中,就直接把其中的脚本片段放到service方法中。

注意:实际开发中,JSP中不能出现一行java脚本片段,也不能出现一个脚本表达式。

                    自定义标签                        EL表达式

 

3jsp注释<%--注释  --%>

 

4.jsp声明<% 可以定义一切方法%>

5jsp的指令:指令也就是制定了页面是如何输出的规范!

通常的格式有<%@ 指令  属性名=“属性值”   %>

 

1.page就是为了配置页面上的各种属性

page的属性有:

1lanuage = "java"那么现在;lanuage是支持java一种规范!默认为java

2Extends =.class”是说该jsp继承了什么java类,这里就是默认的不要修改!

3Import = "java.*.*"这里说的是jsp所导入的java的包,默认导入

Java.lang

Java.servlet.*

Java.servlet.jsp.*

Java.servlet.http.*

其中可以再一个属性名中添加多个属性值用,分割

4Session = true”是否创建session对象?默认为true

5Buffer = none|8kb|sizekb”这里是说out对象的是否要开缓存?为多大?默认8kb

6autoFlush=true”自动刷新?

7isThreadSafe ="flase"默认为flase的,表示是否继承一个过期接口

8Info=text

9errorPage=“路径”这里是设置错误后页面的定向!也就是说页面还可以:

配置全局错误消息页面:(不是转发)

web.xml

<error-page>

<exception-type>java.lang.Exception</exception-type>

<location>/error.jsp</location>

</error-page>

<error-page>

<error-code>404</error-code>

<location>/404.jsp</location>

</error-page>

如果你配置了该属性,那么全局的不会起作用!

10*isErrorPage:默认值是false。

指示JSP对应的Servlet中生不生成exception对象。

利用该对象,记录错误日志

11*contentType:指定JSP中的内容的MIME类型。与response.setContextType效果一样。

MIME类型:大类型/小类型

html--->text/html

css---->text/css

bmp---->image/bmp

jpg---->image/jpeg

12*pageEncoding:指示JSP引擎读取JSP时使用的编码。默认值是ISO-8859-1

注意:它的功能还兼备contentType的能力。

13*isELIgnored:是否忽略EL表达式。默认值false。

注意:关于jsp的乱码:

输出的时候乱码:

也就是说你的jsp页面本身是有编码的,你的编码是jsp页面的的编码指定和工具有关,但是ContextType是有指定编码的功效,我们可以设定了ContextType就是是保证了页面的response没有乱码,但是翻译还是会有问题!

翻译过程的乱码:

为什么会导致乱码?由于我们在翻译jsp页面的时候会把jsp页面使用默认编码:iso8859-1那么我们可以指定:pagencoding属性设置!而且这个功能还具有ContextType的功能:可以去规定out对象的输出编码!

 

解决:

也就是说我们在编程jsp的时候只要指定一个pageEncoding就可以了!

 

明白ContextPage的作用:标示jsp页面的编码,指定outresponse的输出流的编码,以及给浏览器的头信息中浏览器的编码!

pageEncoding的作用:主要是指定jsp翻译的时候用的编码,也具有所有ContextType的做用!

2include

include指令的作用是页面的静态导入:

<%@include  file="url"%>

这种作用是导入另一个页面,但必须满足:1导入的jsp页面符合jsp规范!

     2导入的jsp页面的指令不可冲突!除了pageEncoding和导包意外

3taglib

用于自定义标签的时候用!

语法:<%@taglib uri="引入的外部标签的名称空间" prefix="使用前缀"%>

作用:引入外部定义的标签。

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

jsp常用的动作元素:

也就是jsp常用的几个标签体:为的就是在jsp页面中不要出现servlet程序代码

1<jsp:include page="url" flush="true">

区别于指令include的静态,这个标签是一个动态标签!这样的导入也叫动态导入!

区别:静态导入:include指令:他会将两个页面合并为一个jsp翻译为servlet也就是说只会有一个out输出流!

动态导入:include标签:他会将每一个页面翻译为servlet然后共同输出,也就是说会有两个out输出流!也就是为什么会有属性flush的原因了!

 

2<jsp:forward page="url">标签:

这个的所用是转发:那么他的转发url会是一个相对路径,可以是一个表达式!

3<jsp:param name="" value="">这个标签的作用就是为了<jsp:include><jsp:forward>标签的传递参数!

jsp内置的九大对象:

application------------servletContextd的对象

servletConfig---------ServletConfig的对象

request-----------------httpServletResponse的对象

response---------------httpServletRequest的对象

page--------------------是代表当前jsp的引用

session------------------是当前的seesion,这个和page指令的session有关!

exception--------------是否产生异常,和page指令的iserrorPage指令有关

关键:

out-----------------------jsp的字符输出流!他的作用是response的输出流一样!也就是说他的outresponsegetOutputStream会有冲突!

输出问题:

他和responsewriter的作用!

 

这幅图就是说明了jspout输出流到底会怎么样!首先他会输出到缓存,当满了之后就会输出到response的缓存中去!

或者是等该jsp执行完也会刷新到里面去!理解了原理,就可以知道输出结果结果了!

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。