JSP相关概念
- 概念:java servlet pages,java服务器端页面。可以理解为一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码。
- JSP的产生就是为了简化代码的书写。
JSP的实现原理
- JSP本质上就是一个servlet
JSP的脚本
- 概念:JSP定义java代码的方式。例如,
<%%>
对应的区域就是JSP的脚本
<% %>
:定义的java代码在service方法当中。service方法可以定义什么,该脚本就可以定义什么。
<%! %>
:定义的是java类的成员,可以定义成员变量,也可以定义成员方法。
<%= %>
:定义的java代码会输出到页面上,同sysout的使用,只不过是打印到页面上面。
JSP的内置对象
- 在JSP页面当中不需要获取和创建,可以直接使用的对象
- jsp一共有9个内置对象
out.write()和response.getWriter().write()的区别
- response.getWriter().write()会先于out.write()输出,而out.write()写在哪里就会在哪里进行输出。
实际上,在tomcat服务器真正给客户端服务器做出响应之前,会先找到response缓冲区的数据,再找out缓冲区的数据。因此response.getWriter().write()会永远先于out.write()输出。
在这里我们建议使用out,write()进行输出,这样不会破坏页面的布局。
JSP的cookie案例
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="java.net.URLDecoder" %><%--
Created by IntelliJ IDEA.
User: JiadeChen
Date: 2020/2/15
Time: 11:47
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<h1>HELLO WORLD!</h1>
<%!
private Cookie getTimeCookie(Cookie[] cookies) {
if (cookies == null) {
return null;
}
for (Cookie cookie : cookies) {
if (cookie.getName().equals("time")) {
return cookie;
}
}
return null;
}
%>
<%
response.setContentType("text/html;charset=utf-8");
Cookie[] cookies = request.getCookies();
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = URLEncoder.encode(simpleDateFormat.format(date), "utf-8");
Cookie cookie = getTimeCookie(cookies);
if (cookie == null) {
out.write("欢迎您首次登陆!");
cookie = new Cookie("time", dateString);
} else {
out.write("您上次的访问时间是:" + URLDecoder.decode(cookie.getValue(), "utf-8"));
cookie.setValue(dateString);
}
response.addCookie(cookie);
%>
</body>
</html>