06.Jsp

Jsp概述

Jsp(全称JavaServer Pages),是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。
jsp页面可以包含HTML+Css+JS+java 代码

Jsp本质

Jsp的本质是一个servlet,在它运行的时候,服务器会将他编译成Servlet,可以在tomcat服务器中的Work目录中找到与之对应的servlet。
项目的web目录下有一个index.jsp.
在这里插入图片描述
index.jsp页面改成了index_jsp.java文件
在这里插入图片描述
虽然jsp可以做与servlet一样的事,但为了分工明确,servlet用于做请求处理,jsp用于页面显示。

Java 脚本

在jsp页面中使用Java代码需要插入Java脚本,有三种方式:

方式一:
<%! java 代码%>

这段Java代码会被Servlet编译到成员位置,只会编译执行一次,可以定义成员变量和成员方法

方式二:
<% java 代码 %>

这种方式的脚本,Java代码会被插入到service方法中,相当于servlet的局部变量,每次请求都会执行一次。可以用此定义局部变量和逻辑代码

方式三:
 <%="java表达式"%>

该Java脚本是用于显示输出的,类似于response.getWrite().print(),能够打印的都能在这里输出,所以里面能写 常量,变量,和表达式。

Java指令

java指令就是告诉服务器如何将这个jsp页面编译成servlet,常用的三个Java指令:

指令1<%@ page  %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

Language: 告诉服务器这个jsp页面所嵌套用的语言
Import: 页面所要导入的Java包
pageEncoding: 这个指令是告诉服务器用什么方式解码,如"UTF-8",tomcat默认使用ISO-8859-1解码
contentType 指定本jsp所用的编码方式, 这个两个用来解决Jsp乱码问题.但其实只要设置pageEncoding就行了,在往这个页面输出数据时,会默认用pageEncoding指定的码表
Errorage: 当前页面出现了错误之后,跳转到指定页面
isErrorPage: 当前页面是否为错误页面,默认为false
buffer: 设置jspwriter流的缓存区大小
isElgnored: 是否忽略EL表达式,默认是false,不忽略

指令二:
<%@include file="" %>

该指令用来做页面的静态包含。效果类似于将包含页面代码全部拷过来,两个jsp页面只会产生一个java源文件.

指令三:
<%@taglib  %>

这个指令是告诉jsp导入的标签库

Jsp九大内置对象

  • PageContext pageContext
  • HttpServletRequest request
  • HttpSession session
  • ServletContext application
  • HttpServletResponse response
  • ServletConfig config
  • JspWriter out
  • Object page
  • Exception

page对象:就是jsp对象本身,作用不大

Exception:对象不会自动传入jsp页面,只有当设置该页面为错误页面才会传入该对象,设置方式为<%@page isErrorPage=“true” %>

JspWrite对象:需要依靠respond对象输出数据,当Jspwrite对象缓存区满了,它会将数据刷入respond的缓存区,由respond输出,page指令的buffer属性可以设置JspWrite的缓存大小,不要与respond对象一起使用,否则会出现数据紊乱。

pageContext对象: 当前页面的上下文对象,最小的域对象,它的最大作用在于封装了其他八个内置对象,在某些场景需要九个内置对象时,把pageContext传过去就可以了。

Jsp内置动作标签

<jsp:forward >转发标签

<jsp:forward page="/login.jsp"></jsp:forward>

可以实现转发,效果类似于request.getRequestDispatcher("/login.jsp").forward(request, response);如果要携带参数需要使用< jsp:param>标签

< jsp:param>参数标签

<jsp:param value="zhangsan" name="username"/> //传递了一个名为username,值为zhangsan的参数
<jsp:forward page="/login.jsp">
		<jsp:param value="zhangsan" name="username"/>
</jsp:forward>

效果类似于request.getRequestDispatcher("/login.jsp?username=zhangsan").forward(request, response);

< jsp:include/>动态包含标签:

 <jsp:include page="skip.jsp">
 	<jsp:param value="zhangsan" name="username"/>//传递给包含页面参数
</jsp:include >

效果<%@include %>指令类似,但动态包含会产生两个Java源文件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值