创建javaEE项目(无maven),JSP(九大内置对象)、Servlet(生命周期)了解

一、Servlet和jsp

0.创建web项目(无maven):

1.创建一个普通的java项目

2.项目根目录右键,添加模板

3.配置tomcat服务器

4.配置项目tomcat依赖

1.Servlet(Server Applet)服务端小程序

        用户通过浏览器发送一个请求,服务器tomcat接收到后,解析web.xml配置文件进行分析执行接口对应的类;

        Tomcat服务器支持:支持Servlet规范。而要想让它能找到我们写的处理请求的代码,那我们自己的代码就应该也遵守Servlet规范!

1.1 servlet概念:

        Servlet是Server Applet的简称,称为服务端小程序,是JavaEE平台下的技术标准,基于Java语言编写的服务端程序。 Web 容器或应用服务器实现了Servlet标准所以Servlet需要运行在Web容器或应用服务器中。Servlet主要功能在于能够在服务器中执行并生成数据。

        Servlet指的是一个接口规范,具体的体现为接口及其接口的实现类。该接口的名字就是Servlet

        Servlet是JavaWeb开发的三大组件之一(另外两个是过滤器filter与监听器listener)

1.2 Servlet实现

        1. 继承HttpServlet类,重写service方法

        2. 逻辑处理,并做出响应

        3. web.xml配置接收请求路径

1.3 web.xml配置及注解配置

2.jsp(java服务端页面技术,本质servlet)

        有一种特殊的文件,我们可以在它内部编写HTML代码、CSS代码、js代码还有Java代码。编写完之后,再有一个工具,将这个特殊的文件转换成Servlet,在转换好的Servlet中,之前写的Java代码还在,而HTML、css、js代码都使用writer的方式给写好。

        ​ 这个特殊的文件就是jsp文件。这个工具就是Tomcat服务器中的jsp引擎。

        本地服务解析的jsp文件在 work工作目录:

        C:\work\Catalina\localhost\java_EE_Demo

2.1 jsp使用

2.1.1 jsp执行原理

        JSP看似是HTML代码,看似是页面,但其实是一种后端技术。   本质Servlet

        当第一发送请求访问jsp资源时,Tomcat服务器中的JSP加载引擎会将该JSP资源转换成一个 .java 文件(Servlet)。

        这个 .java文件其实就是一个Servlet,在这个Servlet中已经将写在JSP中的HTML代码以writer.print()的方式编写好了,然后将数据响应给浏览器的。

        JSP本质上就是一个Servlet,JSP中的HTML代码就相当于我们之前在Servlet中写的writer.write()代码。

        JSP的执行过程大致可以分为三个时期:转换、编译、执行。

2.1.2执行步骤

        转换/翻译(translation):Tomcat中的JSP引擎将JSP网页转换成Servlet,得到一个.java源文件。

        编译(compile):通过javac命令将.java文件编译成 .class字节码文件。

        运行:运行.class字节码文件,处理请求。

2.2常用指令标签

        <%! 定义全局变量或方法 %> 在类中

        <% 定义局部变量 %> 在方法中

        <%= 变量输出 %> 在方法中

2.2.1 概述

语法:<%@ directive attribute="value" %>

<%@ page %>

定义网页依赖属性,如脚本语言、error页面、缓存需求等等

<%@ include %>

包含其他文件

<%@ taglib %>

引入标签库的定义

2.2.2 page 指定网页属性指令标签

属性

描述

buffer

指定out对象使用缓冲区的大小

autoFlush

控制out对象的 缓存区

contentType

指定当前JSP页面的MIME类型和字符编码

errorPage

指定当JSP页面发生异常时需要转向的错误处理页面

isErrorPage

指定当前页面是否可以作为另一个JSP页面的错误处理页

extends

指定servlet从哪一个类继承

import

导入要使用的Java类

info

定义JSP页面的描述信息

isThreadSafe

指定对JSP页面的访问是否为线程安全

language

定义JSP页面所用的脚本语言,默认是Java

session

指定JSP页面是否使用session,默认是使用

isELIgnored

指定是否执行EL表达式

isScriptingEnabled

确定脚本元素能否被使用

2.2.3 include 页面指令标签

        引入的文件有iframe内联标签的功能, 但是不能配合a标签target属性配合使用

                * JSP可以通过include指令来包含其他文件。被包含的文件可以是jsp文件、HTML文件或文本文件。

                * 包含的文件就像是jsp文件的一部分,会被同时编译执行。

                * 除了使用include指令标签可以实现引入外,使用jsp:include动作也可以实现引入。

静态引入: @include  被引入的网页和当前页生成代码后形成了一个java文件。

动态引入: jsp:include 被引入的JSP页面会生成独立的java代码。

