关于jsp的那点事

来源:互联网 发布:c语言cout 编辑:程序博客网 时间:2024/05/29 13:59

一、JSP简介

1、JSP=HTML+Java

2、JSP的原理(重点):记住JSP中的内容与Servlet的对应关系

JSP就是Servlet,容器会把JSP翻译成Servlet,并编译Servlet源码,执行Servlet。

3、JSP&Servlet

Servlet:作为控制器来用(尽量不要输出内容到界面上)

JSP:显示结果数据(尽量不要写Java脚本)

一、JSP的基本语法(必须理解;实际开发中不用)

1、JSP模版元素:指JSP中的HTML的内容,主要目的:输出排版

2、JSP脚本表达式:

作用:把数据输出到页面上

语法:<%=表达式%>

3、JSP脚本片段:

作用:在JSP中输出Java逻辑代码

语法:<%

语句1;

语句2;

%>

对应Servlet:原封不动的出现在_jspService()方法中

小练习:

4、JSP声明

作用:定义一些类成员(实例变量、静态变量、实例方法、静态方法、静态代码块)

语法:<%!

你的定义

%>

5、JSP注释

作用:注释

语法:<%--这是注释--%>

特点:服务器根本不会把注释掉的内容翻译到对应的Servlet代码中

注意:与HTML注释的区别

 

二、JSP的指令(一般)

1、指令的作用是什么?

是为JSP引擎(服务器)而设计的,指示服务器该如何处理JSP页面中的内容的。

2、有哪些指令?

page、taglib、include

语法:<%@指令名称 指令属性1=”值1” 指令属性2=”值2” 。。。%>

3、每个指令的具体细节有哪些?

3.1page指令:

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

属性:

l  import:导入JSP页面中java脚本需要用到的类或包。

<%@page import=”java.util.Date,java.util.UUID”%>

或者

<%@page import=”java.util.Date”%>

<%@page import=”java.util.UUID”%>

注意:服务器会自动导入

import javax.servlet.*;

import javax.servlet.http.*;

import javax.servlet.jsp.*;

l  session:指示是否产生HttpSession对象。默认值是true。

l  buffer:JSP中的HTML的输出都是用的JspWriter的字符输出流。该属性指定输出流的缓存大小。默认8Kb

l  errorPage:指定当JSP出现异常时转向(请求转发)的页面地址。该地址如果以”/”开头,“/”代表着当前应用;如果不是以”/”开头,表示的是相对路径。

另外一种方式:配置全局错误提示页面。

修改web.xml

l  isErrorPage:指示是否产生exception内置对象。默认值是false

l  contentType:和响应消息头Content-Type作用一样。HttpServletResponse.setContentType();   text/html;charset=UTF-8

l  pageEncoding:指示服务器在翻译JSP时采用的编码

特点:还有contentType的作用

l  isELIgnored:是否忽略EL表达式。默认是false(不忽略)

小技巧:更改JSP采用的默认编码

taglib指令:

作用:引入外部的标签库(JSTL)

属性:

uri:外部标签的名称空间

prefix:前缀

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

include指令:

作用:包含。静态包含

属性:

file:被包含的页面的地址。”/”表示当前应用。不以”/”开头,表示相对路径

能用静的不用动的

静态包含:

动态包含: <jsp:includepage="/08.jsp"></jsp:include>

 

三、JSP的动作元素(了解)

1、动作元素就是JSP内置的标签

2、jsp:include:实现动态包含

page:指定被包含的目标资源的URL地址。如果以”/”,代表着当前应用。否则表示的是相对路径

3、jsp:forward:实现请求转发

page:指定转发的目标资源的URL地址。如果以”/”,代表着当前应用。否则表示的是相对路径

4、jsp:param:包含或转发时传递请求参数

 

 

四、JSP的九大隐式对象(很重要)

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

2、JSP的九大隐式对象(注意与EL隐式对象的区别)

引用名称

代表的类型

备注

request

javax.servlet.http.HttpServletRequest

 

response

javax.servlet.http.HttpServletResponse

 

