理解JSP底层

import java.net.URLDecoder;public class login_jsp{//JSP的9大内置对象private JSPWriter out;//当前JSP输出流对象private HttpServletRequest request;//请求对象private HttpServletResponse response;//响应对象private HttpSession session;//会话对象private ServletContext application;//全局域对象 -- 表示整个项目private ServletConfig config;//当前JSP配置文件对象private Object page = this;//当前JSP对象private PageContext pageContext;//当前JSP上下文关系对象:可以获取其他8大内置对象//Exception exception -- 当前JSP异常对象/**9大内置对象中的四大域:理解:这四大域都可以存储数据请求域:将数据存储到请求对象中,返回响应后,这个请求对象就会被销毁request.setAttribute(key,value);Object obj = request.getAttribute(key);会话域:将数据存储到会话对象中,默认30分钟有效,多个客户端的Session不能共享数据的session.setAttribute(key,value);Object obj = session.getAttribute(key);全局域:将数据存储到全局域对象中,全局域表示整个项目,项目关闭该对象才会被销毁,全局域中的数据是整个项目共享的application.setAttribute(key,value);Object obj = application.getAttribute(key);页面域:将数据存储到页面域对象中,数据只能在当前页使用pageContext.setAttribute(key,value);Object obj = pageContext.getAttribute(key);*/public void jsp_service(){//设置响应编码格式response.setContentType("text/html;charset=UTF-8");//jsp文件中遇到Html代码,就用输出流传输给客户端out.writer("<html>\n\r");out.writer("<head>\n\r");out.writer("    <title>Title</title>");out.writer("</head>");out.writer("<body>");//jsp文件中遇到Java代码,就执行即可Cookie[] cookies = request.getCookies();if(cookies != null){int count = 0;for (Cookie cookie : cookies) {String key = cookie.getName();String value = URLDecoder.decode(cookie.getValue(),"UTF-8");if(key.equals("username")){session.setAttribute("username",value);count++;}if(key.equals("name")){session.setAttribute("name",value);count++;}if(key.equals("role")){session.setAttribute("role",value);count++;}}if(count == 3){response.sendRedirect("index.jsp");}}   }.......}

JSP:HTML页面+Java代码

本质:Servlet

login.jsp -> login_jsp.java

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/28453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python数据分析】Pandas_Series如何转变为DataFrame

1.使用 pd.DataFrame()构造函数 可以使用pd.DataFrame()构造函数将 Series 转换为 DataFrame。在构造函数中&#xff0c;将 Series 作为一个列传递给 DataFrame&#xff0c;并且可以通过指定列名来为 DataFrame 的列命名。 代码示例&#xff1a; import pandas as pd data[1…

sklearn 基础教程

scikit-learn&#xff08;简称sklearn&#xff09;是一个开源的机器学习库&#xff0c;它提供了简单和有效的数据分析和数据挖掘工具。sklearn是Python语言中最重要的机器学习库之一&#xff0c;广泛用于统计学习和数据分析。 以下是scikit-learn的基础教程&#xff0c;帮助您开…

【Python高级编程】用 Matplotlib 绘制迷人的图表

用 Matplotlib 绘制迷人的图表 引言 Matplotlib 是 Python 中广泛使用的绘图库&#xff0c;用于创建各种图表和可视化。本文将逐步指导您使用 Matplotlib 绘制基本图表&#xff0c;包括折线图、条形图和散点图。 安装 Matplotlib 使用 pip 安装 Matplotlib&#xff1a; pi…

存储器的性能指标以及层次化存储器

存储器的性能指标 存储器有三个性能指标&#xff1a;速度、容量和位价&#xff08;每位价格&#xff09; 1.存储速度 &#xff08;1&#xff09;存取时间 想衡量存储速度&#xff0c;最直观的指标就是完成一次存储器读写操作所需要的时间&#xff0c;这叫做存取时间&#x…

Spring运维之boo项目表现层测试加载测试的专用配置属性以及在JUnit中启动web服务器发送虚拟请求

测试表现层的代码如何测试 加载测试的专用属性 首先写一个测试 假定我们进行测试的时候要加一些属性 要去修改一些属性 我们可以写一个只在本测试有效的测试 写在配置里 测试 打印输出 我们把配置文件里面的配置注释掉后 我们同样可以启动 package com.example.demo;impo…

【数组基础知识】

二维数组 我的理解是&#xff0c;如果内层有值&#xff0c;外层打印就是地址值。如果内层没值&#xff0c;外层打印就是null。 int[][]a new int [3][]; 这样打印a[0]的时候是null。 打印a[0][0]会报错。 int[][]a new int [3][1]; 这样打印a[0]的时候是地址值。 打印a…

分布式事务之TCC

一、 实现一个分布式事务 TCC&#xff08;Try-Confirm-Cancel&#xff09;模式是一种常见的分布式事务解决方案&#xff0c;它通过将一个事务拆分为三个阶段来实现分布式事务的一致性。下面是一个使用Java语言实现TCC模式的简单案例&#xff1a; 定义业务操作接口&#xff1a…

Qt状态机框架

概述 状态机框架提供了用于创建和执行状态图的类。这些概念和符号基于Harel的Statecharts:复杂系统的可视化形式(http://www.wisdom.weizmann.ac.il/~dharel/SCANNED.PAPERS/Statecharts.pdf)&#xff0c;也是UML状态图的基础。状态机执行的语义基于状态图XML (SCXML)(http://…

Java基础知识巩固自测(上)

前言 该文章适用于已初步了解Java基础知识的入门学习者&#xff0c;便于快速回顾知识点&#xff0c;查漏补缺。 内容包括&#xff1a;Java面向对象相关知识、SQL基础语法 复习建议技巧 实用3W思维法&#xff08;What、Why、How&#xff09; 1. What&#xff08;什么&#x…

jEasyUI 树形菜单拖放控制

jEasyUI 树形菜单拖放控制 jEasyUI 是一个基于 jQuery 的框架&#xff0c;它为开发者提供了一套完整的用户界面组件。这些组件包括菜单、窗口、按钮、面板等&#xff0c;它们可以帮助开发者快速构建功能丰富且美观的网页应用程序。在本文中&#xff0c;我们将重点讨论如何使用…

mysql面试题 Day1

目录 1 可以使用mysql直接存储文件吗&#xff1f; 2 什么时候存文件&#xff0c;什么时候不存文件&#xff1f; 3 存储文件&#xff0c;有遇到什么问题吗&#xff1f; 4 emoji 乱码怎么办&#xff1f; 5 如何存储ip地址&#xff1f; 1 可以使用mysql直接存储文件吗&#xf…

Web的UI自动化基础知识

目录 1 Web自动化入门基础1.1 自动化知识以及工具1.2 主流web自动化测试工具1.3 入门案例 2 使用工具的API2.1 元素定位2.1.1 id选择器2.1.2 name2.1.3 class_name选择器2.1.4 tag_name选择器2.1.5 link_text选择器2.1.6 partial_link_text选择器2.1.7 xpath选择器2.1.8 CSS选择…

华子 Ascend C算子开发能力认证考试(初级)微认证考试答案(直接Ctrl + F搜关键词就可以了)

根据提供的文件内容&#xff0c;这里是一系列关于Ascend C编程的多选题&#xff1a; **第21题**&#xff1a; 题目&#xff1a;Ascend C的矢量编程范式把算子实现流程分为哪些基本任务。 选项&#xff1a; A. Compute B. CopyIn C. CopyOut D. Aggregate E. Split 正确答案&a…

Docker在容器启动时自动执行特定脚本

在Dockerfile中使用CMD或ENTRYPOINT执行脚本&#xff0c;以实现容器启动时执行特定脚本的目的。 示例Dockerfile&#xff1a; FROM ubuntu:20.04# 复制脚本到容器中 COPY start.sh /usr/local/bin/start.sh# 确保脚本具有可执行权限 RUN chmod x /usr/local/bin/start.sh# 使…

mediamtx流媒体服务器测试

MediaMTX简介 在web页面中直接播放rtsp视频流&#xff0c;重点推荐&#xff1a;mediamtx&#xff0c;不仅仅是rtsp-CSDN博客 mediamtx github MediaMTX(以前的rtsp-simple-server)是一个现成的和零依赖的实时媒体服务器和媒体代理&#xff0c;允许发布&#xff0c;读取&…

HTML列表指南:有序、无序与自定义列表的妙用

在网页设计中&#xff0c;列表是组织和展示信息的有效方式&#xff0c;它帮助读者更好地理解和记忆内容结构。HTML提供了三种类型的列表&#xff1a;有序列表、无序列表和自定义列表&#xff0c;每种都有其独特的应用场景。下面&#xff0c;我们将逐一探索这三种列表的使用方法…

mysql的索引可以分为哪些类型

MySQL的索引是用于提高查询性能的重要数据结构。不同类型的索引在不同的使用场景中具有不同的优势和适用性。 1. 主键索引&#xff08;Primary Key Index&#xff09; 特点&#xff1a;唯一且不允许 NULL 值。用途&#xff1a;唯一标识表中的每一行。自动创建&#xff1a;定义…

Azure OpenAI 服务

Azure OpenAI 服务 一、什么是生成式 AI二、Azure OpenAI 服务三、Azure OpenAI 与 Azure AI 服务的关系四、如何使用 Azure OpenAI1、这些 OpenAI 模型分为几个主要系列:五、负责任的 AI 策略1、Azure OpenAI 的使用应遵循六项 Microsoft Al原则:用户可通过 Azure OpenAI 服…

牛客周赛 Round 46:祥子拆团(组合数学,计数问题)

题目描述 Sakiko有两个数字 x,yx,yx,y &#xff0c;她想知道&#xff0c;有多少种方式可以将 xxx 拆成 yyy 个正整数的乘积。 例如 x6,y2x6,y2x6,y2 时&#xff0c;有 616,326,236,1666 \times 16,3 \times 26,2 \times 36,1 \times 66616,326,236,166 这 4 种方法。 由于这个…

React性能优化分享

本篇将介绍在React编码过程中需要注意的性能优化点。鉴于图片懒加载、虚拟滚动列表等已成为广为人知的通用性能优化手段&#xff0c;本文将不再赘述这些内容。 memo memo允许组件在 props 没有改变的情况下跳过重新渲染 默认通过Object.is比较每个prop&#xff0c;可通过第二个…