黑马小日子----JSP

本文详细介绍了JSP的基本概念、语法、指令、隐式对象及常用标签,同时探讨了JavaBean在JSP中的作用与封装数据的方式。包括JSP的四大域对象、九大隐式对象、JSP标签的使用、JavaBean与JSP的结合,以及EL表达式和JSTL的介绍。文章旨在帮助开发者更好地理解和运用JSP和JavaBean进行Web开发。
摘要由CSDN通过智能技术生成

JSP

四大域对象:

pageContext (page): 只在本页面 ,每个页面都有自己的pageContext

Request (request): 显示出来看一下就不需要的时候

Session(session): 页面使用后,其他页面还是要使用会话范围

ServletContext (application): 大家都用的东西,全局范围

一.语法:

a) Jsp模板元素 :jsp中的HTML内容(建议在写jsp之前,先写好html模板)

b) Jsp脚本表达式

i. 作用输入java数据到html

ii. 语法:<%= java表达式%> (注意:java表达式后面不能有分号,因为这里面放的是java的属性值)

c) Jsp脚本片段:

i. 作用:编写普通java语句,(在对应的servlet_jspService方法中,如果定义变量,那么是局部变量)

ii. 语法:<% 语句1; 语句2;  %>  在脚本片段和脚本片段之间,可以插入jsp代码

d) Jsp声明

i. 语法:<%! 语句1; 语句2;  %>  

ii. 声明中的代码会原封不动的被翻译到对应的servlet的成员及位置

二.指令:

指令是为jsp引擎设计的,不直接产生任何可见输出,只是告诉引擎如何处理jsp页面的其余部分.

语法: <%@  指令名称  属性名 = " 值 "%> 

例如: <%@page  contentType="text/html;charset=UTF-8"%> 目的是告诉引擎(tomcat) 这个是一个html页面,采用UTF-8编码

page指令:

language ="java"  //指定这个jsp可以嵌入java代码

*Import ="包名"//jsp中导入哪些包,jsp会默认导入 

java.lang.*;javax.servlet.*;javax.servlet.jsp.*;javax.servlet.http.*;

*Session="true"//指定jsp在翻译的时候是否会创建session对象,默认是true,如果设置为false,那么就不能再jsp编写时默认使用session对象为什么可以关闭呢?因为session的生命周期较长,所有为了不让服务器内存压力过大,所有不需要session的时候可以设为false

errorPage ="" //指定当jsp页面出现错误的时候,把页面跳转到哪个地址上,errorPage的属性必须是相对路径.  使用这个指令只能解决一个jsp页面的错误问题,如果要解决上百个jsp页面的错误问题,可以在web.xml文件中创建一个<error-page>标签.

<error-page>

<error-code>错误码(404)</error-code>

<location>目标页面</location>

</error-page>

isErrorPage="false" //是否是错误处理页面,什么是错误处理页面呢就是当jsp页面出错的时候通过errorPage指令跳转到的目标页面. isErrorPage指令默认值是false,当设为true的时候,服务器在把jsp页面翻译成一个servlet的时候,会创建一个Exception对象,然后把错误信息封装到这个对象中.

contentType="text/html;charset=UTF-8"指示jsp对应的servlet输出数据时的MIME类型和使用的编码,也就是告诉浏览器以什么码表来读取数据.

pageEncoding="UTF-8"告诉服务器用什么码表来翻译jsp

include指令:

<%@  include  file="被包含的页面"%>

静态包含使用include指令的包含技术称为静态包含,静态包含是编译时包含,多个jsp文件会被翻译到一个servlet文件中,所以被包含的jsp页面应该删掉除了指令和正文之外的所有内容.

动态包含.:动态包含属于运行时包含,指的是每个jsp文件都会被翻译成各自的servlet文件,实际开发的时候不建议使用动态包含.

 

tagiib指令:

:九大隐式对象:

1.什么是隐式对象:

a) 引擎在第一次把jsp文件翻译成servlet文件时,会在servlet中创建一些常用的对象,然后给这些对象一些命名,使用这些命名可以在jsp页面中调用相应的对象,就是隐式对象.

Request--------------HttpServletRequest

Responce--------------HttpServletResponse

Session--------------HttpSession(前提是page指令session="true")

Application--------------ServletContext

Config--------------ServletConfig

Page--------------this

Exception--------------Exception(前提是page指令isErrorPage="true")

Out--------------JspWriter

pageContext--------------PageContext

out隐式对象;

Out隐式对象的实际类型是JspWriter,用这个输出数据显示输入到JspWriter的缓存中,当缓存满了,或者是设置page指令中的buffer="0",才会把缓冲中的数据写到Response,然后服务器再从response中提取数据.

pageContext 隐式对象:

pageContext对象是JSP中最重要的对象,它不仅包含了其他的8大对象,而且其本身也是一个域对象,可以用来保存数据这个对象还封装了web开发中一些常用操作.

pageContext作用一获取到其他8大对象

pageContext作用二作为域对象:

