JSP:入门学习
-
概念:
- Java Server Pages: java服务器端页面
- 可以理解为:一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码
- 用于简化书写!!!
- Java Server Pages: java服务器端页面
-
原理
JSP本质上就是一个Servlet* 当浏览器访问 * 服务器解析请求消息, 找是否有index.jsp 没有返回404错误 * 如果找到了 会将index.jsp转换为 .java文件 * 编译 .java文件,生成 .class字节码文件 * 由字节码文件提供访问
-
JSP的脚本:JSP定义Java代码的方式
- <% 代码 %>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。
- <%! 代码 %>:定义的java代码,在jsp转换后的java类的成员位置。
- <%= 代码 %>:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。
-
JSP的内置对象:
- 在jsp页面中不需要获取和创建,可以直接使用的对象
- jsp一共有9个内置对象。
- 今天学习3个:
- request
- response
- out:字符输出流对象。可以将数据输出到页面上。和response.getWriter()类似
- response.getWriter()和out.write()的区别:
- 在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据。
- response.getWriter()数据输出永远在out.write()之前
- response.getWriter()和out.write()的区别:
-
案例:改造Cookie案例
<%
//1. 获取所有的Cookie
Cookie[] cookies = request.getCookies();
boolean flag = false;//没有cookie为lastTime
//2. 遍历数组
if (cookies != null && cookies.length > 0) {
for (Cookie cookie : cookies) {
//3. 获取cookie的名称
String name = cookie.getName();
//4. 判断名称是否时lastTime
if ("lastTime".equals(name)) {
//有该cookie 不是第一次访问
flag = true;
//响应数据
String value = cookie.getValue();
//URL解码
value = URLDecoder.decode(value, "utf-8");
%>
<h1>欢迎回来,您上次访问时间为:<%= value %> </h1>
<%
//设置cookie的 value
//获取当前时间的字符串 重新设置cookie 再次fas
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("YYYY年MM月dd日 HH:mm:ss");
String curr_date = sdf.format(date);
//URL编码
curr_date = URLEncoder.encode(curr_date, "utf-8");
cookie.setValue(curr_date);
cookie.setMaxAge(30 * 24 * 60 * 60);//存活时间一个月
response.addCookie(cookie);
break;
}
}
}
if (cookies == null || cookies.length == 0 || !flag) {
//没有第一次访问
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("YYYY年MM月dd日--HH:mm:ss");
String curr_date = sdf.format(date);
//解码
curr_date = URLDecoder.decode(curr_date, "itf-8");
Cookie cookie = new Cookie("lastTime", curr_date);
cookie.setMaxAge(30 * 24 * 60 * 60);//存活时间一个月
response.addCookie(cookie);
%>
<h1>你好,第一次访问!</h1>
<%
}
%>
-
指令
- 作用:用于配置JSP页面,导入资源文件
- 格式:
<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 … %> - 分类:
- page : 配置JSP页面的
- contentType:等同于response.setContentType()
- 设置响应体的mime类型以及字符集
- 设置当前jsp页面的编码(只能是高级的IDE才能生效,如果使用低级工具,则需要设置pageEncoding属性设置当前页面的字符集)
- buffer 缓冲区
- import:导包 默认导包 一行一个
- errorPage:当前页面发生异常后,会自动跳转到指定的错误页面
- isErrorPage:标识当前也是是否是错误页面。
- true:是,可以使用内置对象exception
- false:否。默认值。不可以使用内置对象exception
- contentType:等同于response.setContentType()
- page : 配置JSP页面的
-
include : 页面包含的。导入页面的资源文件
- <%@include file=“top.jsp”%>
-
taglib : 导入资源
* <%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
* prefix:前缀,自定义的 -
注释:
- html注释: :只能注释html代码片段
- jsp注释:推荐使用
<%-- --%>:可以注释所有
-
内置对象
- 在jsp页面中不需要创建,直接使用的对象
- 一共有9个:
变量名 真实类型 作用 pageContext PageContext 当前页面共享数据,还可以获取其他八个内置对象 request HttpServletRequest 一次请求访问的多个资源(转发) session HttpSession 一次会话的多个请求间 application ServletContext 所有用户间共享数据 response HttpServletResponse 响应对象 page Object 当前页面(Servlet)的对象 this out JspWriter 输出对象,数据输出到页面上 config ServletConfig Servlet的配置对象 exception Throwable 异常对象