jsp入门
IE浏览器访问JSP页面时,Web服务器是如何调用并执行一个jsp页面的?(Servlet)
在浏览器访问jsp页面的时候,我们会进行一个判断:
1如果是第一次访问这个jsp,那么服务器就会进行一个翻译动作,然后把翻译为一个servlet的java文件存在work的该主机目录下,也就是说我们,调用时候会调用这样的形式,在work目录下去调用class的文件!这样会进行一个编译!然后给我们显示!
2如果不是第一次访问,则直接访问jsp!
Web服务器在执行jsp页面时,是如何把Jsp页面中的html排版标签发送到客户端的?
jsp是一个servlet,这样jsp有内置对象out是一个输出流!out会有一个缓存区!而我们的response的werite没有!如何设置?我们可以通过
在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页面的编码,指定out或response的输出流的编码,以及给浏览器的头信息中浏览器的编码!
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的输出流一样!也就是说他的out和response的getOutputStream会有冲突!
输出问题:
他和response的writer的作用!
这幅图就是说明了jsp的out输出流到底会怎么样!首先他会输出到缓存,当满了之后就会输出到response的缓存中去!
或者是等该jsp执行完也会刷新到里面去!理解了原理,就可以知道输出结果结果了!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。