博客
关于我
JSP 入门学习
阅读量:351 次
发布时间:2019-03-04

本文共 3593 字,大约阅读时间需要 11 分钟。

文章目录

一、概念

Java Server Pages java服务器端页面

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

在这里插入图片描述

二、原理

JSP本质上就是一个Servlet

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所以也可以知道一个java类要想被外界访问到,必须是 一个servlet

三、JSP 的脚本

(1)<%  代码 %>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。(2)<%! 代码 %>:定义的java代码,在jsp转换后的java类的成员位置。(3)<%= 代码 %>:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>    $Title$<%    System.out.println("hello jsp !!!");%><%!    int i = 8;%><%="Hello world !!!"%>

四、JSP 的内置对象

JSP的内置对象:		* 在jsp页面中不需要获取和创建,可以直接使用的对象		* jsp一共有9个内置对象。* 今天学习3个:			* request			* response			* out:字符输出流对象。可以将数据输出到页面上,和response.getWriter()类似* response.getWriter()和out.write()的区别:		* 在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据。		* response.getWriter()数据输出永远在out.write()之前

为了防止布局的打乱,一般使用 out 来实现输出

在这里插入图片描述

五、改造 Cookie 案例

<%@ page import="java.net.URLDecoder" %><%@ page import="java.util.Date" %><%@ page import="java.text.SimpleDateFormat" %><%@ page import="java.net.URLEncoder" %><%@ page contentType="text/html;charset=UTF-8" language="java" %>    $Title$<%    //        (1)获取所有的 Cookie    Cookie[] cookies = request.getCookies();    boolean flag = false;//用来判断是否有 Cookie 为 lastTime//        (2)遍历 cookies 数组    if (cookies != null && cookies.length > 0) {           for (Cookie cookie : cookies) {   //                (3)获取 cookie 的名称            String name = cookie.getName();//                (4)判断名称是否是 lastTime            if ("lastTime".equals(name)) {   //                    有该 cookie,不是第一次访问                flag = true;//                    响应数据,获取 Cookie 的 value,时间                String value = cookie.getValue();//                    由于对 value 设置了编码,所以这里需要对其进行解码,才能正常显示                String decode = URLDecoder.decode(value, "utf-8");                out.write("

欢迎回来,您上次访问的时间为:" + decode + "

");// 获取之后,将 value 更新为新的值// 获取当前时间的字符串,重新设置 Cookie 的值,重新发送 cookie Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); String format = simpleDateFormat.format(date);// 为了处理cookie 中 value 的 特殊字符,需要对其进行编码 System.out.println("编码前:" + format);// URL 编码 String encode = URLEncoder.encode(format, "utf-8"); System.out.println("编码后:" + encode);// 将编码后的值设置进去 cookie.setValue(encode);// 设置 cookie 的存活时间为一个月 cookie.setMaxAge(60 * 60 * 24 * 30); response.addCookie(cookie); break; } } } if (cookies == null || cookies.length == 0 || flag == false) { // 属于第一次访问的情况// 设置 Cookie 的 value// 获取当前时间的字符串,重新设置 Cookie 的值,重新发送 cookie Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); String format = simpleDateFormat.format(date);// 为了显示特殊字符需要对其进行编码处理 String encode = URLEncoder.encode(format, "utf-8"); Cookie cookie = new Cookie("lastTime", encode);// 设置 cookie 的存活时间 cookie.setMaxAge(60 * 60 * 24 * 30); response.addCookie(cookie); out.write("

您好,欢迎您首次访问!

"); }%>

jsp 也支持截断操作:

<%@ page import="java.net.URLDecoder" %><%@ page import="java.util.Date" %><%@ page import="java.text.SimpleDateFormat" %><%@ page import="java.net.URLEncoder" %><%@ page contentType="text/html;charset=UTF-8" language="java" %>    $Title$<%    int i = 9;    out.print("截断操作");%>

输出 i 的值:<%=i%>

<%= "截断操作!!!"%>

转载地址:http://yaxr.baihongyu.com/

你可能感兴趣的文章
定时任务最简单的3种实现方法(超实用)
查看>>
JavaScript禁用页面刷新
查看>>
nodejs Error: request entity too large解决方案
查看>>
检索COM类工厂中CLSID为{00024500-0000-0000-C000-000000000046}的组件时失败
查看>>
PowerDesigner版本控制器设置权限
查看>>
关于后台系统自动生成的一点思考
查看>>
史上最易懂——ReactNative分组列表SectionList使用详情及示例详解
查看>>
Spring Session工作原理
查看>>
如何在公司项目中使用 WebSocket— 入门实战指南
查看>>
微服务时代组件化和服务化的抉择
查看>>
论AOP面向切面编程思想
查看>>
Visual Studio 2019 升级16.8之后(升级.Net 5),RazorTagHelper任务意外失败
查看>>
.Net Core 3.1 服务端配置跨域
查看>>
IDEA SVN 使用
查看>>
MySQL 偶尔抽风,性能突然下降
查看>>
TeamViewer 远程应用不显示,空白解决方案
查看>>
Spring Boot @Enable*注解源码解析及自定义@Enable*
查看>>
leetcode之最长回文串
查看>>
基于 HAProxy 搭建 EMQ X 集群
查看>>
Android Retrofit+RxJava 优雅的处理服务器返回异常、错误
查看>>