JSP基础
1.Cookie
将一个cookie对象传入客户端 | 构造一个cookie对象 |
---|---|
response.addCookie(Cookie cookie) | Cookie cookie=new Cookie(String name,String value) |
2.Session
session默认基础cookie | HttpSession session = request.getSession();得到内置对象,永远不为空,除非服务器禁止session。 |
---|---|
JSESSIONID是一个Cookie,Servlet容器,用来记录用户session | setAttribute保存数据,此方法还可将数据取出session.setAttribute(String name,Object obj); |
cookie禁用:利用url携带JSESSIONID参数 | Object obj = session.getAttribute(String name) |
3.比较
Cookie | Session | |
---|---|---|
存放位置 | 浏览器本地硬盘(客户端) | 服务器内存 |
值的类型 | ASCII字符串 | 对象(包括且不限于string,integer,list,map等) |
存储大小 | 小(<=4k一个站点最多保存20个Cookie) | 大(取决于服务器设置) |
安全性 | 不安全(他人可以分析存放在本地的Cookie并进行Cookie欺骗) | (当访问增多,会比较占用服务器的性能。考虑到减轻服务器性能方面,应当使用Cookie) |
跨域支持 | 支持 | 不支持 |
简单JSP程序
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>第一个JSP程序</title>
</head>
<body>
<%
out.println("Hello World!");
%>
</body>
</html>
JSP的生命周期
(1)编译阶段:Servelet容器编译Servelet源文件,生成servelet类,当浏览器请求JSP页面时,JSP引擎会首先去检查是否需要编译这个文件。 如果这个文件没有被编译过,或者在上次编译后被更改过,则编译这个JSP文件。 编译的过程包括三个步骤: 解析JSP文件。 将JSP文件转为servlet。 编译servlet。 解析JSP文件。 将JSP文件转为servlet。 编译servlet. (2)初始化阶段: 加载与JSP对应的Servelet类,创建其实例,并调用它的初始化方法 容器载入JSP文件后,它会在为请求提供任何服务前调用jspInit()方法。 如果您需要执行自定义的JSP初始化任务,复写jspInit()方法就行了,就像这样: public void jspInit(){ // 初始化代码 } 一般来讲程序只初始化一次,servlet也是如此。 通常情况下您可以在jspInit()方法中初始化数据库连接、打开文件和创建查询表。 (3)执行阶段: 调用与JSP对应的Servelet实例的服务方法 当JSP网页完成初始化后,JSP引擎将会调用_jspService()方法。 _jspService()方法需要一个HttpServletRequest对象和一个HttpServletResponse对象作为它的参数,就像下面这样: void _jspService(HttpServletRequest request, HttpServletResponse response) { // 服务端处理代码 } jspService()方法在每个request中被调用一次并且负责产生与之相对应的response,并且它还负责产生所有7个HTTP方法的回应,比如GET、POST、DELETE等等。 (4)销毁阶段: 调用与JSP对应的Servelet实例的销毁方法,然后销毁Servelet实例jspDestroy()方法在 JSP中等价于servlet中的销毁方法。 jspDestroy()方法的格式如下: public void jspDestroy() { // 清理代码 } JSP标签 <% 代码片段 %> <% out.println("Your IP address is " + request.getRemoteAddr()); %> |
---|
JSP注释
<%-- 这里可以填写 JSP 注释 --%> |
---|
JSP表达式输出
<%=%> |
---|
JSP中的三种指令标签 | ||
---|---|---|
指令 | 描述 | 例 |
<%@ page … %> 定义网页依赖属性,比如脚本语言、error页面、缓存需求等等
<%@ page pageEncoding="" import="" errorPage=""%>
<%@ include … %> 包含其他文件 <%@ include file=""%>
<%@ taglib … %> 引入标签库的定义 <%@ taglib prefix="" uri="">
JSP九大内置对象
response 转译后对应HttpServletRespons/ServletResponse对象 final javax.servlet.http.HttpServletResponse response |
---|
session 转译后对应HttpSession对象 javax.servlet.http.HttpSession session |
application 转译后对应ServletContext对象 final javax.servlet.ServletContext application |
out 转译后对应JspWriter对象,其内部关联一个PringWriter对象 javax.servlet.jsp.JspWriter out |
page 转译后对应this final java.lang.Object page = this; |
config 转译后对应ServletConfig对象 final javax.servlet.ServletConfig config; |
exception 转译后对应Throwable对象,代表由其他JSP页面抛出的异常对象,只会出现于JSP错误页面(isErrorPage设置为true的JSP页面) Exception |
pageContext 转译后对应PageContext对象,它提供了JSP页面资源的封装,并可设置页面范围属性 final javax.servlet.jsp.PageContext pageContext; |
Jsp隐含变量
1、out 来源于Java.io.Writer类,它用于发送输出流到客户端。
2、request 来源于javax.servlet.http.HttpServletRequest接口。它被关联到每一个HTTP请求。
3、response 来源于javax.servlet.http.HttpServletResponse。response对象用于把取得的数据返回到客户端。
4、pageContext 提供访问JSP页面的命名空间。它也提供用来访问其他的JSP隐含对象。
5、session 来源于javax.servlet.http.HttpSession。它用于存储客户端请求的信息,因此它是有状态交互式的。
6、application 来源于javax.servlet.ServletContext。
7、config 来源于ServletConfig,它包含了当前JSP/Servlet所在的WEB应用的配置信息。
8、page 来源于当前被访问JSP页面的实例化。它实际使用的是JSP转换成的Servlet。
9、exception 用于捕获JSP抛出的异常。它只有在JSP页面属性isErrorPage=true时才可用。
作用域
什么是作用域?
我们在定义每一个变量,每一个属性的时候,都会考虑这个变量、属性的作用范围,也就是作用域。我们会根据我们的需求定义最适当作用域内的变量和属性。
PAGE_SCOPE = 1
REQUEST_SCOPE = 2
SESSION_SCOPE = 3
APPLICATION_SCOPE = 4
page作用域
request作用域
session作用域
application作用域
这四个作用域的作用范围,由上到下是一个比一个大。