当前位置: 首页 > news >正文

web应用开发技术的一些概念

一、Servlet

1.Servlet的工作过程:

Servelt的工作流程示意图


(1)客户端发起一个Http请求到服务器,请求特定的资源或者是要执行特定的操作
(2)服务器在接收到请求后,根据请求相应的URL将请求分发给相应的Servlet容器
(3)Tomcat加载并初始化Servlet,然后调用service()方法处理请求,根据请求的类型执行相应的操作处理,最后将生成内容返回给服务器,服务器再把它发送到客户端,


ps:也就是说Servlet的工作过程是接收客户端请求、处理请求然后生成响应返回给客户端,从而实现动态的web页面与用户交互

2.常用的Servlet配置方法:

(1)@WebServlet注解方式

web.xml文件中使用<servlet>和<servlet-mapping>标签来配置Servlet。

  • 在<servlet>标签中指定Servlet类的名称和路径。
  • 在<servlet-mapping>标签中指定Servlet的URL映射。
<servlet><servlet-name>MyServlet</servlet-name><servlet-class>com.example.MyServlet</servlet-class>
</servlet><servlet-mapping><servlet-name>MyServlet</servlet-name><url-pattern>/myservlet</url-pattern>
</servlet-mapping>

(2)web.xml文件

在Servlet类上使用@WebServlet注解来指定Servlet的URL映射和其他配置信息。比如:

@WebServlet(name = "MyServlet", urlPatterns = {"/myservlet"})
public class MyServlet extends HttpServlet {// Servlet code
}

(3)自定义容器

如果使用Spring框架,可以通过配置文件或注解来配置Servlet。在Spring配置文件中使用<bean>标签来配置Servlet,或者在Servlet类上使用@Controller或@RequestMapping注解来指定URL映射。

<bean id="myServlet" class="com.example.MyServlet" />
@Controller
@RequestMapping("/myservlet")
public class MyServlet {// Servlet code
}

3.Servlet生命周期方法:

(1)初始化调用init()方法

当Servlet被实例化时调用,用于初始化Servlet。在这个方法中通常进行一些初始化操作,比如加载配置文件、建立数据库连接等。


(2)请求Servlet服务调用service()方法

每次有请求到达Servlet时都会调用这个方法。在这个方法中处理请求并生成响应。


(3)销毁实例前调用destory()方法

当Servlet被销毁时调用,用于释放资源。在这个方法中通常进行一些清理操作,比如关闭数据库连接、释放内存等。

二、会话管理

1.对比session与cookie的异同。

相同点session和cookie都是同于保存会话数据的对象,并且都能用于客户端与服务器之间数据传递,通常会话会将用户的id号以cookie的方式存放在浏览器中进行用户的身份识别,而且两者都与一个用户对应只是在不同的作用域工作。
不同点cookiesession
存储在浏览器的缓冲区存储在服务器端
相对不安全,因为内容可以被用户修改用户没有权限修改,因此安全性高
可以设置过期时间,可以长期保存在客户端会随着用户的下线或关闭浏览器、超时而失效
存放在客户端可以减轻服务器负担存放在服务器端对服务器的性能要求更高

2.与过滤器有关的3个接口:

javax.servlet.Filter过滤器接口定义了过滤器的生命周期方法和过滤方法,包括init()、doFilter()和destroy()。
javax.servlet.FilterChain过滤器链接口用于在过滤器中调用下一个过滤器。它的doFilter()方法允许过滤器将请求传递给下一个过滤器,或者如果没有下一个过滤器,则将请求传递给Servlet。
javax.servlet.FilterConfig过滤器配置接口

用于获取过滤器的初始化参数和ServletContext。它的方法可以让过滤器获取在部署描述符中配置的初始化参数,以及访问ServletContext对象。


常用方法有三个:
getFilterName()、getInitParameter(String name )和 getServletContex()

 3.Servlet监听器是个可以监听web应用程序内部事件的Java类.

    Serlet有几种监听器?各实现哪些监听功能?

Servlet上下文事件
ServletContexListener接口对servletcontext创建和删除
ServletContextAtrributeListener接口Servletcontext属性增删改

会话事件
HttpSessionAtrributeListener接口用于监听Http会话中属性设置
HttpServletListener接口用于监听会话的创建和销毁
HttpSessionBingdingListener接口用于监听对象本身绑定或删除到一个会话

请求事件
ServiceRequestListener接口用于监听每次请求到来
ServletRequestAttributeListener接口用于跟踪请求属性的增删改

三、JSP

1.JSP的隐式对象:

JSP的隐式对象有九个,它们分别是:

