JSP复习快速复习提纲
第一章 JSP简介
1.JSP的定义
JSP全称是“Java Server Page”,是服务器界面,是一种动态网页开发技术,通过使用JSP标签在HTML中插入Java代码,JSP在进行编写执行后,把生成的页面反映给客户端。
2.Tomcat各个服务器安装目录各文件夹含义
(1)bin目录:该目录主要用于存放tomcat的命令
(2)config目录:用于存放tomcat的一些配置文件。
server.xml:可以设置端口号、设置域名或者Ip
web.xml:可设置支持的文件类型
context.xml:可设置配置数据源之类的信息
tomcat-users.xml:用来配置管理tomcat用户与权限
(3)lib目录:该目录主要用来存放tomcat运行需要加载的jar包
(4)logs目录:用来存放tomcat在运行过程中产生的日志信息
(5)temp目录:用来存放tomcat在运行过程中产生的临时文件
(6)webapps目录:主要用来存放应用程序,当tomcat启动时会去加载webapps目录下的应用程序。
(7)work目录:用来存放tomcat在运行后编译的文件,例如JSP编译后的文件。
第二章 JSP语法
1.JSP语法包含的五种元素
(1)普通的Html页面
(2)JSP标记
(3)变量和声明方法
(4)JAVA程序片
(5)JAVA表达式
2.了解JSP页面运行原理(了解)
jsp工作原理︰所有的JSP应用程序在首次载入时都被翻译成Servlet文件,然后再运行,这个工作主要是由JSP引擎来完成。当第一次运行一个JSP页面时,JSP引擎要完成将JSP文件翻译成Servlet文件,Servlet文件是Java应用程序;JSP引擎调用Java编译器,编译Servlet文件得到可执行的代码文件(.class文件)。
JSP引擎调用Java虚拟机解释执行.class文件,并将运行结果返回给服务器;服务器将运行结果以HTML形式作为响应返回给客户端的浏览器。由于一个JSP页面在第一次被访问时要经过翻译、编译和执行这几个步骤,所以客户端得到响应所需要的时间比较长。当该页面再次被访问时,它对应的.class文件已经生成,不需要再次翻译和编译,JSP引擎可以直接执行.class文件,因此JSP页面的访问速度会大为提高。
3.如何声明变量、定义类、定义方法
- 声明变量
<%!
int x,y=100,z;
String tom=null,jery="Love JSP";
Date date;
%>
- 定义类
<%!
public class Circle
{
double r;
Circle(double r)
{
this.r = r;
}
double 求面积()
{
return Math.PI*r*r;
}
}
%>
- 定义方法
<%!
int num = 0; //声明一个计数变量
synchronized void add()
{
//该方法实现访问次数的累加操作
num++;
}
%>
4.插入Java程序片和表达式
程序片
java片段(scriptlet): <% java代码; %>
表达式
用于输出表达式的值到浏览器,<%=表达式 %> 在表达式中不能加分号(;)
5.JSP当中的全局变量和局部变量
<%!
int x = 10; //全局变量
%>
<%
int y = 10; //局部变量
out.println("<h2>x = " + x++ + "</h2>");
out.println("<h2>y = " + y++ + "</h2>");
%>
总结:
<%! %>包裹的为全局变量
<% %>包裹的为局部变量
6.JSP注释
<%-- 注释信息 --%>
以上注释在客户端中通过源代码看不到注释中的内容,安全性高
7.JSP指令
JSP指令的一般格式:
<%@指令 属性名="值"%>
指令类型
- page指令
- include指令
Page指令
page指令用来定义整个jsp页面的一些属性和这些属性的值,属性值用单引号或者双引号括起来
语法格式:
<%@ page 属性1= “值1” 属性2=“值2” …%>
page指令属性
指令名称 | 指令简介 |
---|---|
language | language="java"生命JSP程序文件所使用的语言,默认java |
import | 用来指定JSP页面中需要导入的包,多包导入需要逗号隔开 |
info | info="text"用来设置JSP页面中的文本信息,可通过getServletInfo()方法获取 |
pageEncoding | 更改字符串级 |
contentType | 表明发送到客户端的程序文件的类型和字符编码 |
注意:
JSP页面中使用page指令只能为contentType指定一个值,不允许两次使用Page指令传递给contentType属性。
<%--错误示范--%>
<%@ page language="java" contentType="application/msword" %>
<%@ page language="java" contentType="text/html" charset="gb2312" %>
include指令
基本语法格式
<%@ include file="url" %>
例如:
<%@ include file="example2.jsp" %>
嵌入文件,相当于把这个页面插入到另一个页面当中。
JSP动作标记语法
语法格式
<jsp: include page="URL"/>
<jsp: include page="URL">
param
</jsp: include>
**当JSP页面运行时才将文件加载进来**
注意
<%@ include %>指令和<jsp: include/>动作的区别
(1)<%@ include %>静态包含,是在编译阶段就把次级页面 代码包含进来 ,即不能于当前页面的代码有冲突。优点:执行速度嘎嘎快
(2)<jsp: include/>是在JSP页面执行时才处理文件,是将次级页面 输出进来 。独立于当前JSP页面,动态包含。缺点:执行慢了点喔。
第三章 JSP内置对象
Request对象
request对象作用
内置对象request封装了用户请求页面时所提交的信息,该对象调用相应的方法可以获取封装的信息。
request对象常用方法
方法名 | 描述 |
---|---|
getParameter(String name) | 获得客户端传递给服务器的name参数的值,否者返回null |
getParameterValues(String name) | 以字符串的形式返回指定参数的所有值 |
getProtocol() | 获取请求的通信协议,如Http/1.1 |
getServletPath() | 获取请求的JSP页面所在的目录呀~ |
getContentLength() | 获取HTTP请求的长度 |
getMethod() | 获取表单提交信息的方式,post或者get |
getHeader(String s) | 获取请求头中的值 |
getHeaderNames() | 获取头名字的一个枚举 |
getHeaders(String s) | 获取头的全部值 |
getRemoteAddr() | 获取客户机IP地址 |
getRemoteHost() | 获取客户机的名称 |
getServerName() | 获取服务器的名称 |
getServerPort() | 获取服务器的端口号 |
getParameterNames() | 获取提交信息体中部分name参数的一个枚举 |
setAttribute(String name,Java.lang.Object obj) | 设置名字为name的request参数值,值为obj |
getAttribute(String name) | 获取request对象name参数的值 |
常见的HTML标记
标记 | 描述 |
---|---|
<h1>~<h6> |
用于定义标题,从一级标题到六级标题。 |
<p> |
用于定义段落。 |
<a> |
链接标记,用于定义链接和超链接。 |
<img> |
图像标记,用于插入图片 |
<ul><ol><li> |
列表标记,用于创建无序列表和有序列表。 |
<table><tr><td> |
表格标记,用于创建表格 |
<strong><em><u><s> |
文本样式标记,用于为文本添加粗体、斜体、下划线、删除线等样式。 |
… |
Response对象
response对象作用
response对象用于对用户的请求做出响应。
response对象常用方法
方法名 | 描述 |
---|---|
setContentType(String s) | 改变返回MIME类型,按照新的响应类型返回 |
sendRedirect(URL url) | 重定向,将用户重新引导到一个页面(输错登录信息,引导重新回到登录页) |
setHeader(“key”,“value”) | 设置新的HTTP头,例如response.setHeader(“refresh”,“5”);每五秒刷新一次 |
Session对象
session对象用来在客户首次访问服务器时,将为该客服创建一个session对象,用来记录连接的信息。
session对象常用方法
方法名 | 描述 |
---|---|
setAttribute(key,obj) | session对象调用该方法将参数key指定对象存进session当中 |
getAttibute(String key) | 获取session对象当中关键字是key的对象。 |
getAttributeNames() | session对象调用该方法产生一个枚举对象,该枚举对象使用nextElements()遍历session中各对象所对应的关键字 |
getCreationTime() | session对象调用该方法可以获取该对象创建的时间 |
removeAttribute(String key) | session对象调用该方法移除关键字key对应的对象 |
session对象的生存期限(生命周期)
换个说法,啥时候session会gameover!!!
session对象失效的方式
(1)关闭浏览器(把浏览器叉出去,不配运行)
(2)session对象调用invalidate() (自杀,不陪你玩了,自己去亖)
(3)设置发呆时间,setMaxInactiveInterval(int interval) 单位毫秒 (活到55岁就可以退休了~~~)
Application对象
application对象是访问同一个web目录下所有用户共享的
对于一个Web容器,所有用户都共享一个application对象,服务器启动后,就会自动创建一个application对象,这个对象就会一直保存,直到服务器嘎了。
application对象常用方法
方法名 | 描述 |
---|---|
setAttribute(key,obj) | application对象调用该方法将参数key指定对象存进session当中,如有重复,替换 |
getAttibute(String key) | 获取application对象当中关键字是key的对象。 |
getAttributeNames() | 对象调用该方法产生一个枚举对象,该枚举对象使用nextElements()遍历application中各对象所对应的关键字 |
removeAttribute(String key) | 该方法移除关键字key对应的对象 |
getServletInfo() | application对象调用该方法获得servlet编译器的当前版本信息 |
生命周期
生于服务器开始,崩于服务器嘎~
session对象和Application区别
(1)两者的作用范围不同:session是用户级别的,application是web应用程序级别的,是一个全局作用域
(2)每一个用户都有一个自己的session,而所有用户可以共享通一个application,相当于全局变量。