初学JSP

1、JSP基础

1.1 jsp概念

Servlet是j2ee提供的动态资源开发技术,是以Java的形式进行开发,在Java中书写HTML标签是一件比较麻烦的事情,所以sun开发出了jsp,

看起来像是HTML一样,但可以通过服务器的编译生成Servlet。

1.2 jsp的组成部分

1.2.1 模板元素

直接写在jsp中的HTML内容,看起来像是HTML一样,但最终会在被被翻译成Servlet的过程中 out.write()输出

1.2.2 脚本表达式

<%= 表达式内容%>接收的是一段Java表达式,在jsp翻译到Servlet的过程中,将计算表达式的值,并out.write()输出

1.2.3 脚本片段

<% Java代码 %>直接可以在脚本片段中写Java源代码,写的源代码会直接拷贝到翻译过来的Servlet中相应位置上

1.2.4 jsp声明

<%! jsp声明%>在其中可以写java代码,其中源代码会被拷贝到Servlet的service方法之外,可以利用它来为Servlet增加成员方法、成员变量、静态代码块

1.2.5 jsp注释

<%-- 注释内容 --%>注释内容将不会被服务器翻译到Servlet中,注意区分jsp注释和HTML注释

1.3 jsp指令

1.3.1 page指令

用来通知翻译引擎,如何翻译当前的jsp

[language=“Java”] 当前jsp使用的开发语言,一般不会更改

[extends="package.Class"] 当前jsp翻译成Servlet继承的类,必须是Servlet的子类,一般不需要更改

[session="true"]用来指定当前jsp是否使用Session隐式对象,如果为true,则翻译过来的Servlet有Session对象的引用,一旦访问

jsp就会调用request.getSession()方法,可能导致空间浪费。为false则Session不可用

[buffer="nine |8kb|size kb"] out隐式对象所使用的缓冲区大小

[autoFlush="true"] out隐式对象是否自动刷新缓冲区,默认为true

[isThreadSafe="true"]   翻译的Servlet是否实现SingleThreadModel

[errorPage="relative_url"] 如果页面出错,将要跳转到的页面,与web.xml相比默认先跳转此属性设置的页面

[isErrorPage="true"] 如为true,则Servlet含有exception隐式对象,封装上一个页面抛出的异常

[contentType="mimeType"]乱码相关,指定浏览器打开页面的编码方式

[pageEncoding="characterSet"]服务器翻译jsp时使用的编码

[isELIgnore=“true”]当前页面是否使用el表达式

1.3.2 include指令

<%@ include file="" %>静态引入其他页面的内容

静态引入:在源文件合并,多个jsp生成一个Servlet,由最终生成的Servlet响应

动态引入:在运行时多个输出合并,生成多个Servlet并响应,组成响应流响应,效率较低

1.3.3 taglib指令

<%@ taglib uri="" prefix="" %>引入标签库

2、jsp的九大隐式对象

config、application、request、response、Session、out、page、pageContext、exception

2.1 out对象

可以理解成response.getWriter()获得的printWriter

自带一个缓冲区,其大小由page指令中的buffer设定,当缓冲区存满或被关闭或当前jsp结束,则缓冲区的内容被刷新到response.getWriter()缓冲区中

2.2 pageContext对象

2.2.1 获取其它八大隐式对象,可以认为是一个入口对象

2.2.2 提供方法获取所有域中的数据

getAttribute();

setAttribute();

removeAttribute();

pageContext中代表域的常量

PageContext.APPLICATION_SCOPE

PageContext.SESSION_SCOPE

PageContext.REQUEST_SCOPE

PageContext.PAGE_SCOPE

findAttribute方法,在四大作用域中寻找属性,顺序是page域、Request域、Session域、application域,从小到大

2.2.3 作为域对象使用

作用范围:整个jsp页面,是四大作用域中最小的一个

生命周期:对jsp的访问时开始生成,响应结束时销毁

2.2.4 挑战到其他资源

提供forward和include方法,简化了重定向和转发的操作

3、标签

3.1 JSP标签:

<jsp:include>替代request.getRequestDispatcher().include()

<jsp:forward>替代request.getRequestDispatcher().forward()

<jsp:param>配合前两个标签,可以在包含或者转发时,传一些参数

<jsp:useBean id="beanName" class="package.class" scope="">

<jsp:setProperty name="beanName"

 property="propertyName" value="<%= expression %>"

}/>用于为bean的属性赋值,name来指定bean的名字,property指定要设定的属性的名字,value设置值

<jsp:getProperty name="beanInstanceName" property="propertyName" />用于获取属性的值输出到输出流中

3.2 el表达式,替代<%=  %>脚本表达式

3.2.1 获取域中的属性

${propName}在四个域中搜寻propName属性,输出值到输出流中

${pageScope.propName}获取指定域中的属性

${attr[0]}获取域中的集合的指定元素

${list[0]}获取list中的指定位置元素

${map.keyName}获取map中指定键的值

${bean.propName}获取javaBean的属性,相当于调用了JavaBean的get方法

${pageContext.request.contextPath}获取web应用名称

3.2.2 进行简单计算

3.2.3 获取web开发常用的对象

PageContext:代表PageContext对象

PageScope:代表page域,可以用来获取page域中的属性

RequestScope:Request域,可以用来获得Request域中的属性

SessionScope:Session域,可以获得 Session域中的属性

applicationScope:application域,可以获得application域中的属性

param: 代表请求参数组成的map集合 ${param.userName}

paramValues: 代表请求参数组成的map集合,集合的value是String[],获取一名多值的param

header: 获取请求头组成的map

headerValues: 请求头组成的map集合,一名多值

Cookie:获取Cookie组成的map对象,map的值为Cookie对象 ${cookie.cookieName.cookieValue}

initParam:一map封装的web.xml中配置的整个web应用的初始化参数

3.3 调用Java方法

4、JSTL标签库

4.1 引入 <%@ taglib %>

4.2 介绍 JavaServer Pages Standard Tag Library

4.3 标签库内容

核心标签库(core)--------c标签

国际化标签 fmt

数据库标签  sql

xml标签   xml

JSTL函数  el

4.4 核心标签库

<c:out>用于输出一段文本到pagecontext对象的out对象中

<c:set>用于把某一对象存在指定的域内,或者设置web域中的map属性对象或javabean属性对象的属性

<c:remove>删除各种web域中的属性

<c:catch>捕获嵌套在标签体中抛出的异常

<c:if test="">构造简单的“if-then”结构的条件表达式

<c:choose>指定多个条件选择的组合边界,必须与<c:when>和<c:otherwise>一起使用构造“if-else”的语句

<c:forEach>对一个集合对象中的元素进行循环迭代操作

<c:forTokens>浏览一字符串中的所有成员,由定义符号来分割

<c:param>可以嵌套在请求转发,重定向,url标签内附加参数

<c:import>实现include操作

<c:url> 实现URL重写,将会话标识符以参数的形式附在URL后面

<c:redirect>实现请求重定向

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值