out对象向客户端发送文本内容
request对象存储客户端的请求
response对象存储响应客户端时要发送的信息
session对象存储用户会话信息
application对象作用在JSP页面所属的应用程序
pageContext对象使用户在访问页面作用域中可以定义所有的隐式对象
page对象正在运行的JSP页面所产生的类对象
config对象存储Servlet信息(编译JSP页面过程中所创建的)
exception对象处理异常信息

2.JSTL标签有哪些优点?

第一,可以简化JSP和WEB程序的开发,让本来需要大量代码才能实现的功能可以通过少量JSTL代码便可以实现;


第二,可读性高,在团队开发中方便他人查看代码,并且易于理解;


第三,在JSTL代码下编写的web程序易于后期维护;

四、JavaBean

1.JavaBean的编码规范

首先:

  • 必须要具有一个公共的(public)
  • 无参的构造方法(可以是编译器自动产生的缺省构造方法)

然后:

提供公共的(public)setter方法和getter方法——这里是为了能够使得外部的程序获取或者设置JavaBean的属性

2.Spring容器支持多种形式的Bean的三种装配方式

(1)基于XML的显式装配:

设值注入与构造注入


(2)基于注解(Annotation)的装配:

使用注解来标识Bean,包括@Component、@Service、@Repository、@Controller等,同时使用@Autowired、@Resource等注解来自动装配Bean。


(3)自动装配

将一个Bean自动的注入到到其他Bean的Property中。 Spring的<bean>中包含一个autowire属性,通过设置autowire的属性值来自动装配Bean。

3.Spring实例化Bean有三种方式

构造器实例化Spring容器通过建立的Bean类中的默认构造器来实例化Bean
静态工厂方式实例化Spring容器通过建立的Bean类中的默认构造器来实例化Bean
实例化工厂方式实例化直接创建Bean实例,在配置文件里面利用factory-bean属性配置实例工厂,通过factory-method属性来确定使用哪个方法,也是自行通过创建Bean类和工厂类,但这里和上面的不同的是,是通过非静态方法去获取Bean类的实例

以上三个方法在创建并实例好后,都需要创建Spring配置文件,(配置Bean类/工厂类),最后进行测试

相关文章:

web应用开发技术的一些概念

一、Servlet 1.Servlet的工作过程&#xff1a; Servelt的工作流程示意图 &#xff08;1&#xff09;客户端发起一个Http请求到服务器&#xff0c;请求特定的资源或者是要执行特定的操作 &#xff08;2&#xff09;服务器在接收到请求后&#xff0c;根据请求相应的URL将请求分发…...

智能优化算法应用:基于乌燕鸥算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于乌燕鸥算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于乌燕鸥算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.乌燕鸥算法4.实验参数设定5.算法结果6.参考文…...

超聚变服务器(原华为服务器)网站模拟器

一、超聚变服务器&#xff08;原华为服务器&#xff09;网站模拟器&#xff1a; 原来了解服务器可以从他的网站上进行了解&#xff0c;模拟器做的很好了。 https://support.xfusion.com/server-simulators/ 有很多的模拟器&#xff0c;今天主要看下BMC的设置 有很多的在线工具…...

Linux常见压缩指令小结

为什么需要压缩技术 我们都知道文件是以byte作为单位的&#xff0c;如果我们的文件仅仅在低位占一个1 0000 0001这种情况我们完全可以压缩一下&#xff0c;将高位的0全部抹掉即可。 如上所说是一种压缩技术&#xff0c;还有一种就是将1111(此处省略96个)一共100个1&#xff0…...

OpenSSL的源码在哪里下载?

官方网站去下载&#xff0c;网址&#xff1a; https://www.openssl.org/source/ 比较老的版本的下载页面地址&#xff1a; https://www.openssl.org/source/old/ 由于某面板的OpenSSL模块的安装配置语句如下&#xff1a; --with-openssl/root/rpmbuild/BUILD/openssl-1.0.2u所…...

使用create-react-app脚手架创建react项目

文章目录 1、安装create-react-app脚手架2、创建 React 项目&#xff0c;项目名为 react-demo3、项目创建成功4、使用vscode打开项目并运行5、项目运行成功node_modules&#xff1a;存放项目所依赖的一些第三方包文件public&#xff1a;静态资源文件夹src:源码文件夹其它文件 1…...

【网络安全】网络防护之旅 - 点燃网络安全战场的数字签名烟火

​ &#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《网络安全之道 | 数字征程》⏰墨香寄清辞&#xff1a;千里传信如电光&#xff0c;密码奥妙似仙方。 挑战黑暗剑拔弩张&#xff0c;网络战场誓守长。 ​ 目录 &#x1f608;1. 初识…...