session

javax.servlet.http.HttpSession

如果page指令的session=”false”则没有该对象

application

javax.servlet.ServletContext

 

config

javax.servlet.ServletConfig

 

page

当前的Servlet对象

 

exception

java.lang.Throwable

如果page指令的isErrorPage=”false”则没有该对象

out

javax.servlet.jsp.JspWriter

PrintWriter作用一样

pageContext

javax.servlet.jsp.PageContext

 

 

3、out内置对象简介(了解)

作用和PrintWriterpw = HttpServletResponse.getWriter()作用一样,都是向客户端输出请求正文数据。

注意:这个流有缓存

4、pageContext隐式对象详解(特别重要)

三大作用:

a、本身是一个域对象(页面范围),还能操作其他三个(ServletRequest HttpSession ServletContext)域对象中的数据

voidsetAttribute(String key,Object value)

voidremoveAttribute(String key)

ObjectgetAttribute(String key)

pageContext页面域(作用域)范围。pageContext.setAttribute("p", "ppp");//只能本页中能取出来

voidsetAttribute(String key,Object value,int scope)

voidremoveAttribute(String key,int scope)

Object getAttribute(Stringkey,int scope)

 

int Scope:是常量。

PageContext.PAGE_SCOPE.表示页面范围

PageContext.REQUEST_SCOPE.表示请求范围

PageContext.SESSION_SCOPE.表示会话范围

PageContext.APPLICATION_SCOPE.表示应用范围

 

注意:

<%

pageContext.setAttribute(“p”,”ap”,PageContext.APPLICATION_SCOPE);

//application.setAttribute(“p”,”ap”);和以上代码等价

%>

 

ObjectfindAttribute(String key):依次从页面、请求、会话、应用范围查找指定名称的数据。找到为止。

 

b、获取其他八个JSP隐式对象

ServletRequest request =pageContext.getRequest()

....

 

c、提供了包含和转发的简易方法

pageContext.forward("/1.jsp");

pageContext.include(“/1.jsp”);

五、四大域对象(很重要)

1、四大域对象

PageContext:存放的数据只能当前页面中才能取出来

ServletRequest:存放的数据只能在一次请求中才能取出来

HttpSession:存放的数据只能在一次会话中才能取出来

ServletContext:存放的数据在当前应用中才能取出来(线程安全)

2、作用:在不同的资源之间传递数据

六、EL表达式(特别重要)

1、EL的主要作用:向界面输出数据。替换JSP中的java表达式(<%=%>)

2、基本的语法形式:

${EL表达式}

3、EL能从哪里获得数据呢?

四大域对象中

4、EL具体功能详解

a、获取数据:

a.1运算符:

l  点运算符。就是调用对象的getter方法

l  中括号运算符。[]就是调用对象的getter方法

${p.name}=${p['name']}=${p["name"]}

a.2获取普通Java类的属性的值、List中的元素、Map中的value

 

b、进行数学或逻辑运算

empty运算符:判断一个对象是否为null,字符串是否为””,还能判断一个集合中是否有元素。

 

c、11个隐式对象(难点,注意与JSP隐式对象的区别)

EL隐式对象

类型

对应的JSP隐式对象

备注

pageContext

javax.servlet.jsp.PageContext

pageContext

一样

pageScope

java.util.Map

没有

表示页面范围数据

requestScope

java.util.Map

没有

表示请求范围数据

sessionScope

java.util.Map

没有

表示会话范围数据

applicationScope

java.util.Map

没有

表示应用范围数据

param

java.util.Map

没有

单个请求参数。key是名称,value是值

paramValues

java.util.Map

没有

重名请求参数。key是名称,value是String[]

header

java.util.Map

没有

单个请求消息头。key是头名,value是头值

headerValues

java.util.Map

没有

重名请求消息头。key是头名,value是String[]

initParam

java.util.Map

没有

web.xml中配置的全局参数

cookie

java.util.Map

没有

代表是一个Mapkeycookie对象的namevaluecookie对象

 

d、EL函数

0 0
原创粉丝点击