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的方式存放在浏览器中进行用户的身份识别,而且两者都与一个用户对应只是在不同的作用域工作。 不同点 cookie session 存储在浏览器的缓冲区 存储在服务器端 相对不安全,因为内容可以被用户修改 用户没有权限修改,因此安全性高 可以设置过期时间,可以长期保存在客户端 会随着用户的下线或关闭浏览器、超时而失效 存放在客户端可以减轻服务器负担 存放在服务器端对服务器的性能要求更高
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的工作过程: Servelt的工作流程示意图 (1)客户端发起一个Http请求到服务器,请求特定的资源或者是要执行特定的操作 (2)服务器在接收到请求后,根据请求相应的URL将请求分发…...
智能优化算法应用:基于乌燕鸥算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于乌燕鸥算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于乌燕鸥算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.乌燕鸥算法4.实验参数设定5.算法结果6.参考文…...
超聚变服务器(原华为服务器)网站模拟器
一、超聚变服务器(原华为服务器)网站模拟器: 原来了解服务器可以从他的网站上进行了解,模拟器做的很好了。 https://support.xfusion.com/server-simulators/ 有很多的模拟器,今天主要看下BMC的设置 有很多的在线工具…...
Linux常见压缩指令小结
为什么需要压缩技术 我们都知道文件是以byte作为单位的,如果我们的文件仅仅在低位占一个1 0000 0001这种情况我们完全可以压缩一下,将高位的0全部抹掉即可。 如上所说是一种压缩技术,还有一种就是将1111(此处省略96个)一共100个1࿰…...
OpenSSL的源码在哪里下载?
官方网站去下载,网址: https://www.openssl.org/source/ 比较老的版本的下载页面地址: https://www.openssl.org/source/old/ 由于某面板的OpenSSL模块的安装配置语句如下: --with-openssl/root/rpmbuild/BUILD/openssl-1.0.2u所…...
使用create-react-app脚手架创建react项目
文章目录 1、安装create-react-app脚手架2、创建 React 项目,项目名为 react-demo3、项目创建成功4、使用vscode打开项目并运行5、项目运行成功node_modules:存放项目所依赖的一些第三方包文件public:静态资源文件夹src:源码文件夹其它文件 1…...
【网络安全】网络防护之旅 - 点燃网络安全战场的数字签名烟火
🌈个人主页:Sarapines Programmer🔥 系列专栏:《网络安全之道 | 数字征程》⏰墨香寄清辞:千里传信如电光,密码奥妙似仙方。 挑战黑暗剑拔弩张,网络战场誓守长。 目录 😈1. 初识…...
JVM基础扫盲
什么是JVM JVM是Java设计者用于屏蔽多平台差异,基于操作系统之上的一个"小型虚拟机",正是因为JVM的存在,使得Java应用程序运行时不需要关注底层操作系统的差异。使得Java程序编译只需编译一次,在任何操作系统都可以以相…...
SpringBoot基于gRPC进行RPC调用
SpringBoot基于gRPC进行RPC调用 一、gRPC1.1 什么是gRPC?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)
事件循环 浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间,可以把这块内存空间简单的理解为进程 每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意。 何为线程? …...
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中实现分布式动态路由的基本实现步骤介绍
设想一下,我们在做一个体量非常大的项目,这个项目有很多的模块和相当多的页面。当我们想修改一个路由的时候,我们打开了router文件夹下的index.js文件时,一串长到鼠标滚轮需要滚大半天才滚到底的路由简直让人头皮发麻。 在开始之前…...
【Leetcode】计算器
思路 用栈来完成; 考虑到运算关系,先乘除后加减;此外,一般计算式首个数字式正数;判断字符是否为数字,str.isdigit()字符转数字:ord(str) - ord(‘0’)遇到加减符,压栈数字…...
巧妙的使用WPF中的资源
其实,在wpf中,最核心的就是xaml,因为只有xaml,才能体现出用的是wpf,而不是普通的cs文件,cs文件在winform中等等程序都可以使用的,唯独xaml才是wpf中最重要的,最精华的东西࿰…...
多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测
多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现RIME-…...
【AIGC重塑教育】AI大模型驱动的教育变革与实践
文章目录 🍔现状🛸解决方法✨为什么要使用ai🎆彩蛋 🍔现状 AI正迅猛地改变着我们的生活。根据高盛发布的一份报告,AI有可能取代3亿个全职工作岗位,影响全球18%的工作岗位。在欧美,或许四分之一…...
【力扣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 地址:样例 1:样例 2:样例 3:提示: 分析:题解:rust:go:c:python:java: 93. 复原 IP 地址: 有效 IP …...
TOGAF—架构(Architecture)项目管理
一、简介 1.1概述 架构(Architecture)项目在本质上通常是复杂的。他们需要适当的项目管理来保持正轨并兑现承诺。本指南适用于负责规划和管理架构(Architecture)项目的人员。我们解释了如何用事实上的方法和标准(如PRINCE2或PMBOK)来补充TOGAF架构开发方法(ADM),以加…...
MVVM前端设计模式的发展与应用
在MVC模式中,随着代码量越来越大,主要用来处理各种逻辑和数据转化的Controller首当其冲,变得非常庞大,MVC的简写变成了Massive-View-Controller(意为沉重的Controller) 我曾经接手老项目,sprin…...
嵌入式c语言——关键字3
嵌入式c语言——关键字3 structunion综合应用 嵌入式中常常涉及数据传输过程,用到开放封闭原则,即扩展开放修改封闭enum枚举类型指针类型 指针类型也被称为地址类型,圈定的内存用来存放地址编号...
从数据采集到回放验证:ADTF 适配 ROS 的 ADAS 测试实践婆
一、简化查询 1. 先看一下查询的例子 /// /// 账户获取服务 /// /// /// public class AccountGetService(AccountTable table, IShadowBuilder builder) {private readonly SqlSource _source new(builder.DataSource);private readonly IParamQuery _accountQuery build…...
避坑指南:ShardingJdbc整合达梦时,Mybatis和Druid的版本冲突怎么解?
ShardingSphere与达梦数据库深度整合实战:破解多组件版本冲突困局 当Spring Boot生态遇上国产数据库,技术栈的碰撞往往带来意想不到的挑战。最近在将一个核心业务系统迁移至达梦数据库时,我遭遇了ShardingSphere、MyBatis和Druid三者的"…...
DAMOYOLO-S赋能工业视觉:基于OpenCV的自动化零件缺陷检测方案
DAMOYOLO-S赋能工业视觉:基于OpenCV的自动化零件缺陷检测方案 在工业制造的生产线上,零件质检一直是个让人头疼的活儿。传统的人工目检,不仅效率低下,容易受工人疲劳、经验差异影响,导致漏检、误判,而且成…...
从原理到实战:一文读懂主流交叉验证技术及其Python/R实现
1. 交叉验证的本质与价值 第一次听说"交叉验证"这个词时,我正被一个电商用户流失预测项目折磨得焦头烂额。当时在测试集上的准确率像过山车一样忽高忽低,直到 mentor 扔给我一句:"你该试试 K 折交叉验证"。这个简单的改变…...
Qwen3-ASR-1.7B安防应用:语音监控智能分析系统
Qwen3-ASR-1.7B安防应用:语音监控智能分析系统 1. 引言 想象一下这样的场景:一个大型商场里,监控摄像头捕捉到了异常情况,但保安人员需要同时盯着几十个屏幕,很难第一时间发现所有问题。或者在一个工厂车间里&#x…...
实战Electron跨进程通信实现SerialPort串口数据交互
1. 为什么Electron 9.0需要跨进程通信处理串口? 第一次用Electron对接工业秤重设备时,我直接把SerialPort代码写在渲染进程,结果控制台突然报错——就像被泼了盆冷水。原来从Electron 9.0开始,安全策略禁止渲染进程直接调用原生No…...
【SAP CO】3.产品成本-4.Costing Sheet成本核算单
目录 一、 Costing Sheet成本核算单简介 二、定义Calculation Bases计算基准 三、定义Overhead Rates间接费用率 四、定义Credits贷方 五、定义Costing Sheet成本核算单 一、 Costing Sheet成本核算单简介 库房、质量控制等成本中心,虽然没有直接参加生产&…...
SAP MM模块预留功能实战:从创建到发料的完整流程解析
SAP MM模块预留功能实战:从创建到发料的完整流程解析 在制造业和供应链管理领域,物料预留是确保生产计划顺利执行的关键环节。SAP MM模块中的预留功能,就像一位经验丰富的仓库管理员,能够提前为未来需求锁定必要的物料资源。想象一…...
Flutter The Dart VM Service was not discovered after 60 seconds.
更新系统配置好 Flutter 环境报错: The Dart VM Service was not discovered after 60 seconds. This is taking much longer than expected... Open the Xcode window the project is opened in to ensure the app is running. If the app is not running, try …...
