记录一个咸鱼大学生三个月的奋进生活033
Jsp相关知识
Jsp创立的初衷:
Jsp是简化Servlet编写的一种技术,它将Java代码和HTML语句混合在同一个文件中编写,只对网页中的要动态产生的内容采用Java代码来编写,而对固定不变的静态内容采用普通静态HTML页面的方式来编写。
如果使用Servlet程序来输出只有局部内容需要动态改变的网页,其中所有的静态内容也需要程序员用Java程序代码产生,整个Servlet程序的代码将非常臃肿,编写和维护都将非常困难。
而对于大量静态内容的美工设计和相关HTML语句的编写,并不是程序员所要做的工作,程序员对此也不一定在行,网页美工设计和制作人员不懂Java编程,更是无法来完成这样的工作。
所以为了弥补 Servlet 的缺陷,SUN公司在Servlet的基础上推出了JSP(Java Server Pages)技术作为解决方案。
Jsp的主要概念: JSP(Java Server Page)是由sun公司制定的用java编写web应用程序的规范,技术,是建立在servlet规范之上的
这里要注意的是:我们常说的 JSP页面 = JAVA + DHTML (而不是说JSP等于JAVA+DHTML)
Jsp的执行原理
WEB容器(Servlet引擎)接收到以.jsp为扩展名的URL的访问请求时,它将把该访问请求交给JSP引擎去处理,每个JSP 页面在第一次被访问时,JSP引擎将它翻译成一个Servlet源程序,接着再把这个Servlet源程序编译成Servlet的class类文件,然后再由WEB容器(Servlet引擎)像调用普通Servlet程序一样的方式来装载和解释执行这个由JSP页面翻译成的Servlet程序。
Jsp首次运行:.jsp → .java → .class
之后的运行:直接访问 .class文件
Jsp中的脚本元素
在JSP页面中编写 Java代码需要嵌套在<%和%>中,Java代码中要有分号
<%和%>之内 的Java代码被称之为脚本片段
<%和%>之外 的内容被称之为JSP的模版元素
<%=和%>:Jsp表达式,Jsp表达式中不需要分号,其实这个就相当于Java代码中的out.print,而Jsp表达式转译成.java文件时代码之中也是如此
<%! 和%>中声明的都是全局变量
Jsp中的指令元素
page指令
在 Jsp中的任何地方、以任何顺序,一个页面可以包含任意数量的 page指令
page指令可以用于定义Jsp页面的各种属性,无论page指令出现在JSP页面中的什么地方,它作用的都是整个Jsp页面
为了保持程序的可读性和遵循良好的编程习惯,page指令最好是放在整个JSP页面代码的开头位置
page指令的常用属性:
language —— 定义要使用的脚本语言
import —— 将包和类导入Scriptlet(脚本片段)
buffer —— 设置用来存储客户端请求的缓冲区的大小
errorPage —— 定义处理异常的 JSP 页面
isErrorPage —— 表示当前页面能否作为错误页面
contentType —— 指定页面格式和所使用的字符集
include指令
include指令用于在编译当前JSP页面时将其他文件中的内容合并进当前JSP页面转换成的Servlet源文件中,这种在源文件级别进行引入的方式称之为静态引入,当前JSP页面与静态引入的页面紧密结合为一个Servlet
注意!! include指令是先包含后编译的,属于拷贝包含,当然 变量也会包含,所以两个页面里不能有相同的变量声明
include指令实现代码:<%@ include file=“文件的相对路径”%>
taglib指令
taglib指令是定义一个标签库以及其自定义标签的前缀
taglib指令实现例子:<%@ taglib uri=“http://www.jspcentral.com/tags” prefix=“public”%>
Jsp中的Action动作标签
JSP还提供了一种称之为Action的元素,在JSP页面中使用Action元素可以完成各种通用的JSP页面功能,也可以实现一些处理复杂业务逻辑的专用功能
Action元素采用XML元素的语法格式,即每个Action元素在JSP页面中都以XML标签的形式出现
JSP规范中定义了一些标准的Action元素,这些元素的标签名都以jsp作为前缀,并且全部采用小写:
jsp:include 标签 —— 动作引入
实现代码:<jsp:include page=”…”/> </jsp:include>
用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为 动作引入
他是先编译后包含的,与上面提到的include指令正好相反
所以两个页面里 可以有相同的变量声明
jsp:forward 标签 —— 动作跳转
实现代码:<jsp:forward page=”…”/> </jsp:forward>
用于把请求转发给另外一个资源,也就是跳转至另一个页面
jsp:forward 动作指令 之后的代码是不会执行的
使用 动作指令跳转的页面 跟 请求转发一样,浏览器的地址还是跳转之前的页面地址,但内容是跳转之后的内容
jsp:param 标签 —— 动作传参
实现代码:<jsp:param name=“参数名” value=“参数值”/>
使用 jsp:include 和 jsp:forward 标签引入或请求转发给Servlet或JSP页面时,就可以使用 jsp:param 标签向这个程序传递参数信息
设置参数后就可以用 request.getParameter(“属性名”)方法来获取param参数
include指令 和 jsp:include标签 的区别
① include指令 —— 静态包含
② 实现代码:<%@ include file=“文件的相对路径”%>
③ 先包含后编译
④ 两个页面里不能有相同的变量声明
① jsp:include —— 动态包含
② 实现代码:<jsp:include page=”…”/> </jsp:include>
③ 先编译后包含
④ 两个页面里可以有相同的变量声明
Jsp的注释
<!-- --> :这是html注释
<%-- --> :jsp页面的注释
// :Java代码注释
注意!之前说过Jsp文件的运行原理是先把.jsp文件转译为.Java文件,当.jsp文件转译为.Java文件时,html和Java注释会被保留,但是jsp注释并不会被保留
pageContext 页面信息对象
pageContext对象封装了当前JSP页面的运行信息,它提供了返回JSP页面的其他隐式对象的方法
pageContext对象的常用方法有:
.getException方法 —— 返回exception隐式对象
.getPage方法 —— 返回page隐式对象
.getRequest方法 —— 返回request隐式对象
.getResponse方法 —— 返回response隐式对象
.getServletConfig方法 —— 返回config隐式对象
.getServletContext方法 —— 返回application隐式对象
.getSession方法 —— 返回session隐式对象
.getOut方法 —— 返回out隐式对象
JSP 与 Servlet 的比较
JSP是一种以产生网页显示内容为中心的WEB开发技术,它可以直接使用模版元素来产生网页文档的内容
JSP页面的源文件要比Servlet源文件简单,并且JSP页面的开发过程要比Servlet的开发过程简单得多
JSP引擎可以对JSP页面的修改进行检测,并自动重新翻译和编译修改过的JSP文件,JSP技术是建立在Servlet技术基础之上的,所有的JSP页面最终都要被转换成Servlet来运行
在大型WEB应用程序的开发中,Servlet与JSP经常要混合使用,各司其职,Servlet通常用作控制组件,并处理一些复杂的后台业务,JSP则作为显示组件 (Jsp —— 负责显示)
一次响应过程可以划分成几个功能模块来协同完成,首先由Servlet完成流程控制和业务处理,并将结果数据存储在request或session域中,然后将请求转发到JSP页面 (Servlet —— 负责控制)
通过这种方式实现业务逻辑与显示内容的分离,从而将应用程序开发者和网页作者的工作分离
Jsp相关知识的思维导图:

学习Java面试题(对称加密 和 非对称加密 的区别)



照片分享
