## :JSP :入门学习
1. 概念 :
* Java Server Pages : Java服务器端页面
(1. 可以理解为 : 一个特殊的页面,既可以指定定义html标签,又可以定义Java代码
(2. 功能 :简化书写!!!直接将Java代码写到html页面上,而不用写到类里边,减少工作量
2. 原理 :
* JSP本质上就是一个Servlet


3. JSP脚本 : JSP定义Java的方式
(1. <% 代码 %> : 定义的Java代码在Service方法中, service方法中可以定义什么,该脚本中就可以定义什么
(2. <%! 代码 %> :定义的Java代码,在jsp转换后的Java类的成员位置。(可能会引发线程安全问题,用的比较少)
(3. <%= 代码 %> : 定义的Java代码会输出到 页面上,输出语句中可以定义什么,该脚本中就可以定义什么。
4. JSP内置对象:
* 在JSP页面中不需要获取和创建,可以直接使用的对象
* JSP一共有9个内置对象。
* 学习三个 :
(1. request
(2. response
(3. out : 字符输出流对象,可以将数据输出到页面上,和response.getWriter()类似
* response.getWriter() 和 out 的区别 :(html中一般采用out输出)
a. 在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,在找out缓冲去数据.
b, response.getWriter() 数据输出永远在out,writer()之前
## 案例 :
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="java.net.URLDecoder" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>zhulin</title>
</head>
<body>
<%
//1.获取所有的Cookie
Cookie[] cookies = request.getCookies();
boolean flag = false;
//2.遍历Cookie[]数组
if (cookies!=null && cookies.length>0){
for (Cookie cookie:cookies){
//3.获取名称
String name = cookie.getName();
//4.判断名称是否为lastTime
if (name.equals("lastTime")){
//有该Cookie,不是第一次响应
flag = true;
//获取当前的时间字符串,重新设置Cookie,重新发送Cookie
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str_date = simpleDateFormat.format(date);
System.out.println("编码前 :" + str_date);
//URL编码
str_date = URLEncoder.encode(str_date, "utf-8");
System.out.println("编码后 :"+str_date);
cookie.setValue(str_date);
//设置持久化存储
cookie.setMaxAge(60*60*24*30); //一个月
response.addCookie(cookie);
//响应数据
//获取Cookie的value
String value = cookie.getValue();
System.out.println("解码前 :"+value);
//URL解码
value = URLDecoder.decode(value, "utf-8");
System.out.println("解码后 :"+value);
//使用字符输出流输出到浏览器
//代码截断,并不影响Java代码的执行
%>
<h1>欢迎回来,您上次访问时间为 :<%= value %></h1>
<%-- 值得输出<%= 输出值 %>--%>
<%
break;
}
}
}
if (cookies == null || cookies.length==0 || flag == false){
//没有,第一次访问
//获取当前时间的字符串,重新设置Cookie的值,重新发送Cookie
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str_date = simpleDateFormat.format(date);
System.out.println("编码前:" + str_date);
//URL编码
str_date = URLEncoder.encode(str_date,"utf-8");
System.out.println("编码后 :"+ str_date);
Cookie cookie = new Cookie("lastTime", str_date);
//设置Cookie存活的时间
cookie.setMaxAge(60*60*24*30); //一个月
response.addCookie(cookie);
//使用字节输出流输出到浏览器
out.write("<h1>您好,欢迎您首次访问</h>");
}
%>
</body>
</html>

被折叠的 条评论
为什么被折叠?



