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

原文地址:https://www.cnblogs.com/Rain1203/p/10937328.html