JSP总结


一、简介

jsp是SUN公司推出的开发动态web资源的技术,属于JavaEE技术之一。由于原理上是Servlet, 所以JSP/Servlet在一起。

二、jsp的生命周期

IE浏览器第一次访问服务器jsp时jsp引擎会翻译成servlet.java文件(如果jsp发生了改变也会翻译),所以其生命周期和servlet相同。

三、jsp语法

1、Java程序片段
语法:<%写java程序,在这里面声明的变量为局部变量%>出现在JSP对应Servlet的service方法中。
<%
  Date date = new Date();
%>
2、Java表达式
语法:<%=表达式%>
<%=date%> 
相当于servlet中的out.print(date);
3、Jsp声明
语法:<%! %>
作用:定义JSP对应Serlvet的成员(变量和方法、静态方法)。
4、Jsp指令
指令是为JSP引擎设计的。而只是告诉引擎如何处理JSP页面中的其余部分(非指令部分);
基本语法格式:<%@指令 属性=”值” ….%>.
一般把指令放在JSP页面的顶部(不是必须的)
指令的属性可以写在一个指令中,也可以分开写:比如:
<%@指令 属性1=”值1” 属性2=”值2”%>.
等价于:
<%@指令 属性1=”值1” %>.
<%@指令 属性2=”值2”%>
4.1 page指令的属性:
1、language:告知引擎,脚本用的是java。默认java,支 持java。不写也行。

2、extends:告知引擎,JSP对应的Servlet的父类是哪 个。不需要写,也不要改

3、import:告知引擎,导入哪些包。
注意:引擎自动导入:java.lang.;javax.servlet.;javax.servlet.http.;javax.servlet.jsp.;
导入的形式:
<%@page import=”java.util.Date,java.util.UUID”%>或者:
<%@page import=”java.util.Date”%>

4、session:告知引擎是否产生HttpSession对象,即是否在代码中调用request.getSession()。默认值true。

5、buffer:JspWriter用于输出JSP的内容到页面上。告知引擎,设定他的缓存大小。默认8Kb。

6、errorPage:告知引擎,当前页面出现了异常,应该转发到哪个页面上。

7、isErrorPage:告知引擎,是否抓住异常。如果该属性为true,页面中就可以使用exception隐含对象,打印异常的详细信息。

8、contentType:告知引擎,响应正文的MIME类型。
contentType=”text/html;charset=UTF-8”
相当于response.setContentType(“<%=exception.getMessage() %>”);

9、pageEncoding:告知引擎,翻译JSP时(要从磁盘上读JSP文件)所用的码表。pageEncoding=”UTF-8”:相当于,告知了引擎用UTF-8读jsp。

10、isELIgnored:告知引擎,是否忽略EL表达式。默认值是false,不忽略。

4.2 include指令的属性:
包含属性:file,以”/”开头,就代表着当前应用。
4.3 taglib指令的属性:
引入外部的标签。
<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%>
uri:外部的标签的uri地址,好比名称空间
prefix:前缀。

四、jsp中的转发和包含

1、转发
<jsp:forward page="/forward.jsp"></jsp:forward>
JSP的内置标签。

2、参数:不能单独使用,向目标传递请求参数

<jsp:forward page="/forward.jsp">
    <jsp:param value="abc" name="username"/>
</jsp:forward>

3、静态包含:<%@include%>

4、 动态包含:其余的
<jsp:include page=""/>

五、Jsp的九大隐含对象

JSP对应的Servlet的service方法中的局部变量

1、request–>javax.servlet.http.HttpServletRequest
2、response–>javax.servlet.http.HttpServletResponse
3、session–>javax.servlet.http.HttpSession(page指令有开关)
4、application–>javax.servlet.ServletContext
5、config–>javax.servlet.ServletConfig
6、page–>javax.servlet.http.HttpServlet(当前jsp对应Servlet的实例引用)
7、exception–>java.lang.Throwable(page指令有开关)
8、out–>javax.servlet.jsp.JspWriter(字符输出流。相当于PrintWriter)
9、pageContext–>javax.servlet.jsp.PageContext

六、PageContext抽象类

本身是一个域(范围)对象,还能操作其他3个域对象中的属性
1、页面范围:
void setAttribute(String name,Object value);
void removeAttribute(String name);
Object getAttribute(String name);

2、操作其他域对象中的属性:

void setAttribute(String name,Object value,int scope);
void removeAttribute(String name,int scope);
Object getAttribute(String name,int scope);
int scope:常量,PageContext PAGE_SCOPE(页面) REQUEST_SCOPE(请求)SESSION_SCOPE(会话)APPLICATION_SCOPE(应用)

3、在四个范围中按下列顺序依次查找指定名称对象的方法(找到就不再继续往下找):

PAGE(页面) REQUEST(请求)SESSION(会话)APPLICATION(应用)
Object findAttribute(String name);

4、获取其他八个JSP隐含对象(自定义标签时用)
pageContext.getXXX();

七、四大域

PageContext:页面范围。最小。开发中很少用。演示代码。
ServletRequest:请求范围。不同的资源,只有用转发。
HttpSession:会话范围。多次请求共享数据,但不同的客户端不能共享。
ServletContext:应用范围。最大。尽量少用。用时要做同步处理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值