前言:今天内容知道就行,因为有更好的技术(jstl)来实现今天的内容,在以后开发中基本不会用今天的东西(但是最好能理解今天的内容,虽然不用会敲)。
1 jsp
1.1 jsp概述
Java server pages,简称jsp。
中文名:java服务器页面技术。
可以帮我们完成页面标签及数据的字符串拼接,主要用于动态数据(通常是从数据库中查询的数据)的展示。
1.2 jsp的创建
使用eclipse的模板直接创建jsp文件即可。
1.3 jsp的执行原理
通过观察tomcat目录下的work目录中的,可以找到jsp编译后的.java和.class文件,证明jsp的实质就是一个servlet!!!
执行原理图:
1.4 Jsp的语法
1.4.1 基本语法--脚本标签
一共有3个,常用的有两个:
<% java代码 %> 常用
<%= 表达式或变量名 %> 常用
<%! 定义成员变量或定义方法 %> 了解
1.4.2 基本语法--注释
<%-- jsp中的注释,这个注释会在翻译成.java文件的时候自动消失 --%>
<% java的注释 // /**/ ,会在.java文件中存在,在.class文件中消失 %>
<!-- html的注释,这个注释,会在jsp、.java、.class中都存在,仅在浏览器上显示的时候消失 -->
建议使用jsp的注释,因为可以尽快的让注释消失。
1.4.3 指令
在jsp中的指令有3种:
<%@ page 属性名1=属性值1 属性名2=属性值2 ... %>
用于页面控制,例如:页面编码、页面语言、页面使用的其他java类(导包)
常用的属性:
import="包名.类名,包名2.类名2,...."
<%@ include file="/其他jsp文件的路径" %>
用于静态包含,将其他的jsp页面内容,复制粘贴到本jsp页面中来(源码级别的复制粘贴)。
File的路径可以是绝对路径也可以是相对路径,建议使用绝对路径。
常用属性:
File="/其他jsp文件的路径"
<%@ taglib prefix="c" uri="jstl/core..."%>
用于引入jstl的标签,可以在jsp页面使用jstl标签完成页面上的逻辑循环,与逻辑判断等。
注意:
指令可以写在jsp页面的任意位置。
1.4.4 九大内置对象(背会)(面试常问)
所谓的内置对象就是服务器在编译jsp文件的时候,就会直接创建出来的9个变量,程序员可以直接使用这9个变量,从而实现相应的效果。
9大内置对象:
对象名 数据类型
Request HttpServletRequest
Response HttpServletResponse
Out JspWriter (比我们自己的getWriter获取的流,输出的信息要慢)
Session HttpSession
Application ServletContext
Config ServletConfig
Page this(就是编译后的servlet对象)
Exception 必须在错误页面才能使用该对象,其他页面不能使用
pageContext PageContext 含义:上下文对象;(jsp的容器对象);
pageContext的作用:
1:可以获取其他的8个内置对象。(这是一个大管家)
2:可以操作4大域的存值与取值。
关于out与response.getWriter的问题:
代码举例:
9.jsp
<%@ 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>练习9大内置对象</title>
</head>
<body>
<%
//9个内置对象,除了exception之外,都可以直接使用
request.setAttribute("username","杰克");
向session中存值
session.setAttribute("age",18);
//转发
request.getRequestDispatcher("/9nei/9_2.jsp").forward(request, response);
%>
</body>
</html>
9_2.jsp
<