JSP

JSP本质上就是一个Servlet,只不过无需配置映射路径,Web Server会根据路径查找对应的.jsp文件,如果找到了,就自动编译成Servlet再执行。

JSP在执行前首先被编译成一个Servlet。在Tomcat的临时目录下,可以找到一个hello_jsp.java的源文件,这个文件就是Tomcat把JSP自动转换成的Servlet源码:

package org.apache.jsp;
import ...

public final class hello_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent,org.apache.jasper.runtime.JspSourceImports {

	...
	
	public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException {
		...
		out.write("<html>\n");
		out.write("<head>\n");
		out.write("    <title>Hello World - JSP</title>\n");
		out.write("</head>\n");
		out.write("<body>\n");
		...
	}
	
	...
}	

JSP语法

JSP注释: <%–这是注释–%>

快捷输出变量值:<%=表达式%>(实际上就是调用输出流打印到页面上) out.print(表达式)

JAVA片段:<%JAVA语句%> 这些语句会原封不动的被服务器翻译到对应的Servlet的_jspService方法中

在这里插入图片描述

JSP的3个指令

JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。
JSP指令格式:<%@ 指令名称 属性1=“属性值1” 属性2=“属性值2”。。。%>

page指令(用来声明JSP页面的属性等)

属性名称取值作用
languagejavaJSP文件采用的语言
extends全类名编译该JSP文件时继承哪个类
import任何包名、类名引入java包或类
sessionbooleanJSP内是否内置Session对象
autoFlushboolean为true,则使用out.println()等方法输出的字符串不是立刻到达客户端服务器的,而是暂时存到缓存里
buffer数字kb指定缓存大小,当autoFlush设为true时有效
isThreadSafeboolean是否线程安全,如果为true,则运行多个线程同时运行该jsp程序
isErrorPageboolean该JSP是否内置Exception对象
errorPage某个JSP页面的相对路径如果该JSP程序抛出一个未捕捉的异常,则转到errorPage指定的页面
contentType有效的文档类型客户端浏览器根据该属性判断文档类型
info任意字符串指明JSP的信息,该信息可以通过Servlet.getServletInfo()方法获取到
trimDirective Whitespacesboolean是否去掉指令前后的空白字符
pageEncodingUTF-8,ISO-8859-1等该JSP页面编码方式

include指令

<%@ include file=“relativeURL”%>

relativeURL:本应用程序内另一个JSP文件或者HTML文件的路径,例如,网址内所有页面均有一个统一风格的导航栏和页脚版权,那么就可以使用该指令将其包含进来。

taglib指令

<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
用来指明JSP页面内使用的JSP标签库,taglib指令有两个属性,uri为类库的地址,prefix为标签的前缀

JSP行为

动态包含

<jsp:include page="/include/header.jsp"></jsp:include>
include行为用于运行时包含某个文件,如果被包含的文件为JSP程序,则先会执行JSP程序,然后在把执行的结果包含进来

JAVA bean行为

是一组与Java Bean 相关的行为,包括useBean行为、setProperty行为、getProperty行为等

  1. useBean行为

<jsp:useBean id=“beanObject” class=“className” scope=“Value”>
作用:在jsp中定义一个java bean对象

属性:
id:指明Java Bean对象的名称,JSP中可以使用该名称引用该Java Bean对象,相当于给new出来的对象取一个变量名
class:Java Bean类的全名
scope:该java bean对象的作用范围,可以写的就四个,也就是JSP的四大作用域,page、request、session、application

  1. setProperty行为
    <jsp:setProperty name=“beanName” property=“propertyName” value="">
    作用:对Java Bean对象进行属性的赋值

属性:
name:java bean对象的名称,也就是在useBean行为中的id
property:对象中的属性名
value:要对其属性进行赋值的值

  1. getProperty行为
    <jsp:getProperty name=“beanName” property=“propertyName” />
    作用:获取JavaBean对象的某个属性值

属性:
name:java bean 对象的名称,也就是在useBean行为中的id
property:对象的属性名

请求转发行为

实现请求转发功能,Servlet中通过request.getRequestDispatcher(“someServlet”).forward(request,response);而在JSP中也能够实现相同的功能,只不过用的是<jsp:forward />行为,实际上forward行为就是对其进行了封装。

<jsp:forward page="someServlet">
	<jsp:param name="param1" value="value1"/>
	<jsp:param name="param2" value="value2"/>
</jsp:forward>

属性:
page:需要跳转到的页面或者servlet
jsp:param/向request中携带键值对参数

JSP九大内置对象

在这里插入图片描述

request, response, session, config, application对象用法与servlet中的对象相同

pageContext(重要)

它是JSP页面的管理者(上下文),能够获取到其他JSP内置对象

pageContext对象的api如下:

  1. 获得其它八大内置对象 getXxx()
    在普通类中可以通过PageContext获取其他JSP隐式对象
    pageContext.getOut();  //获得out对象
    pageContext.getApplication();  //获得application对象

  2. 对指定作用域的属性进行操作
    Object getAttribute(String name, [ int Scope ]);  //获得 指定作用域中的数据
    void setAttribute(String name,Object o, [ int Scope ]);  //给指定作用域设置内容
    void removeAttribute(String name, [ int Scope ]); // 移除指定作用域的内容

    []的内容可缺省,默认即为paga作用域

    提供的作用域常量:

    • PageContext.PAGE_SCOPE  page
    • PageContext.REQUEST_SCOPE  request
    • PageContext.SESSION_SCOPE  response
    • PageContext.APPLICATION_SCOPE  application
  3. 一次获得指定名称内容
    findAttribute(String name); //自动从page request session application依次查找,找到了就取值,结束查找。

out对象

jsp 输出底层使用 response.getWriter().print(“

out.print()输出的内容

”)

exception异常对象

举例:

exception.jsp  抛异常的一个NullPointException,并且跳转到error.jsp错误显示页面  errorPage属性的意思是如果发生未捕捉到的异常,将会跳转到error.jsp页面
在这里插入图片描述

error.jsp  isErrorPage属性说明该页面是一个错误显示页面,则可以使用exception对象
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值