Jsp基础复习(一)
知识储备
- JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。JSP实际上就是Servlet。
JSP原理
浏览器将JSP文件发给服务器,服务器将jsp文件翻译成JAVA文件,然后在编译成字节码文件(.class)最后再返回给服务器
然后可以再服务器下的work文件夹下\work\Catalina\localhost找到这个路径,并且打开你项目会有下面的文件
login.jsp.java
login.jsp
JSP语法
- JSP模版元素
网页的静态内容。如:html标签和文本。 - JSP的脚本
2.1、小脚本 <% java代码 %>
2.1、表达式 <%= 2+3 %> 等价于out.print(2+3);
login.jsp:
login.jsp.java:
页面效果:
2.3、声明 <%! %> 表示在类中定义全局成员,和静态块。 - JSP注释
JSP注释:<%-- 被注释的内容 --%> 特点:安全,省流量
网页注释: 特点:不安全,费流量 - 指令
语法:
<%@ 指令名称 属性1=“属性值1” 属性2=“属性值2”。。。%>
或者:
<%@ 指令名称 属性1=“属性值1”%>
<%@ 指令名称 属性2=“属性值2”%>
Page指令
- page指令用于定义JSP页面的各种属性,无论page指令出现在JSP页面中的什么地方,它作用的都是整个JSP页面,为了保持程序的可读性和遵循良好的编程习惯,page指令最好是放在整个JSP页面的起始位置。
- 属性:
2.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.2 session: 是否会自动创建session对象。默认值是true;
2.3 buffer: JSP中有javax.servlet.jsp.JspWriter输出字符流。设置。输出数据的缓存大小,默认是8kb.
2.4 errorPage: 如果页面中有错误,则跳转到指定的资源。
errorPage="/uri" 如果写“/”则代表当前应用的目录下,绝对路径。如果不写“/”则代表相对路径。
2.5 isErrorPage: 是否创建throwable对象。默认是false;
2.6 contextType: 等同于response.setContextType(“text/html;charset=utf-8”);
2.7 pageEncoding: 告诉JSP引擎要翻译的文件使用的编码。
2.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” %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isErrorPage="true"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!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>
<%
if(5>3)
out.write("我很厉害");
%>
//上面的代码等价于下面的
<c:if test="${5>3 }">
我很厉害
</c:if>
</body>
</html>
jsp的6个动作
使用标签的形式来表示一段java代码。
- <jsp:include > 动态包含
- <jsp:forward > 请求转发
- <jsp:param > 设置请求参数
- <jsp:useBean > 创建一个对象
- <jsp:setProperty > 给指定的对象属性赋值
- <jsp:getProperty > 取出指定对象的属性值
例子:
上下等价
<%
Student stu = new Student();
stu.setName("张三");
out.print(stu.getName());
//request.getRequestDispatcher("/2.jsp").forward(request, response);
%>
<jsp:useBean id="stu1" class="com.itheima.entity.Student"></jsp:useBean>
<jsp:setProperty property="name" name="stu1" value="jerry"/>
<jsp:getProperty property="name" name="stu1"/>
<jsp:forward page="/2.jsp">
<jsp:param value="123" name="name"/>
<jsp:param value="333" name="pwd"/>
</jsp:forward>
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