JSP

1、什么是jsp

JSP: 全称是 Java Server Page,由早前的 sun 公司倡导,很多企业一起参与研发的动态网页技术。

2、为什么会出现JSP

平常我们见到的 html 网页属于静态网页, 很难在它显示一些动态改变的数据, 比如查询学生列表, 搜索具体某个员工信息 ,这些数据由于都是存放在服务器的数据中 。 需要从数据库中取出来,然后显示到网页上。 html 网页时无法完成这项工作的, 这时候就需要jsp了。 jsp 其实可以看成是 java + html 的结合体 , 可以在jsp网页中编写java代码 。另外 jsp最后会被翻译成一个 java 类, 这个 Java 类,实际上技术一个 HttpServlet 翻译成 java文件存放在 : tomcat目录/work/Catalina/localhost/项目名/org/apache/jsp 里面

3、三大指令集
1)page:

用于设置当前页面的一些信息。 默认创建好jsp, 就会在最上面第一行,加入该指令了。
anguage : java 指定页面里面可以使用java语言,其实就是可以使用java代码
contentType : text/html;charset=utf-8 用于表示当前页面的内容类型以及使用的编码。 这个属性其实是告诉浏览器的。
pageEncoding : 页面内容编码。
session : 表示页面中是否可以直接使用 session 对象,其实对应背后的是 ,jsp翻译成java后,在代码里面时候会调用 getSession()创建内置session对象。 默认是true。表示会创建session对象
import: 导包,一般不用手动导包,
isELIgnored : 表示 页面中是否忽略EL表达式, 通俗的说是: 页面能够识别jsp表达式。 errorPage :表示该界面假设有错误,那么会跳转到哪个页面去。 要求的值是一个页面地址。
isErroPage : 这个属性与上面的是分开的。用于表示当前页面时错误页面。

2)include:

可以嵌套另外一个jsp页面的内容 <%@ include file=“a.jsp” %> ----> 表示,引入a.jsp的内容。
该行代码可以写在body里面。 假如是在A页面上使用 <%@ include file=“B.jsp” %> 从页面上看 , 确实是两个 jsp 的内容组合到一起了。但是从背后翻译成的 java 文件看, 里面做了很多重复的标签输出。 其实就是既输出 A.jsp , 也输出了 B.jsp

3)taglib

用于导入标签库 ,多用于引入 JSTL标签库 <%@ taglib prefix="c"uri=“http://java.sun.com/jsp/jstl/core” %>
uri: 表示标签库路径地址
prefix : 表示别名,或者称之为前缀也可以。

4、JSP动作标签
1)forword

跳转页面使用, 其实是请求转发的简写方式而已。 与request.getRequestDispatcher("").forward(request, response); 等同。
<jsp:forward page=“aa.jsp”></jsp:forward>

2)include

这个是一个包含的动作标签。 它的作用,与上面的 include 指令是相同的, 都可以包含某一个 jsp 页面进来显示。但是两者还是有区别的。
include 指令: 把 jsp 的网页源码全部包含进来jsp
include 动作标签: 只会包含 jsp 的运行结果。 如果想让自己印象更深刻一点, 最好去查看 jsp 被翻译成的 java 文件,

3)param
用于指定参数的意思。 这个jsp:param 可以在其他两个动作标签里面嵌套使用 , 如:

<jsp:forward page="a.jsp">
	<jsp:param  name="name" value="zhangsan"/>
</jsp:forward>
取值: 
	<%= request.getParameter("name") %>  
即可得到参数 name 的值  zhangsan  

5、内置对象
1)pageContext 【PageContext】

对应的类型是 PageContext . 该对象是四个作用域之一, 一般使用该对象来存取值 以及 获取其他八个内置对象(但是由于其他内置对象都可以直接使用,所以该作用一般比较少用了)
存取值 :setAttribute 和 getAttribute
注意: 该对象所存的值, 只能在该页面上取出来, 也就是说: 它的作用域值能是当前页面。

2)request 【HttpServletRequest】

