jsp技术(二)
jsp基础语法
1、JSP模版元素
网页的静态内容。如:html标签和文本。
2、JSP的脚本:
- 小脚本 <% java代码 %>
- 表达式 <%= 2+3 %> 等价于out.print(2+3);
- 声明 <%! %> 表示在类中定义全局成员,和静态块。
3、JSP注释:
JSP注释:<%– 被注释的内容 –%> 特点:安全,省流量
网页注释:(网页注释信息不显示) 特点:不安全,费流量
jsp的三个指令
JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。
JSP规范中的三个指令:page指令,include指令,taglib指令
语法:<%@ 指令名称 属性1=“属性值1” 属性2=“属性值2”。。。%>
或者:<%@ 指令名称 属性1=“属性值1”%> <%@ 指令名称 属性2=“属性值2”%>
如:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page language="java" %>
<%@ page import="java.util.*" %>
page指令:
作用:用于定义JSP页面的各种属性
属性:
1. import 和java代码中的import是一样的
<%@ page import="java.util.Date,java.util.List"%>
或者:
<%@ page import="java.util.Date"%>
<%@ page import="java.util.List"%>
JSP会自动导入以下的包:
import java.lang.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;、
2. session:是否会自动创建session对象。默认值是true;
3. buffer:JSP中有javax.servlet.jsp.JspWriter输出字符流。设置。输出数据的缓存大小,默认是8kb.
4. errorPage:如果页面中有错误,则跳转到指定的资源。errorPage=”/uri” 如果写“/”则代表当前应用的目录下,绝对路径。如果不写“/”则代表相对路径。
5. isErrorPage:是否创建throwable对象。默认是false;
6. contextType:等同于response.setContextType(“text/html;charset=utf-8”);
7. pageEncoding:告诉JSP引擎要翻译的文件使用的编码。
8. isELIgnored:是否支持EL表达式。 默认是false
include指令:
静态包含:把其它资源包含到当前页面中。
<%@ include file="/include/header.jsp" %>
动态包含:
<jsp:include page="/include/header.jsp"></jsp:include>
两者的区别:翻译的时间段不同
前者:在翻译时就把两个文件合并
后者:不会合并文件,当代码执行到include时,才包含另一个文件的内容。
原则:能用静的就不用动的。
taglib指令:
作用:在JSP页面中导入JSTL标签库。替换jsp中的java代码片段。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
jsp中的6个动作
使用标签的形式来表示一段java代码。
如:<jsp:include page="2.jsp"></jsp:include>
<jsp:include > 动态包含
<jsp:forward> 请求转发
<jsp:param> 设置请求参数
下列三个动作为一组:
<jsp:useBean> 创建一个对象
<jsp:setProperty> 给指定的对象属性赋值
<jsp:getProperty> 取出指定对象的属性值
示例代码如下:通过这三个动作可以在jsp中设置类中的参数以及读取类的内容数据。
<%@page import="com.swulearn.Student"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
Student stu = new Student();
stu.setName("tom");
out.print(stu.getName());
%>
//上面一段代码用来创建学生类,并且设置名字为tom并且输出,下面则是等效的做法。
<jsp:useBean id="stu1" class="com.swulearn.Student"></jsp:useBean>
<jsp:setProperty property="name" name="stu1" value="jerry"/>
<jsp:getProperty property="name" name="stu1"/>
<!-- http://localhost:8080/day11_02_jsp2/6.jsp?name=123 -->
<jsp:forward page="/7.jsp">
<jsp:param value="123" name="name"/>
<jsp:param value="333" name="pwd"/>
</jsp:forward>
</body>
</html>
jsp的九大内置对象
指在JSP的<%=%> 和<% %>中可以直接使用的对象
对象名 | 类型 | 说明 |
---|---|---|
request | javax.servlet.http.HttpServletRequest | |
response | javax.servlet.http.HttpServletResponse | |
session | javax.servlet.http.HttpSession | 由session=”true”开关 |
application | javax.servlet.ServletContext | |
exception | java.lang.Throwable | 由isErrorPage=”false”开关 |
page | java.lang.Object当前对象this | 当前servlet实例 |
config | javax.servlet.ServletConfig | |
out | javax.servlet.jsp.JspWriter | 字符输出流,相当于 printWriter对象 |
pageContext | javax.servlet.jsp.PageContext |