不培养代码搬运工哦,想理解更多加:qq:116 159 0055
1、Tip:什么是JSP?
a、JSP全称是Java Server Pages,它和servle技能一样,都是SUN公司定义的一种用于开拓动态web资源的技能。JSP/Servlet规范。JSP实际上便是Servlet。
b、JSP这门技能的最大的特点在于,写jsp就像在写html,但它比较html而言,html只能为用户供应静态数据,而Jsp技能许可在页面中嵌套java代码,为用户供应动态数据。
2、Tip:JSP事理
3、JSP最佳实践
不管是JSP还是Servlet,虽然都可以用于开拓动态web资源。但由于这2门技能各自的特点,在长期的软件实践中,人们逐渐把servlet作为web运用中的掌握器组件来利用,而把JSP技能作为数据显示模板来利用。
其缘故原由为,程序的数据常日要美化后再输出:
让JSP既用java代码产生动态数据,又做美化会导致页面难以掩护。
让servlet既产生数据,又在里面嵌套html代码美化数据,同样也会导致程序可读性差,难以掩护。
因此最好的办法便是根据这两门技能的特点,让它们各自大责各得,servlet只卖力相应要求产生数据,并把数据通过转发技能带给jsp,数据的显示jsp来做。
4、Tip:JSP语法
JSP模版元素
JSP表达式
JSP脚本片断
JSP注释
JSP指令
JSP标签
JSP内置工具
如何查找JSP页面中的缺点
5、Tip: JSP模版元素
JSP页面中的HTML内容称之为JSP模版元素。
JSP模版元素定义了网页的基本骨架,即定义了页面的构造和外不雅观。
6、Tip: JSP脚本表达式
JSP脚本表达式(expression)用于将程序数据输出到客户端
语法:<%= 变量或表达式 %>
举例:当前韶光:<%= new java.util.Date() %>
JSP引擎在翻译脚本表达式时,会将程序数据转成字符串,然后在相应位置用out.print(…) 将数据输给客户端。
JSP脚本表达式中的变量或表达式后面不能有分号(;)。
看一下源文件
7、Tip: JSP脚本片断(1)
JSP脚本片断(scriptlet)用于在JSP页面中编写多行Java代码。语法:
<%
多行java代码
%>
把稳:JSP脚本片断中只能涌现java代码,不能涌现其它模板元素,JSP引擎在翻译JSP页面中,会将JSP脚本片断中的Java代码将被原封不动地放到Servlet的_jspService方法中。
JSP脚本片断中的Java代码必须严格遵照Java语法,例如,每实行语句后面必须用分号(;)结束。
8、Tip: JSP脚本片断(2)
在一个JSP页面中可以有多个脚本片断,在两个或多个脚本片断之间可以嵌入文本、HTML标记和其他JSP元素。
举例:
<%
int x = 10;
out.println(x);
%>
<p>这是JSP页面文本</p>
<%
int y = 20;
out.println(y);
%>
多个脚本片断中的代码可以相互访问,犹如将所有的代码放在一对<%%>之中的情形。如:out.println(x);
正规开拓中的JSP中不应涌现java脚本:标签封装
9、Tip: JSP脚本片断(3)
单个脚本片断中的Java语句可以是不完全的,但是,多个脚本片断组合后的结果必须是完全的Java语句,例如:
<%
for (int i=1; i<5; i++)
{
%>
<H1>www.it315.org</H1>
<%
}
%>
练习:一张表格,打印100行
10、Tip: JSP声明
JSP页面中编写的所有代码,默认会翻译到servlet的service方法中, 而Jsp声明中的java代码被翻译到_jspService方法的表面。语法:
<%!
java代码
%>
以是,JSP声明可用于定义JSP页面转换成的Servlet程序的静态代码块、成员变量和方法 。
多个静态代码块、变量和函数可以定义在一个JSP声明中,也可以分别单独定义在多个JSP声明中。
JSP隐式工具的浸染范围仅限于Servlet的_jspService方法,以是在JSP声明中不能利用这些隐式工具。
11、Tip: JSP声明?案例
<%!
static
{
System.out.println(\公众loading Servlet!\"大众);
}
private int globalVar = 0;
public void jspInit()
{
System.out.println(\"大众initializing jsp!\"大众);
}
%>
<%!
public void jspDestroy()
{
System.out.println(\"大众destroying jsp!\"大众);
}
%>
12、Tip: JSP注释
JSP注释的格式:
<%-- 注释信息 --%>
JSP引擎在将JSP页面翻译成Servlet程序时,忽略JSP页面中被注释的内容。HTML中的注释有什么不同,查看源文件办理。
13、Tip: JSP指令
JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是见告引擎如何处理JSP页面中的别的部分。在JSP 2.0规范中共定义了三个指令:
page指令
Include指令
taglib指令
14、Tip: JSP指令简介
JSP指令的基本语法格式:
<%@ 指令 属性名=\"大众值\"大众 %>
举例:<%@ page contentType=\"大众text/html;charset=utf-8\"大众%>
如果一个指令有多个属性,这多个属性可以写在一个指令中,也可以分开写。
例如:
<%@ page contentType=\公众text/html;charset=gb2312\公众%>
<%@ page import=\"大众java.util.Date\"大众%>
也可以写作:
<%@ page contentType=\公众text/html;charset=gb2312\"大众 import=\"大众java.util.Date\公众%>
15、Tip: Page指令
page指令用于定义JSP页面的各种属性,无论page指令涌如今JSP页面中的什么地方,它浸染的都是全体JSP页面,为了保持程序的可读性和遵照良好的编程习气,page指令最好是放在全体JSP页面的起始位置。
JSP 2.0规范中定义的page指令的完全语法:
<%@ page
[ language=\"大众java\"大众 ]
[ extends=\"大众package.class\"大众 ]
[ import=\"大众{package.class | package.}, ...\"大众 ]
[ session=“true | false” ]//true创建session工具
[ buffer=\"大众none | 8kb | sizekb\"大众 ]
[ autoFlush=\公众true | false\公众 ]
[ isThreadSafe=“true | false” ] false才继续SingleThreadModel接口
[ info=\"大众text\公众 ]
[ errorPage=\"大众relative_url\"大众 ]
[ isErrorPage=\"大众true | false\"大众 ]
[ contentType=\公众mimeType [ ;charset=characterSet ]\"大众 | \"大众text/html ; charset=ISO-8859-1\"大众 ]
[ pageEncoding=\公众characterSet | ISO-8859-1\公众 ]
[ isELIgnored=\"大众true | false\"大众 ]
errorPage属性的设置值为一起径(相对或绝对),如果以“/”开头,表示相对付当前WEB运用程序的根目录(把稳不是站点根目录),否则,表示相对付当前页面。
可以在web.xml文件中利用<error-page>元素为全体WEB运用程序设置缺点处理页面,个中的<exception-type>子元素指定非常类的完备限定名,<location>元素指定以“/”开头的缺点处理页面的路径。
如果设置了某个JSP页面的errorPage属性,那么在web.xml文件中设置的缺点处理将不对该页面起浸染。
16、Tip:利用page指令办理JSP中文乱码
JSP程序存在有与Servlet程序完备相同的中文乱码问题
输出相应正文时涌现的中文乱码问题
读取浏览器通报的参数信息时涌现的中文乱码问题
JSP引擎将JSP页面翻译成Servlet源文件时也可能导致中文乱码问题
JSP引擎将JSP源文件翻译成的Servlet源文件默认采取ISO8859-1编码,而JSP开拓职员可以采取各种字符集编码来编写JSP源文件,因此,JSP引擎将JSP源文件翻译成Servlet源文件时,须要进行字符编码转换。
如果JSP文件中没有解释它采取的字符集编码,JSP引擎将把它当作默认的ISO8859-1字符集编码处理。
如何办理JSP引擎翻译JSP页面时的中文乱码问题
通过page指令的contentType属性解释JSP源文件的字符集编码
page指令的pageEncoding属性解释JSP源文件的字符集编码
17、Tip: include指令
include指令用于引入其它JSP页面,如果利用include指令引入了其它JSP页面,那么JSP引擎将把这两个JSP翻译成一个servlet。以是include指令引入常日也称之为静态引入。
语法:
<%@ include file=“被包含组件的绝对URL或相对URL\"大众%>
个中的file属性用于指定被引入文件的路径。路径以“/”开头,表示代表当前web运用。
细节:
被引入的文件必须遵照JSP语法。
被引入的文件可以利用任意的扩展名,纵然其扩展名是html,JSP引擎也会按照处理jsp页面的办法处理它里面的内容,为了见明知意,JSP规范建议利用.jspf(JSP fragments)作为静态引入文件的扩展名。
由于利用include指令将会涉及到2个JSP页面,并会把2个JSP翻译成一个servlet,以是这2个JSP页面的指令不能冲突(除了pageEncoding和导包除外)。
18、Tip: taglib指令
Taglib指令用于在JSP页面中导入标签库,讲自定义标签技能时讲。
19、Tip:JSP运行事理和九大隐式工具
每个JSP 页面在第一次被访问时,WEB容器都会把要求交给JSP引擎(即一个Java程序)去处理。JSP引擎先将JSP翻译成一个_jspServlet(本色上也是一个servlet) ,然后按照servlet的调用办法进行调用。
由于JSP第一次访问时会翻译成servlet,以是第一次访问常日会比较慢,但第二次访问,JSP引擎如果创造JSP没有变革,就不再翻译,而是直接调用,以是程序的实行效率不会受到影响。
JSP引擎在调用JSP对应的_jspServlet时,会通报或创建9个与web开拓干系的工具供_jspServlet利用。JSP技能的设计者为便于开拓职员在编写JSP页面时得到这些web工具的引用,特意定义了9个相应的变量,开拓职员在JSP页面中通过这些变量就可以快速得到这9大工具的引用。
这9个工具分别是哪些,以及浸染也是笔试常常稽核的知识点。
20、Tip:JSP九大隐式工具
request
response
config
application
exception
Session
page
out
pageContext
21、Tip: out隐式工具
out隐式工具用于向客户端发送文本数据。
out工具是通过调用pageContext工具的getOut方法返回的,其浸染和用法与ServletResponse.getWriter方法返回的PrintWriter工具非常相似。
JSP页面中的out隐式工具的类型为JspWriter,JspWriter相称于一种带缓存功能的PrintWriter,设置JSP页面的page指令的buffer属性可以调度它的缓存大小,乃至关闭它的缓存。
只有向out工具中写入了内容,且知足如下任何一个条件时,out工具才去调用ServletResponse.getWriter方法,并通过该方法返回的PrintWriter工具将out工具的缓冲区中的内容真正写入到Servlet引擎供应的缓冲区中:
设置page指令的buffer属性关闭了out工具的缓存功能
out工具的缓冲区已满; 全体JSP页面结束
22、Tip: out隐式工具的事情事理图
<% out.println(\公众aaa\"大众); response.getWriter().write(\公众bbb\"大众) %>
23、Tip: out隐式工具的把稳事变
同时利用out和response.getwriter()输出数据。
用JSP实现文件下载。
24、Tip: pageContext工具
pageContext工具是JSP技能中最主要的一个工具,它代表JSP页面的运行环境,这个工具不仅封装了对其它8大隐式工具的引用,它自身还是一个域工具,可以用来保存数据。并且,这个工具还封装了web开拓中常常涉及到的一些常用操作,例如引入和跳转其它资源、检索其它域工具中的属性等。
25、Tip:通过pageContext得到其他工具
getException方法返回exception隐式工具
getPage方法返回page隐式工具
getRequest方法返回request隐式工具
getResponse方法返回response隐式工具
getServletConfig方法返回config隐式工具
getServletContext方法返回application隐式工具
getSession方法返回session隐式工具
getOut方法返回out隐式工具
pageContext封装其它8大内置工具的意义,思考:如果在编程过程中,把pageContext工具通报给一个普通java工具,那么这个java工具将具有什么功能?
25、Tip:pageContext作为域工具
pageContext工具的方法
public void setAttribute(java.lang.String name,java.lang.Object value)
public java.lang.Object getAttribute(java.lang.String name)
public void removeAttribute(java.lang.String name)
pageContext工具中还封装了访问其它域的方法
public java.lang.Object getAttribute(java.lang.String name,int scope)
public void setAttribute(java.lang.String name, java.lang.Object value,int scope)
public void removeAttribute(java.lang.String name,int scope)
代表各个域的常量
PageContext.APPLICATION_SCOPE
PageContext.SESSION_SCOPE
PageContext.REQUEST_SCOPE
PageContext.PAGE_SCOPE
findAttribute方法 (重点,查找各个域中的属性) EL表达式
26、Tip:引入和跳转到其他资源
PageContext类中定义了一个forward方法和两个include方法来分别简化和替代RequestDispatcher.forward方法和include方法。
方法吸收的资源如果以“/”开头, “/”代表当前web运用。
27、Tip: JSP标签
JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中供应业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以掩护。
28、Tip: JSP常用标签
<jsp:include>标签
<jsp:forward>标签
<jsp:param>标签
28、Tip: <jsp:include>标签
<jsp:include>标签用于把其余一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面实行时的引入办法称之为动态引入。
语法:
<jsp:include page=\"大众relativeURL | <%=expression%>\"大众 flush=\公众true|false\"大众 />
page属性用于指定被引入资源的相对路径,它也可以通过实行一个表达式来得到。
flush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新到客户端。
29、Tip: <jsp:include>与include指令的比较
<jsp:include>标签是动态引入, <jsp:include>标签涉及到的2个JSP页面会被翻译成2个servlet,这2个servlet的内容在实行时进行合并。
而include指令是静态引入,涉及到的2个JSP页面会被翻译成一个servlet,其内容是在源文件级别进行合并。
不管是<jsp:include>标签,还是include指令,它们都会把两个JSP页面内容合并输出,以是这两个页面不要涌现重复的HTML全局架构标签,
否则输出给客户真个内容将会是一个格式混乱的HTML文档。
30、Tip: <jsp:forward>标签
<jsp:forward>标签用于把要求转发给其余一个资源。
语法:
<jsp:forward page=\"大众relativeURL | <%=expression%>\"大众 />
page属性用于指定要求转发到的资源的相对路径,它也可以通过实行一个表达式来得到。
31、Tip: <jsp:param>标签
当利用<jsp:include>和<jsp:forward>标签引入或将要求转发给其它资源时,可以利用<jsp:param>标签向这个资源通报参数。
语法1:
<jsp:include page=\公众relativeURL | <%=expression%>\"大众>
<jsp:param name=\"大众parameterName\公众 value=\"大众parameterValue|<%= expression %>\"大众 />
</jsp:include>
语法2:
<jsp:forward page=\公众relativeURL | <%=expression%>\"大众>
<jsp:param name=\"大众parameterName\公众 value=\公众parameterValue|<%= expression %>\公众 />
</jsp:include>
<jsp:param>标签的name属性用于指定参数名,value属性用于指定参数值。在<jsp:include>和<jsp:forward>标签中可以利用多个<jsp:param>标签来通报多个参数。
32、Tip:映射JSP
<servlet>
<servlet-name>SimpleJspServlet</servlet-name>
<jsp-file>/jsp/simple.jsp</jsp-file>
<load-on-startup>1</load-on-startup >
</servlet>
……
<servlet-mapping>
<servlet-name>SimpleJspServlet</servlet-name>
<url-pattern>/xxx/yyy.html</url-pattern>
</servlet-mapping>
33、Tip:如何查找JSP页面中的缺点
JSP页面中的JSP语法格式有问题,导致其不能被翻译成Servlet源文件,JSP引擎将提示这类缺点发生在JSP页面中的位置(行和列)以及干系信息。
JSP页面中的JSP语法格式没有问题,但被翻译成的Servlet源文件中涌现了Java语法问题,导致JSP页面翻译成的Servlet源文件不能通过编译,
JSP引擎也将提示这类缺点发生在JSP页面中的位置(行和列)以及干系信息。
JSP页面翻译成的Servlet程序在运行时涌现非常,这与普通Java程序的运行时缺点完备一样,Java虚拟机将提示缺点发生在Servlet源文件中的位置(行和列)以及干系信息。
34、Tip:重点
到此为止,web开拓打仗到了4个域工具,这4个域工具是学习web的重点,也是笔试常常稽核的知识点
pageContext(称之为page域)
request(称之为request域)
session(称之为session域)
servletContext(称之为application域)
明确如下问题:
什么是域?
这4个工具的生命周期?
哪种情形下用哪种域工具。
1、request:如果客户向做事器发要求,产生的数据,用户看完就没用了,像这样的数据就存在request域,像新闻数据,属于用户看完就没用的
2、session:如果客户向做事器发要求,产生的数据,用户用完了等一下子还有用,像这样的数据就存在session域中,像购物数据,用户须要看到自己购物信息,并且等一下子,还要用这个购物数据结帐
3、servletContext:如果客户向做事器发要求,产生的数据,用户用完了,还要给其它用户用,像这样的数据就存在servletContext域中,像谈天数据。