1. pageContext对象的方法getAttribute("name")//获取值

 setAttribute("name","value") //设置值

  removeAttribute("name");//删除值

2. pageContext访问其他域:getAttribute("name",代表各个域的常量);//得到指定域的值

setAttribute("name","value",代表各个域的常量); //设置其他域的值

removeAttribute("name",代表各个域的常量); //删除其他域的值

3.查找各个域中的属性:findAttribute("name")

:JSP常用标签:

标签在jsp中又被称为动作元素,jsp页面中提供业务逻辑功能,避免在jsp中出现java代码.

<jsp:include>标签

属于动态包含

<jsp: forwaod>标签:

转发 page: 目标页面

<jsp:param> 标签:

请求参数,常用于转发时给目标页面传递参数 name: 参数名 value: 参数值

JavaBeanJSP

javaBean通常用来封装数据 jsp中也可以用javaBean来封装数据和获取数据.

Jsp中与javabean相关的标签:

<jsp:userBean>标签: 这个标签用来在指定的域范围内查找指定的javaBean对象,如果在指定的域内存在这个javabean对象,那么直接获取到这个对象;如果指定的域范围内没有这个javabean对象,就实例化一个,然后获取到它.

常用语法:<jsp:useBean  id="beanName" class="package.class" scope="域对象" >Body</jsp:useBean>

Id: 用于指定javabean实例对象,或者是实例化的javabean的名称

Class:指定javabean完整类名

Scope:指定javabean实例对象作用的域范围,取值有page,request,session,application,默认是page.

注意:Body部分的内容只有在标签创建javabean的时候才执行

<jsp:getproperty> 标签:读取指定javabean对象中的指定属性

常用语法: <jsp:getProperty  name="beanInstanceName" property="propertyName">

Name:javabean的实例对象

Property:要查找的属性名

如果没有找到这个属性,返回null;

<jsp:setProperty>标签设置javabean中的属性

<常用语法>; <jsp:setProperty  name="beanName"  {

Property="propertyName" value=""

Property="PropertyName" param=""

Property="*"

}>                                                                                                                                                                                                                                  

name属性用于指定JavaBean对象的名称。 

property属性用于指定JavaBean实例对象的属性名。

value属性用于指定JavaBean对象的某个属性的值,value的值可以是字符串,也可以是表达式。为字符串时,该值会自动转化为JavaBean属性相应的类型,如果value的值是一个表达式,那么该表达式的计算结果必须与所要设置的JavaBean属性的类型一致。  

param属性用于将JavaBean实例对象的某个属性值设置为一个请求参数值,该属性值同样会自动转换成要设置的JavaBean属性的类型。 

 

EL表达式:

EL表达式的作用: 它的作用就是替换掉jsp页面中的java表达式,也就是<%=%>中的java代码.

EL表达式语法: ${ }

EL中可以检索所有的域对象中的属性,因为使用EL表达式来检索属性时,会使用pageContext. findAttribute(),如果找到了就获取,如果没有找到,就返回"".

El表达式中的运算符:

${empty} //判断是指定元素是否为空

${empty user? "null" : ""} //三元运算符

EL表达式的11大隐式对象 :

pageContext代表当前页面的上下文对象,jsp中的是一样的

*pageScope代表page范围的域对象(Map<String,Object>),即当前页面对应的Map

*sessionScope代表session域中的Map对象

*requestScope代表request域中的Map对象

*applicationScope : 代表ServletContext域中的Map对象

param代表请求参数的Map对象,key代表参数名,value代表参数

param values : 代表请求参数对象,key代表参数名,value代表参数数组--重名请求参数

header :代表请求头的对象(Map),key是请求头字段名,value是头值(单一值)

headerValues: 代表请求头的对象(Map),key是请求头字段名,value是头值(数组值)

cookie:是一个Map,keycookie,valuecookie对象,可以通过对象得到里面的各种值

initParam:代表全局配置参数(Map),key是参数名,value是参数值

只有pageContext代表对象,其他的都是Map

El表达式调用java类中的静态方法:

步骤: 1.定义一个拥有静态方法的类

2.必须在一个扩展名为tldxml文件中进行描述

3.在jsp中使用,必须先通过taglib指令引入,使用EL形式调用

JSTL(作用:消除jsp中的java脚本):

1.Core

a) if

i. 作用用于判断

ii. 属性:

test:必须有取值可以是EL表达式,也可以是java表达式,要求表达式必须返回boolean类型

Scope: 域对象范围

Var : 保存结果的变量,这个变量就是域对象中的name

b) forEach

iii. 作用: jdk1.5的增强for循环

iv. 属性:

1. Items: 要遍历的对象

2. Begin: 开始的索引

3. End: 结束的索引

4. Strp: 步长.默认值是1

5. varStatus:指向一个对象

a) 该对象有以下方法:

i. getIndex;获取当前记录觉得索引

ii. getCount:获取当前记录的计数

iii. isFirst:: 是否是第一条

iv. isLast:是否是最后一条

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值