JVM基础扫盲

什么是JVM JVM是Java设计者用于屏蔽多平台差异&#xff0c;基于操作系统之上的一个"小型虚拟机"&#xff0c;正是因为JVM的存在&#xff0c;使得Java应用程序运行时不需要关注底层操作系统的差异。使得Java程序编译只需编译一次&#xff0c;在任何操作系统都可以以相…...

SpringBoot基于gRPC进行RPC调用

SpringBoot基于gRPC进行RPC调用 一、gRPC1.1 什么是gRPC&#xff1f;1.2 如何编写proto1.3 数据类型及对应关系1.4 枚举1.5 数组1.6 map类型1.7 嵌套对象 二、SpringBoot gRPC2.1 工程目录2.2 jrpc-api2.2.1 引入gRPC依赖2.2.2 编写 .proto 文件2.2.3 使用插件机制生产proto相关…...

浏览器的事件循环机制(Event loop)

事件循环 浏览器的进程模型 何为进程&#xff1f; 程序运行需要有它自己专属的内存空间&#xff0c;可以把这块内存空间简单的理解为进程 每个应用至少有一个进程&#xff0c;进程之间相互独立&#xff0c;即使要通信&#xff0c;也需要双方同意。 何为线程&#xff1f; …...

THEMIS---Beta Sprint Summary Essay Blog

Which course does this assignment belong to2301-MUSE社区-CSDN社区云What are the requirements for this assignmentbeta SprintThe goal of this assignmentTo summarize the beta task progress and the teams sprintsTeam NameThemisTop-of-the-line collection of essa…...

Vue中实现分布式动态路由的基本实现步骤介绍

设想一下&#xff0c;我们在做一个体量非常大的项目&#xff0c;这个项目有很多的模块和相当多的页面。当我们想修改一个路由的时候&#xff0c;我们打开了router文件夹下的index.js文件时&#xff0c;一串长到鼠标滚轮需要滚大半天才滚到底的路由简直让人头皮发麻。 在开始之前…...

【Leetcode】计算器

思路 用栈来完成&#xff1b; 考虑到运算关系&#xff0c;先乘除后加减&#xff1b;此外&#xff0c;一般计算式首个数字式正数&#xff1b;判断字符是否为数字&#xff0c;str.isdigit()字符转数字&#xff1a;ord(str) - ord(‘0’)遇到加减符&#xff0c;压栈数字&#xf…...

巧妙的使用WPF中的资源

其实&#xff0c;在wpf中&#xff0c;最核心的就是xaml&#xff0c;因为只有xaml&#xff0c;才能体现出用的是wpf&#xff0c;而不是普通的cs文件&#xff0c;cs文件在winform中等等程序都可以使用的&#xff0c;唯独xaml才是wpf中最重要的&#xff0c;最精华的东西&#xff0…...

多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测

多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现RIME-…...

【AIGC重塑教育】AI大模型驱动的教育变革与实践

文章目录 &#x1f354;现状&#x1f6f8;解决方法✨为什么要使用ai&#x1f386;彩蛋 &#x1f354;现状 AI正迅猛地改变着我们的生活。根据高盛发布的一份报告&#xff0c;AI有可能取代3亿个全职工作岗位&#xff0c;影响全球18%的工作岗位。在欧美&#xff0c;或许四分之一…...

【力扣100】2.两数相加

添加链接描述 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Op…...

算法leetcode|93. 复原 IP 地址(多语言实现)

文章目录 93. 复原 IP 地址&#xff1a;样例 1&#xff1a;样例 2&#xff1a;样例 3&#xff1a;提示&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 93. 复原 IP 地址&#xff1a; 有效 IP …...

TOGAF—架构(Architecture)项目管理

一、简介 1.1概述 架构(Architecture)项目在本质上通常是复杂的。他们需要适当的项目管理来保持正轨并兑现承诺。本指南适用于负责规划和管理架构(Architecture)项目的人员。我们解释了如何用事实上的方法和标准(如PRINCE2或PMBOK)来补充TOGAF架构开发方法(ADM),以加…...

MVVM前端设计模式的发展与应用

在MVC模式中&#xff0c;随着代码量越来越大&#xff0c;主要用来处理各种逻辑和数据转化的Controller首当其冲&#xff0c;变得非常庞大&#xff0c;MVC的简写变成了Massive-View-Controller&#xff08;意为沉重的Controller&#xff09; 我曾经接手老项目&#xff0c;sprin…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...