前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >E018Web学习笔记-JSP

E018Web学习笔记-JSP

作者头像
訾博ZiBo
发布2025-01-06 14:42:54
发布2025-01-06 14:42:54
2800
代码可运行
举报
运行总次数:0
代码可运行

一、JSP入门

1、概念

Java Server Pages:Java服务端页面;

可以理解为一个特殊的页面,其中既可以定义HTML标签,又可以定义Java代码;

用于简化书写;

2、原理

JSP本质上就是一个Servlet;

原理步骤:

第一步:服务器解析请求消息,并找到index.jsp资源;

第二步:将jsp资源转化成Java代码(.java文件);

第三步:将Java代码转化成字节码(.class文件);

第四步:由字节码文件提供(对)访问(的响应);

3、脚本

JSP定义Java代码的方式;

三种脚本:
代码语言:javascript
代码运行次数:0
复制
1、<%    代码    %>:
定义的Java代码在service方法中,service方法中可以定义什么该脚本中就可以定义什么;

2、<%!    代码    %>:(用的少)
定义的Java代码,在JSP转换后的Java文件的成员位置,可以定义方法、变量、代码块等;

3、<%=    代码    %>:
定义的Java代码用于输出到页面上,是service方法中输出语句;

4、JSP内置对象

在JSP页面中,不需要获取或创建就直接可以使用的对象,就是内置对象;

JSP有9个内置对象:
代码语言:javascript
代码运行次数:0
复制
request:请求对象;

response:响应对象;

out:字符输出流对象,可以将数据输出到页面上,和response.getWriter()类似,
区别是:response.getWriter()永远先输出(无论定义在哪);out对象定义在哪就在哪输出;
原理:在Tomcat服务器给客户端做出响应之前,Tomcat会先读取response缓冲区数据;
建议:尽量不要用response.getWriter()输出;

5、JSP改造Cookie案例

被改造的案例是《E016Web学习笔记-Cookie和Session(一)》的“四、Cookie案例”;

地址:https://blog.csdn.net/qq_29689343/article/details/100689669

JSP代码:
代码语言:javascript
代码运行次数:0
复制
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="java.nio.charset.StandardCharsets" %>
<%@ page import="java.net.URLDecoder" %>
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        //1、获取cookie数组
        Cookie[] cookies = request.getCookies();
        //2、便利cookie数组,看是否存在lastTime
        boolean flag = false;//记录lastTime是否存在
        if(cookies!=null && cookies.length>0){
            for (Cookie cookie : cookies) {
                String name = cookie.getName();
                if("lastTime".equals(name)){
                    //3、存在——非首次访问
                    flag = true;
                    //获取当前时间字符串
                    Date date = new Date();
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                    String format = sdf.format(date);
                    //设置cookie的值
                    //提前对空格进行URL编码
                    format = URLEncoder.encode(format, StandardCharsets.UTF_8);
                    cookie.setValue(format);
                    //设置cookie的存活时间
                    cookie.setMaxAge(60*60*24*30);//一个月
                    //发送cookie
                    response.addCookie(cookie);
                    //提前在value改变之前响应数据
                    String cookieValue = cookie.getValue();
                    //URL解码
                    cookieValue = URLDecoder.decode(cookieValue, StandardCharsets.UTF_8);
                    out.write("<h1>欢迎,您的上次访问时间是"+cookieValue+"</h1>");
                }
            }
        }
        //当cookie不存在
        if(cookies==null || cookies.length==0 || !flag){
            //不存在,首次访问
            //获取当前时间字符串
            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
            String format = sdf.format(date);
            //提前对空格进行URL编码
            format = URLEncoder.encode(format, StandardCharsets.UTF_8);
            //设置cookie的值
            Cookie cookie = new Cookie("lastTime",format);
            //设置cookie的存活时间
            cookie.setMaxAge(60*60*24*30);//一个月
            //发送cookie
            response.addCookie(cookie);
            //提前在value改变之前响应数据
            out.write("<h1>欢迎,您的首次访问!</h1>");
        }
    %>
    <h1>啦啦啦。。。</h1>
    <h1>啦啦啦。。。</h1>
    <h1>啦啦啦。。。</h1>
</body>
</html>

二、JSP基础语法

1、指令

作用:

用于配置JSP页面,导入资源文件;

格式:

<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 属性名3=属性值4... %>

分类:
①page:配置JSP页面;
代码语言:javascript
代码运行次数:0
复制
1、page:配置JSP页面;
常见属性:
contentType:等同于response.setContentType(),设置想用字符集的MIME类型和字符集;
高级的开发工具,例如IDEA可以以此来设置当前页面的编码,还可以用pageEncoding="编码方式"来设置;
language="java"——编程语言;
buffer="16kb"——缓冲区大小;
import:导包:
errorPage:错误页面,当前页面发生异常后跳转到的页面;
isEeeorPage:用来标识当前页面是否是错误页面,设置为true可以使用内置对象excption,默认是false;
②include:页面包含,引入页面的资源文件;
代码语言:javascript
代码运行次数:0
复制
2、include:页面包含,引入页面的资源文件;
有些页面共同包含某一部分;

代码示例:
<%@ include file="header.jsp"%>
③taglib导入资源
代码语言:javascript
代码运行次数:0
复制
3、taglib导入资源
格式:
<%@taglib prefix="自定义的前缀" uri="资源地址" %>

2、注释

HTML注释:

只能注释HTML代码片段,内容会发送到响应体里面;

代码语言:javascript
代码运行次数:0
复制
<!-- 这是注释内容 -->
JSP注释(推荐):

可以注释所有,内容不会发送到响应体里面;

代码语言:javascript
代码运行次数:0
复制
<%-- 这是注释内容 --%>

3、内置对象

在JSP页面中,不需要获取或创建就直接可以使用的对象,就是内置对象;

一共有九个内置对象:
代码语言:javascript
代码运行次数:0
复制
其中4个域对象(共享数据):
1、pageContext
真实类型:PageContext;
作用:当前页面共享数据,还可以获取其他8个对象;

2、request
真实类型:HttpServletRequest;
作用:一次请求访问多个资源;

3、session
真实类型:HttpSession;
作用:一次会话的多个请求间;

4、application
真实类型:ServletContext;
作用:所有用户间共享数据;

response
真实类型:HttpServletResponse;
作用:响应对象;

page
真实类型:Object;
作用:当前页面(Servlet)的对象,this;

out
真实类型:JspWriter;
作用:输出对象,将数据输出到页面;

config
真实类型:ServletConfig;
作用:Servlet的配置对象;

exception
真实类型:Throwable;
作用:异常对象,isEeeorPage属性值设置为true时,方可使用;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、JSP入门
    • 1、概念
    • 2、原理
      • 原理步骤:
    • 3、脚本
      • 三种脚本:
    • 4、JSP内置对象
      • JSP有9个内置对象:
    • 5、JSP改造Cookie案例
      • JSP代码:
  • 二、JSP基础语法
    • 1、指令
      • 作用:
      • 格式:
      • 分类:
      • ①page:配置JSP页面;
      • ②include:页面包含,引入页面的资源文件;
      • ③taglib导入资源
    • 2、注释
      • HTML注释:
      • JSP注释(推荐):
    • 3、内置对象
      • 一共有九个内置对象:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档