2.3 JSP内置对象(9个)

        因为JSP的本质是Servlet,在JSP文件经过转译之后,生成JAVA代码,在运行时,JSP给我们准备好了九个可以直接使用而不用我们自己去new的对象,这九个对象我们称之为内置对象。

        内置对象完全由JSP自行去维护, 我们直接使用即可。

        pageContext、request、session、servletContext、response、out、config、exception、page

四个域对象

        pageContext page域 当前页面内可用。

        request        reqeust域 一次请求。

        session         session域 一次会话, 多次请求。

        application application域 整个项目运行, 多次请求, 多次会话。

响应对象

        response 响应对象。

输出流对象

        out 打印流对象。

其他三个对象

        servletConfig 由于JSP本身也是一个Servlet,所以容器也会给我们准备一个ServletConfig。

        Page 就是JSP转换的Servlet的对象,也就是当前JSP对象本身  。

        Exception 异常对象,在错误提示页上使用,当isErrorpage=true 才具有该对象。

总结

联系:

        1. JSP和Servlet都是Sun公司推出的动态网页技术。

        2. 基于Servlet开发页面的繁琐性,推出JSP来简化页面开发。

        3. JSP本质上是一个Servlet,会翻译成一个Servlet。

区别:

        1. JSP使人们把显示和逻辑分隔成为可能,这意味着两者的开发可并行进行;而Servlet并没有把两者分开。

        2. JSP是在HTML代码里写JAVA代码,框架是HTML;而Servlet是在JAVA代码中写HTML代码,本身是个JAVA类。

        3. Servlet需要在web.xml中配置,而JSP无需配置。

        4. 目前JSP主要用在视图层负责显示,而Servlet主要用在控制层负责调度

强调

        ​ JSP表面上是一个HTML,本质上是一个Servlet。

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

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

相关文章

基于nodejs+vue 网上商城系统系统-毕业设计

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

乌班图 Linux 系统 Ubuntu 23.10.1 发布更新镜像

Ubuntu 团队在其官网上发布了Ubuntu 23.10.1 版本,这是目前较新的 Ubuntu 23.10(Focal Fossa)操作系统系列的第一个发行版,旨在为社区提供最新的安装媒体。Ubuntu 22.04 LTS(Focal Fossa)操作系统系列于 2022 年 4 月 21 日发布。 Ubuntu 23.10 LTS(长期支持版本)可用…

Win10/Win11总是自动更新,如何关闭自动更新?

参考:https://www.zhihu.com/search?q%E5%85%B3%E9%97%ADwindows%E8%87%AA%E5%8A%A8%E6%9B%B4%E6%96%B0&search_sourceSuggestion&utm_contentsearch_suggestion&typecontent 手动关闭 1 Windows服务 1.1 WinR输入services.msc打开服务 1.2 找到Windows Update…

hugetlb核心组件

1 概述 hugetlb机制是一种使用大页的方法&#xff0c;与THP(transparent huge page)是两种完全不同的机制&#xff0c;它需要&#xff1a; 管理员通过系统接口reserve一定量的大页&#xff0c;用户通过hugetlbfs申请使用大页&#xff0c; 核心组件如下图&#xff1a; 围绕着…

日本it培训学费 想去日本做IT,需要具备哪些技术?

日本的IT行业历史比较悠久&#xff0c;业务以上层前端业务为主&#xff0c;如设计和构建软件。日本IT公司组织庞大&#xff0c;行业内部有着严格的分工和部署&#xff0c;工作会被细分化&#xff0c;分配给个人的工作量不会太大&#xff0c;难度也不会很高&#xff0c;所以日本…

设计模式之装饰模式--优雅的增强

目录 概述什么是装饰模式为什么使用装饰模式关键角色基本代码应用场景 版本迭代版本一版本二版本三—装饰模式 装饰模式中的巧妙之处1、被装饰对象和装饰对象共享相同的接口或父类2、当调用装饰器类的装饰方法时&#xff0c;会先调用被装饰对象的同名方法3、子类方法与父类方法…

【TS篇一】TypeScript介绍、使用场景、环境搭建、类和接口

文章目录 一、TypeScript 介绍1. TypeScript 是什么1.2 静态类型和动态类型1.3 Why TypeScript1.4 TypeScript 使用场景1.5 TypeScript 不仅仅用于开发 Angular 应用1.6 前置知识 二、如何学习 TypeScript2.1 相关链接 三、起步3.1 搭建 TypeScript 开发环境3.2 编辑器的选择3.…

音频修复增强软件iZotope RX 10 mac中文特点

iZotope RX 10 mac是一款音频修复和增强软件。 iZotope RX 10 mac主要特点 声音修复&#xff1a;iZotope RX 10可以去除不良噪音、杂音、吱吱声等&#xff0c;使音频变得更加清晰干净。 音频增强&#xff1a;iZotope RX 10支持对音频进行音量调节、均衡器、压缩器、限制器等处…

[概述] 点云滤波器

