JSP基础
jsp
jsp
特点:
java server pages 服务器页面
以.jsp为后缀的文件,内容以标签为主体,可以内嵌java代码,本质上是Servlet。
可以生成动态HTML
jsp的乱码问题
创建jsp页面时,默认的编码为ISO-8859-1,会出现页面乱码
修改JSP默认编码
window->
preference->
搜索栏搜索JSP->
JSP Files->
Encoding->
找到UTF-8
重新创建JSP即可
JSP引擎
统一管理和允许Web应用程序的软件,最常见的是Tomcat。
当浏览器要访问一个JSP文件时,JSP文件会经过JSP引擎转化为一个Servlet,被编译成Class然后通过class生成对象给用户进行响应。
JSP的组成
1. 静态内容
2. 指令
3. 表达式
4. 小脚本
5. 声明区
6. 注释
7. 动作
静态内容
一行一行翻译成out.write(“前端内容”);
JSP注释
1.隐藏注释:客户端不可见
语法格式: <%-- comment --%>
comment为要添加的文本注释内容。
2.HTML注释:客户端可见
<!-- -->
3.jsp脚本注释:// /* */
在JSP程序中,也可以遵循Java语言本身的注释规则对代码进行注释,这样的注释和隐藏注释相似,在发布网页时完全忽略,在浏览器的源文件窗口中看不到。
语法格式
声明|声明区
<%!
声明区(等于在类里面)
%>
<%!
private String name ="zpw";
public void print(){
System.out.println(name);
}
%>
小脚本|java代码
<%
java代码
注意:不能定义方法
%>
<%
show();输出的内容在后台
%>
表达式
向页面输出内容
<%= %>
<%=name %>
JSP三大指令
1.与页面相关的page指令
page指令用来定义JSP文件中的全局属性,它描述了与
页面相关的一-些信息,其作用域为它所在的JSP文件页面
和其包含的文件。
page指令作用范围是整个JSP页面。为了JSP程序的可读
性以及好的编程习惯,最好把它放在JSP文件的顶部。
在同一个JSP页面中可以有多个page指令。 在使用多个
page指令时,其中的属性除import属性外只能使用一次。
常用属性:
1.language属性:用于指定JSP页面中使用的脚本语言,其默认值为Java。
2.extends属性:用于指定JSP编译器父类的完整限定名,此JSP页面产生的Servlet将由该父类扩展而来。
3.import属性:用于导入JSP页面使用的Java API类import属性是所有page属性中唯一可以多次设置的属性,用来指定JSP页面中所用到的类。
4.session属性:用于指定是否可以使用session对象,若允许页面参与HTTP会话,就设置为true ,否则设为false ,其默认值为true。
5.errorPage属性:用于指定错误页面,无默认值。当页面出现-个没有被捕获的异常时,错误信息将以throw语句抛出,而被设置为错误信息网页的JSP页面,将利用exception隐含对象,获取错误信息。relativeURI 默认设置为空,即没有错误处理页面。
6.contentType属性:用于指定内容MIME类型和JSP页面的编码方式。对于普通JSP页面,默认的contentType属性值为"text/html;charset=ISO-8859-1"。对于JSP文档,默认的contentType属性值为"text/html;charset=ISO-8859-1 "。
7.pageEncoding属性:用于指定JSP页面的编码方式,默认值为ISO-8859-1 ,为
支持中文可设置为UTF-8。
例:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
2.引入文件的include指令
将一个外部文件嵌入另一个JSP或者HTML,同时解析JSP页面的语句。
<%@ include file="引入页面所在路径">
例:<%@ include file="index.jsp">
3.taglib指令
使用标签库定义的自定义标签
uri ( Uniform Resource Identifier ,统一资源标识符)属性用于
指定标签库的存放位置,并告诉JSP引擎在编译JSP程序时如何处理指定标签库中的标签。
prefix属性用于指定标记库中所有动作元素名中使用的前缀,无默认值。
例:<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
JSP的六大动作
常用的动作有6种:
include
<jsp:include>动作用来把指定文件插入正在生成的页面中。
语法格式:
< jsp:include page="relative URL" flush= "true" />
指令与动作的区别:
include指令执行时将被导入页面的jsp代码完全融入,两个页面融合成一个Servlet ;而<jsp:include>动作则在Servlet中使用include方法来引入被导入页面的内容。因此include指令执行时不需编译,速度快;<jsp:include>动作需要加载执行,速度慢。
useBean,setProperty,getProperty
<jsp:useBean> 动作用来装载一个将在JSP页面中使用的JavaBean。这个功能非常有用,能够实现JavaBean组件重用。
语法格式:
<jsp:useBean id="beanInstanceName" scope: ="page | request |session | application class= ="package.class"type=" package.class"beanName= ="package.class"/>
1.id属性:指定该JavaBean的实例名称,不可接受动态值。如果能够找到id和scope相同的Bean实例, <jsp:useBean> 动作将使用已有的Bean实例而不是创建新的实例。
2.scope属性 :指定Bean作用域范围,不可以接受动态值,可选作用域有: page、request、session和application。
3.class属性:指定Bean的类路径和类名,不可接受动态值,这个class不能是抽象的。
4.type属性:指定引用该对象的变量的类型,它必须是Bean类的名字、超类名字、该类所实现的接口名字之一。变量的名字是由id属性指定的。
5.beanName属性:指定bean的名字,可以接受动态值。beanName属性必须与type属性结合使用,不能与class属性同时使用。
<jsp:getProperty>动作获取指定Bean属性的值,转换成字符串,然后输出。
<jsp: setProperty>动作用来设置、 修改已经实例化的Bean中的属性值。
forward
<jsp:forward>用于引|导客户端的请求到另-个页面或者是另一个Servlet。
语法格式:
<jsp:forward page="relativeURL" />
param
<jsp:param>动作可以用于<jsp:include>、< jsp:forward>和<jsp:plugin>动作体中,为其他动作提供附加信息。
语法格式:
<jsp:param name="paramName" value=" param Value"/>
name属性用于指定参数名称,不可以接受动态值。
value属性用于指定参数值,可以接受动态值。
例:
<jsp:useBean id="user" class="entity.User" scope="request"></jsp:useBean>
<jsp:setProperty property="username" name="user" value="李四" />
<jsp:setProperty property="usex" name="user" value="男"/>
<jsp:getProperty property="username" name="user"/>
<jsp:getProperty property="usex" name="user"/>
<jsp:forward page="forward.jsp">
<jsp:param value="xiaomi mix2" name="phone"/>
<jsp:param value="2000" name="price"/>
</jsp:forward>
JSP内置对象
九大内置对象
out:
out对象可以调用如下方法把数据输出到网页,上,并能够控制管理输出缓冲区和输出流。
out对象主要用于向客户输出各种数据,同时管理应用服务器上的输出缓冲区(buffer)。
request:
作用:请求对象,接受通过HTTP协议传送到服务器的数据。
类型:HttpServletRequest
常用方法:
1.getParameter(String name):用于获取客户端传送给服务器端的指定请求参数的值(获取用户提交的表单信息)
2.forward(String url):转发
3.getParameterValues(String name):用于获取客户端传送给服务器端的指定请求参数的所有值,返回值是字符串数组。
4.getAttribute (String name):用于获取request对象中指定属性的值,若指定属性不存在,就返回null。
5.setAttribute(String name, Object obj):用于设置request对象中的属性及其属性值。
6.getCharacterEncoding() 编码,防止乱码
response:
作用:响应对象,将JSP容器处理过的对象传回到客户端。
类型:HttpServletResponse
常用方法:
1.sendRedirect():用于重新定向客户端的请求。
2.setCharacterEncoding()用于设置响应的字符编码方式。
3.addCookie(Cookie cook):用于添加Cookie对象,保存客户端的相关信息。可以使用request对象的getCookies()方法获取该Cookie对象。
session:
作用:会话对象,用于保存该用户的信息,跟踪用户的操作状态。
类型:HttpSession
常用方法:1.invalidate() 销毁当前的session
2.getValueNames() 返回一个包含此SESSION中所有可用属性的数组
3.String getId() 返回SESSION创建时JSP引擎为它设的惟一ID号
4.setMaxInactiveInterval() session对象有效活动时间
application:
作用:application对象保存Web应用程序中公有的数据,可存放全局变量。服务器启动后自动创建application对象,此对象将一直有效,直到服务器关闭。不同用户可以对该对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此对象的访问。
Application对象和session对象的区别:
在使用session对象时,-一个客户对应-一个session对象,而使用application对象时, 在一-个应用程序中的JSP文件共享一 个application对象。
pageContext:
作用:对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。
config:对象的主要作用是取得服务器的配置信息。
page:
作用:指的是当前JSP页面对象;
exception:
exception对象需要配合page指令一起使用,在page指令中errorPage属性指定某-个页面为错误处理页面,把所有的错误都集中该页面进行处理,错误页面中pageisErrorPage属性应设为true。
四大作用域:
pageContext: 一个页面
request:一次请求(可能包含多个页面)
session:一次会话(可能包含多个请求)
application:一次服务(可能包含多个会话)
常用方法:
1.setAttribute(key,value)
2.getAttribute(key)
3.remove(key)
EL表达式
EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL出现的目的是要替代jsp页面中脚本的编写。
使用方式
1.取基本数据类型和或字符串:${key}
2.取对象属性:${对象.属性名}
3.取数组/集合对象:${数组[下标].属性名称}
执行表达式:
${1+1}
${empty user}
${user==null?true:false}
EL获取数据
依次从四大作用域中获取数据:
pageContext
request
session
application
存在就输出,不存在就往下获取
若都不存在,输出空字符串
jstl标签库
taglib
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
常见jstl标签:
test :条件
1.<c:if test="${判断的条件}">显示的内容</c:if>
2.<c:forEach ></c:forEach> 迭代标签,接收多种集合类型
例如:<c:forEach var="i" begin="1" end="5" step="12">${i}</c:forEach>
items: 要被循环的信息
varStatus: 循环状态的变量名称
begin: 开始的元素
end:结束的元素
step:步长
var :当前条目的变量名称
3.<c:choose> 父标签 类似于switch case 结构
<c:when test="${判断的条件}"></c:when>子标签 判断条件是否成立
<c:when test=""></c:when>
......
<c:otherwise></c:otherwise>子标签 c when 判断为False时
</c:choose>

浙公网安备 33010602011771号