J2EE 之 jsp技术

jsp概述

JSP全称Java Server Pages,是SUN公司定义的一种用于开发动态WEB资源的技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头%>结束。

jsp适合编写输出动态内容,但不适合编写java逻辑。

一、 jsp的特点

1. 跨平台

2. 分离静态内容和动态内容

3.可重复使用的组件

4.没用JAVAServlet的所有功能

5.预编译

二、JSP的工作流程:

1. 客户端通过浏览器向服务器发出请求。在该请求中,包含了请求的资源的路径,这样,当服务器接收到该请求后,就可以知道被请求的资源。

2. 服务器根据接收至的客户端的请求,来这加载被请求的JSP文件

3.Web服务器中的JSP引擎会将被加载的JSP文件转化为Servlet.

4. JSP引擎将生成的Servlet代码编译成Class文件

5. 服务器执行结果发送给浏览器进行显示

6. 最后,服务器将执行结果发送给浏览器时行显示

三、JSP页面的组成

一个JSP页面可由种元素组合而成

普通的THML标记

     JSP标签,如指令标签、动作标签

     变量和方法的声明

      Java程序段

  Java表达式

 

四、jsp脚本标识

1.  声明<%! %>只能用于声明全局变量、方法和类的代码,不能有其他语句

<%!用于声明全局变量、方法和类的代码 %>

如:

<%!

int x=10;//声明变量

int y=20;

public class Person{ //声明类

  private String name;

  private int  age;

}

int add(int x,int y){//声明方法

  return x+y}

%>

 

2. 代码段<% %>jsp允许在<%%>中插入java的程序段。在这里面定义的变量为局部变量。

如:

<%

  int i=0;

  while(i<10){

     out.println(“i=”+i);

     i++;

}

%>

 

3.  表达式<%=表达式%>

用于向页面中输出信息

如:<%=”hello” %>

 

4. 注释

(1)html中的注释

<!—注释内容-->

(2)、带有jsp表达式的注释

<!—<%注释内容%>-->

(3)、隐藏注释

<%--注释内容--%>

(4)、脚本注释:

1)单行注释(//

2)多行注释(/*  */

3)文档注释(/**  */)

五、jsp三大指令

语法:

<%@ 指令名称 属性1="属性名称" 属性2="属性名称" ...%>

或者将属性分开单独成句

<%@指令名称 属性1="属性名称" %>

<%@指令名称 属性2="属性名称" %>

1、page指令 

作用:用于定义jsp页面的各种属性 

属性: 

import:和Java代码中的import是一样的 

如:<%@ page import="java.util.*"%> 

jsp会自动导入一下包:

 import.java.lang.*;

 import.javax.servlet.*;

 import.javax.servlet.http.*;

 import.javax.servlet.jsp.*;

 session:是否会自动创建session对象。默认值是true。如:<%@ page session=”true”%> 

 buffer:jsp中有javax.servlet.jsp.JspWriter输出字符流,buffer是设置缓冲区大小,默认8kb。(建议使用默认值) 

errorPage:设置错误页面,如果页面有错误,跳转到指定的页面。

isErrorPage:是否创建throwable对象。默认false。

contextType:等同于response.setContextType(“text/html;charset=utf-8”);

pageEncoding:告诉jsp引擎要翻译的文件使用的编码。如<%@ page pageEncoding=”utf-8”%>

isELIgnored:是否忽略EL表达式。默认false。

isThreadSafe:是否支持线程安全。默认false。

extends:指定 JSP 页面所生成的 servlet 的超类。

language:指定语言,默认Java。目前只支持Java。

include指令:把其他资源包含到当前页面中

2、静态包含语法: 

<%@ include file="/*.jsp"%>

动态包含语法: 

<jsp:include includepage="/*.jsp"></jsp:include>

二者的区别:翻译的时间段不同

前者:在翻译的时就把两个文件合并。

后者:不会合并文件,当执行include代码时,才会包含另外一个文件的内容。 

原则:能使用静态include,就不要使用动态include。 

3、taglib指令 

作用:在jsp页面中导入JSTL标签库。替换jsp中的Java代码片段。 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="core" %> 

prefix:别名

 

六、jsp六个动作 

jsp:include:动态包含

jsp:forword:转发相当于request.getRequestDispatch(“”).forword();

jsp:param:设置请求参数

jsp:userBean:创建一个对象

jsp:setProperty:给指定的对象赋值

jsp:getProperty:取出指定对象的属性值

用法: 

<jsp:userBeanid="user"></jsp:userBean>

 

七、jsp九大内置对象 

request:类型HttpServletRequest 

response:类型HttpServletResponse 

session:类型HttpSession,有session=”true”开关控制。

application:类型ServletConfig

exception:类型Throwable,由isErrorPage=”false”开关控制。

page:类型Object,当前对象this,代表当前servlet实例

config:类型ServletConfig

out:类型JspWriter,字符输出流,相当于printWriter对象。

pageContext:类型PageContext

PageContext

PageContext是一个Page域对象,它可以操作其他三个域对象(request session application)的数据。 

API介绍: 

void setAttribute(Stringname,Object o) 

Object getAttribute(Stringname) 

void removeAttribute(Stringname) 

Object findAttribute(Stringname):

自动从page request session application依次查找,找到了就取值,结束查找。

 

其他操作方法 

void setAttribute(Stringname,Object o,int Scope) 

Object getAttribute(Stringname,int Scope) 

void removeAttribute(Stringname,int Scope) 

Scope的取值: 

PageContext.PAGE_SCOPE

PageContext.REQUEST_SCOPE

PageContext.SESSION_SCOPE

PageContext.APPLICATION_SCOPE

它可以创建其他8个隐式对象

 

在普通类中可以通过PageContext获取其他JSP隐式对象。自定义标签时使用。 

提供了简易方法: 

pageContext.forward(“”); 

pageContext.include(“”);

 

八、四大作用域对象

PageContext : pageConext 存放的数据在当前页面有效。开发时使用较少。 

ServletRequest: request 存放的数据在一次请求(转发)内有效。使用非常多。 

HttpSession: session 存放的数据在一次会话中有效。使用的比较多。如:存放用户的登录信息,购物车功能。 

   ServletContext: application 存放的数据在整个应用范围内都有效。因为范围太大,应尽量少用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值