1. 概念

* Java Server Pages: java服务器端页面
        * 可以理解为:一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码
        * 用于简化书写!!!

2. 原理

 * JSP本质上就是一个Servlet

3. JSP的脚本:JSP定义Java代码的方式

    1. <%  代码 %>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。
    2. <%! 代码 %>:定义的java代码,在jsp转换后的java类的成员位置。
    3. <%= 代码 %>:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。



JSP的内置对象

* 在jsp页面中不需要获取和创建,可以直接使用的对象
    * jsp一共有9个内置对象
        * request
        * response
        * out:字符输出流对象。可以将数据输出到页面上。和response.getWriter()类似



response.getWriter()和out.write()的区别:

           * 在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据。
           * response.getWriter()数据输出永远在out.write()之前



<%@ 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>itcast</title>
</head>
<body><%//1.获取所有CookieCookie[] cookies = request.getCookies();boolean flag = false;//没有cookie为lastTime//2.遍历cookie数组if(cookies != null && cookies.length > 0){for (Cookie cookie : cookies) {//3.获取cookie的名称String name = cookie.getName();//4.判断名称是否是:lastTimeif("lastTime".equals(name)){//有该Cookie,不是第一次访问flag = true;//有lastTime的cookie//响应数据//获取Cookie的value,时间String value = cookie.getValue();System.out.println("解码前:"+value);//URL解码:value = URLDecoder.decode(value,"utf-8");System.out.println("解码后:"+value);
%>
<h1>欢迎回来,您上次访问时间为:<%=value%></h1>
<%//设置Cookie的value//获取当前时间的字符串,重新设置Cookie的值,重新发送cookieDate date  = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String str_date = sdf.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的存活时间cookie.setMaxAge(60 * 60 * 24 * 30);//一个月response.addCookie(cookie);
%><input><%break;}}}if(cookies == null || cookies.length == 0 || flag == false){//没有,第一次访问//设置Cookie的value//获取当前时间的字符串,重新设置Cookie的值,重新发送cookieDate date  = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String str_date = sdf.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);%><h1>您好,欢迎您首次访问</h1>
<span></span><%}%><input>
</body>
</html>

JSP的概念||原理||JSP的脚本||JSP的内置对象||response.getWriter()和out.write()的区别||案例:改造Cookie案例相关推荐

  1. JSP第四课:用户注册登录设计(内置对象使用)

     一.相关知识:内置对象使用 客户端的浏览器从Web服务器上获得网页,实际上是使用HTTP协议向服务器发送一个请求,服务器在接收到来自客户端浏览器发来的请求后要响应请求.JSP通过request对象获 ...

  2. JSP的9个内置对象-response

    response代表服务器对客户端的响应.大部分时候,程序无须使用response来响应客户端请求,因为有个更简单的响应对象-out.它是页面输出流,是JstWriter的实例.JspWriter是W ...

  3. JSP内置对象-response

    response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端.response对象也具有作用域,它只在JSP页面内有效.

  4. jsp内置对象--response

    response:响应对象 提供的方法:void addcookie(Cookie cookie);服务端向客户端增加一个cookie对象 void sendRedirect(String locat ...

  5. jsp内置对象*response

    response对象 基本概念: 包含了响应客户请求的有关信息.它是HttpServletResponse类的实例. response对象具有页面作用域,即访问一个页面时,该页面内的response对 ...

  6. JSP→基本语法/静态内容/指令/动作/表达式/小脚本(Scriptlet)/声明/注释、JSP页面声明周期、代码样例、九大隐式内置对象及方法代码样例

    JSP(全称JavaServer Pages)是一种动态网页技术标准. 指令 注释 小脚本 声明 表达式 JSP页面声明周期 九九乘法表样例 九大隐式内置对象 out get与post请求方式区别 r ...

  7. JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】...

    什么是EL表达式? 表达式语言(Expression Language,EL),EL表达式是用"${}"括起来的脚本,用来更方便的读取对象! EL表达式主要用来读取数据,进行内容的 ...

  8. JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】(修订版)...

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 什么是EL表达式? 表达式语言(Expression ...

  9. JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】

    什么是EL表达式? 表达式语言(Expression Language,EL),EL表达式是用"${}"括起来的脚本,用来更方便的读取对象! EL表达式主要用来读取数据,进行内容的 ...

最新文章

  1. mysql 查看运行级别_Linux的运行级别和chkconfig用法
  2. Web版VS Code上线:最好用的IDE终于发布网页版,然而微软发完秒删
  3. python小学_小学生学python(二)
  4. Html转义字符列表
  5. matlab示波器显示部分,Matlab 示波器显示设置
  6. 配电箱接线口诀_电路设计和家庭电路控制系统大全,学会接线不求人!
  7. libreportparam2.dll无法继续执行代码_Java并发系列番外(1)——让Thread#stop方法无法终止你的线程...
  8. HihoCoder - 1877 Approximate Matching(AC自动机+dp)
  9. ubuntu怎么安装python3操作系统32_ubuntu系统下安装python3
  10. django mysql 修改密码_Django更改sqlite数据库使用mysql数据库 - 李金龙
  11. [Oracle]Oracle表权限小结
  12. 期刊第8期 | 分享C/C++嵌入式系统编程思想
  13. 解决支持库版本兼容问题
  14. KB4484127 更新导致ACCESS数据库查询报 Query '' is corrupt 异常解决方案
  15. 基于SEIR的传播动力学模型
  16. 远程协同办公 远程协同办公的7点建议和方案 居家办公也能高效率
  17. 豫教科计算机资源管理教案,豫科版小学五年级上册信息技术教案(全册.doc
  18. centos7 分辨率修改_centos系统修改屏幕分辨率问题
  19. 辽宁教师计算机能力提升,辽宁省中学教师信息化教学能力的现状分析与提升策略研究...
  20. WINCE6.0下载地址

热门文章

  1. springBoot AOP切面编程
  2. [codeforces 508E]Maximum Matching
  3. 打印出如下图案(菱形)
  4. 尝试去读SQLMAP源码(一)
  5. 创业公司用到的技术列表
  6. “挨踢民工”的奇葩生活录
  7. 想找首歌来表达心情!
  8. Gnuplot使用x11终端自动注销问题
  9. 云迹科技:站在酒店场景服务机器人的风口
  10. S3C6410驱动I80接口LCD