JSP学习笔记

## :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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Janson666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值