拓扑结构 点云是一种三维数据&#xff0c;有几种方法可以描述其空间结构&#xff0c;以利于展开搜索 https://blog.csdn.net/weixin_45824067/article/details/131317939 KD树 头文件&#xff1a;pcl/kdtree/kdtree_flann.h 函数&#xff1a;pcl::KdTreeFLANN 作用&#xff1a…

一个 不用氪金 也能让你变强的 VSCode 插件 Ai

哈喽,大家好 我是 彩色之外&#x1f468;&#x1f3fb;‍&#x1f4bb;。今天给大家推荐一款不用充钱也能让你变强的 vscode 插件 通义灵码&#xff08;TONGYI Lingma&#xff09;&#xff0c;可以称之为 Copilot 的替代甜品 &#x1f4aa; &#x1f440; 前期回顾 NPM- 滚动进…

贷款行业极难获客,怎么获取实时客户数据?

我们能想象当客户有贷款需求时会发生什么吗&#xff1f; 客户可能会打开手机搜索“如何借款”、“哪笔贷款利息低”、“最多能借多少钱”、“贷款需要什么条件”等关键词&#xff0c;然后&#xff0c;客户点击进入第一个链接&#xff0c;然后填写他们的姓名和电话号码来测试他…

OpenAI最新官方GPT最佳实践指南,一文讲清ChatGPT的Prompt玩法

原文&#xff1a;Sina Visitor System OpenAI的官网发表万字GPT最佳实践指南&#xff0c;讲清Prompt提示词的原则和策略&#xff0c;这里是总结和全文翻译 原创图像&#xff0c;AI辅助生成 OpenAI的官网上刚刚发表一篇万字的GPT最佳实践指南&#xff0c;这份指南把写好Promp…

大语言模型对齐技术 最新论文及源码合集(外部对齐、内部对齐、可解释性)

大语言模型对齐(Large Language Model Alignment)是利用大规模预训练语言模型来理解它们内部的语义表示和计算过程的研究领域。主要目的是避免大语言模型可见的或可预见的风险&#xff0c;比如固有存在的幻觉问题、生成不符合人类期望的文本、容易被用来执行恶意行为等。 从必…

C++笔记之实现多态的所有方法

C笔记之实现多态的所有方法 文章目录 C笔记之实现多态的所有方法1.C中多态是是什么&#xff1f;请用简洁准确的话描述2.虚函数实现多态2.1.虚函数&#xff08;Virtual Functions&#xff09;2.2.纯虚函数&#xff08;Pure Virtual Functions&#xff09;2.3.虚析构函数&#xf…

vue学习part01

02_Vue简介_哔哩哔哩_bilibili Vue.js - 渐进式 JavaScript 框架 | Vue.js (vuejs.org) 1.简介 2.常用用法 新项目一般vue3&#xff0c;老项目vue2 3.vue两种风格&#xff1a;选项式api&#xff08;vue2&#xff09;和组合式api&#xff08;vue3&#xff09; 两种方式实现累…

Scala集合操作

1 集合简介 Scala 中拥有多种集合类型&#xff0c;主要分为可变的和不可变的集合两大类&#xff1a; 可变集合&#xff1a; 可以被修改。即可以更改&#xff0c;添加&#xff0c;删除集合中的元素&#xff1b; 不可变集合类&#xff1a;不能被修改。对集合执行更改&#xff0c;…

基于单片机控制的GSM短信模块家庭防盗报警系统

博主主页&#xff1a;单片机辅导设计 博主简介&#xff1a;专注单片机技术领域和毕业设计项目。 主要内容&#xff1a;毕业设计、简历模板、学习资料、技术咨询。 文章目录 主要介绍一、内容1 设计任务和要求1 主要内容 二、系统总体方案2.1 系统整体设计思路2.2 系统方案设计 …

【入门Flink】- 03Flink部署

集群角色 Flik提交作业和执行任务&#xff0c;需要几个关键组件&#xff1a; 客户端(Client)&#xff1a;代码由客户端获取并做转换&#xff0c;之后提交给JobManger JobManager&#xff1a;就是Fink集群里的“管事人”&#xff0c;对作业进行中央调度管理&#xff1b;而它获…

【ES专题】ElasticSearch 高级查询语法Query DSL实战

目录 前言阅读对象阅读导航前置知识数据准备笔记正文一、ES高级查询Query DSL1.1 基本介绍1.2 简单查询之——match-all&#xff08;匹配所有&#xff09;1.2.1 返回源数据_source1.2.2 返回指定条数size1.2.3 分页查询from&size1.2.4 指定字段排序sort 1.3 简单查询之——…

服务上千家企业,矩阵通2.0重磅上线,全链路管理新媒体矩阵

自上线以来 矩阵通已服务了上千家企业级客户 覆盖汽车、家居、媒体、金融、教育等多个行业 矩阵通1.0时代 我们以“数据”为基座打造出10功能 帮助企业轻松管理新媒体矩阵 实现账号管理、数据分析、竞对监测、 人员考核、风险监管等需求 而现在 矩阵通2.0重磅上线 新增…