该对象是 HttpServletRequest 的实例, 在这里的使用手法与java 代码中的使用手法是一样的。 该对象是四个作用域之一 ,
通常在 jsp 页面用来存取值 和 跳转。

  • 跳转:request.getRequestDispatcher("").forward(request, response);
  • 存取值: setAttribute 和 getAttribute .
    注意: 该对象的作用域 ,仅限于一次请求中。当服务器对该请求做出响应后,就无法在其他的地方获取里面存的值了。

3)session 【HTTPSession】

默认情况下, jsp 翻译成 java 文件后, 会在里面的方法调用 request.getSession(). 那么咱们可以直接在 jsp 里面使用 session 对象。 当然这有一个开关来确定的。 即, 在顶部的 page 指令里面有一个属性叫做 :session=“true” 默认即是 true, 如果是 true , 那么就会创建 session 对象。 所以可以连起来理解就是 :
如果顶部的 page 指令中的 session 属性 的值 是 false , 那么我们在 jsp 页面上,将无法使用 session
对象。因为翻译成的 java 类中,根本没有创建这个对象。 我们一般使用这个对象来存取值。 它是四个作用域之一

  • 存取值 其实就是setAttribute 和 getAttribute 而已。 不过需要注意的是: 该对象存的值是一次会话(多次请求和响应)内有效。

4)application 【ServletContext】

该对象是 ServletContext 类的实例, 可以做ServletContext的事情。
但是一般在jsp页面里面,我们使用该对象,多数情况都是来进行存值和取值。它是四个作用域之一 也就是说,我们使用该对象最多的两个方法是:
setAttribute(“name” ,“zhangsna”) getAttribute(“name”); 注意:
该对象的作用域是最大的,直到服务器停止。也就是说,在A.jsp页面中使用该对象存值, 在任何一个jsp页面上,都可以取值。

5)response 【HttpServletResponse】

该对象其实跟给大家介绍过的 doGet / doPost 方法中的那个 HttpServletResponse 参数是一样的。
其实这个对象,就是 HttpServletResponse 的实例。 我们一般使用这个对象来执行 跳转 , 当然也可以执行页面内容输出

  • 跳转 写法与 java 代码一致、 response.sendRedirect("");

6)out 【JSPWrite】

该对象其实是 JspWriter 的实例 , 页面上的内容都是靠该对象去执行输出的。
写法如下: <% out.write(“输出的内容”); %>
response 也是可以获取到 PrintWrite 来输出的。
区别: out 的内容其实 先写到 response 的缓冲区来的, 然后先输出 response 自身的内容,尔后再输出 out 的内容

7)config 【ServletConfig】

该对象其实是 ServletConfig 的实例 我们可以在里面获取 Servlet 配置的一些参数。

8)exception 【Throwable】

这个对象,默认 jsp 是不会创建的, 只有在 page 指令里面写上了 isErrorPage=“true” 才会创 建。 连起来解释的话,就是: 只有错误的页面,才会创建该对象。 使用该对象, 我们可以在错误的页面上,输出错误的信息

9)page 【object】

该对象,其实是 jsp 页面翻译成的 java 类的实例, 有点像咱们 java 类中的那个 this

四个作用域的区别
1)pageContext 【PageContext】

作用域仅限当前的页面,还可以取到其他八个内置。
<% pageContext.setAttribute(“name”)%>
<%= pageContext.getAttribute("name)%>

2)request 【HttpServletRequest】

作用域仅限于一次请求,只要服务器对该请求作出了响应,这个域中已经没有了
<% request.setAttribute(“name”)%>
<%= request.getAttribute("name)%>

3)session 【HTTPSession】

作用域仅限于一此会话(多次请求与响应)当中
<% session.setAttribute(“name”)%>
<%= session.getAttribute("name)%>

4)application 【ServletContext】

整个工程都可以访问,服务器关闭后就不能访问了
<% application.setAttribute(“name”)%>
<%= application.getAttribute("name)%>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值