JSP
现在我们开发jsp用的比较少了,但还是了解一下吧。
一、JSP
1、什么是jsp?
--jsp全面 java server page,中文名叫java服务器页面,其根本是一个简化的Servlet设计。jsp是由sun公司倡导、许多公司参与而建立的动态网页技术标准。它在HTML中嵌入java代码和jsp标签,构成了jsp网页。在接收到用户请求时,服务器会处理java代码片段,然后将生成的处理结果HTML页面返回给客户端,客户端浏览器负责展示最终的页面结果。
2、jsp优势?
1)、跨平台;
2)、业务代码分离;
3)、组件重用(javaBean);
4)、继承Java Servlet功能;
5)、预编译。
3、jsp劣势?
1)、产品复杂性强;
2)、受限于内存。
4、九大内置对象?
1)、request对象:主要封装客户端的请求信息,通过request了解客户请求,做出响应,是HttpServletRequest的实例。
2)、response对象:主要封装响应客户端请求的信息,但在jsp中很少直接使用,是HttpServletResponse的实例。
3)、session对象:指的是客户端与服务器的一次会话,从客户端连接服务器的一个WebApplication开始,到客户端与服务器断开结束,是HttpSession的实例。
4)、out对象:是客户端输出内容的常用对象,是JspWriter的实例。
5)、page对象:就是指向当前jsp页面本身,有点像类中的this,是java.lang.Object类的实例。
6)、application对象:application对象实现了用户间数据的共享,可存放全局变量。开始于服务器的启动,结束于服务器的关闭,在此期间此对象一直存在。在用户的前后连接或不同用户之间连接中,可以对此对象的同一属性进行操作。在任何地方对此对象属性进行操作,都将影响到其他用户对此的访问。是ServletConttext类的实例。
7)、exception对象:是页面在运行过程中出现意外产生的对象。如果一个jsp页面要使用此对象,要将isErrorPage设为true。
8)、pageContext对象:提供了对jsp页面内所有对象及名字空间的访问,也就是说它可以访问到本页所在的session,也可以取本页面所在的application的某一属性值,相当于页面中所有功能的集大成者。
9)、config对象:是在一个Servlet初始化时,jsp引擎向它传递信息用的,此信息包括Servlet初始化时所用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)。
5、jsp语法?
1)、<% java代码 %>可以编写java代码;
2)、<%=XXX%>输出结果;
3)、注释:<%-- --%>jsp注释;//java单行注释;/**/java多行注释;<!-- -->会显示在浏览器端源码中;
4)、jsp中声明方法与属性(全局变量):<%! 方法、属性%>
6、jsp三大指令?
1)、page指令:用来声明jsp页面的属性;
2)、include指令:比较简单只有一种形式:<%@ include file="relativeURL"%> relativeURL:应用程序内另一个jsp文件或者HTML文件路径;例如:网址内所有页面均有一个统一的页眉,就可以使用这个指令将其包含进来;
3)、taglib指令:用来指明jsp页面内使用的jsp标签库。taglib指令有两个属性,url为类库地址,prefix为标签的前缀。如:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
7、jsp的四大作用域?
1)、page作用域:代表变量只能在当前页面上生效;
2)、request作用域:代表变量只能在一次请求中生效,一次请求可能包含一个页面,也可能包含多个页面,比如页面A请求转发到页面B;
3)、session作用域:代表变量能在一次变量中生效,基本上就是能在web项目下都有效,session的使用也跟cookie有很大关系。一般来说,只要浏览器不关闭,cookie就会一直生效,cookie生效,session的使用就不会受到影响;
4)、application作用域:代表变量能在一个应用下(多个会话),在服务器下的多个项目之间都能够使用,比如baidu、wenku等共享账号。
二、EL表达式
1、什么是EL表达式?
--全名Expression Language,是为了使jsp写起来更加方便的表达式语言。
2、语法?
--${},只能写在HTML中,不能写在<%%>括起来的java代码中。
3、EL表达式的内置对象?
--pageScope , requestScope , sessionScope , applicationScope , pageContext , param , paramValues , header , headerValues , cookie , initParam
pageScope , requestScope , sessionScope , applicationScope代表四个作用域对象;
pageContext:表示jsp中的内置对象pageContext,能获取request等其他jsp八大内置对象;
param:表示一个请求参数 ${param.username} 等效于 request.getParameter("username");
paramValues:表示一组请求参数 ${paramValues.loves} 等效于 request.getParameterValues("loves");
header:表示一个请求头 ${header.referer} 等效于 request.getHeader("referer");
headerValues:表示一组请求头 ${header.cookie} 等效于 request.getHeaders("cookie"),获取的请求头参数中的内容是一组内容,比如cookie可以是多个cookie一起传过来;
cookie:获取cookie对象;
initParam:web项目初始化参数,servletContext.getInitParameter("xxx");
还有一种特殊的用法,直接获取对象变量,${user.username} user作为User的一个实例对象,并且存放在page的作用域中,上面代码的意思是,依次从page , request , session , application 作用域查找user对象,直到找到为止,底层使用的是pageContext.findAttribute();是一样的效果。
三、JSTL标签库
1、什么是JSTL?
--前面我们介绍过,为了减少在HTML中嵌入java代码,我们使用EL表达式,但EL表达式无法能力有限,比如遍历集合等,所以我们引入了JSTL标签库,配合EL表达式使用。
JSTL标签库比较偏前端了,就不具体总结了,有需要的同学可以自己百度学习下,或者参考下博主 一杯凉茶的博文 https://www.cnblogs.com/whgk/p/6432786.html