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类/工厂类),最后进行测试

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

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

相关文章

制造企业MES管理系统可以和AI结合应用吗

在当今的数字化时代&#xff0c;人工智能AI和MES生产管理系统的结合将成为制造企业发展的重要趋势。这种结合可以为制造企业带来许多优势&#xff0c;如提高生产效率、降低成本、优化资源利用等。本文将探讨MES管理系统和AI的结合以及它们在制造企业中的应用&#xff0c;并分析…

从零开始实现分布式服务系统

文章目录 开发前言分布式模型系统图解注册中心模块基础服务模块被依赖的服务模块&#xff08;日志服务&#xff09;服务模块&#xff08;访问服务&#xff09;运行效果开发总结 开发前言 分布式系统具有高可靠性、高性能、可扩展性、灵活性、数据共享、可靠性和地理分布等优点…

一款开源免费美观的WinForm UI控件库 - ReaLTaiizor

前言 今天推荐一款基于MIT license开源、免费、美观的.NET WinForm UI控件库&#xff1a;ReaLTaiizor。 什么是WinForm&#xff1f; WinForm是一个传统的桌面应用程序框架&#xff0c;它基于 Windows 操作系统的原生控件和窗体。通过简单易用的 API&#xff0c;开发者可以快速…

pycharm通过ssh连接远程服务器的docker容器进行运行和调试代码

pycharm连接远程服务器的docker容器通常有两种方法&#xff1a; 第一种&#xff1a;pycharm通过ssh连接已在运行中的docker容器 第二种&#xff1a;pycharm连接docker镜像&#xff0c;pycharm运行代码再自动创建容器 第一种方法比较通用简单&#xff0c;作者比较推崇。 条件…

频谱论文:基于张量Tucker分解的频谱地图构建算法

#频谱# [1]陈智博,胡景明,张邦宁 郭道省.(2023).基于张量Tucker分解的频谱地图构建算法.电子与信息学报(11),4161-4169. &#xff08;陆军工程大学&#xff09; 研究内容 将动态电磁环境的时变频谱地图建模为3维频谱张量&#xff0c;通过张量Tucker分解提取出具有物理意义的核…

Vue 自定义搜索输入框SearchInput

效果如下&#xff1a; 组件代码 <template><div class"search-input flex flex-space-between flex-center-cz"><input type"text" v-model"value" :ref"inpuName" :placeholder"placeholder" keyup.enter&…

双向链表原来是这样实现的!

文章目录 前言1. 双向链表的结构2. 双链表的定义和结构3. 定义结构体(ListNode)2.创建返回链表的头结点CreateList函数实现: 3.初始化双向链表ListCreate定义函数&#xff1a;实现函数&#xff1a; 4. 双向链表打印(ListPrint)定义函数&#xff1a;实现函数&#xff1a; 5. 尾插…

Python---多任务的介绍

1. 提问 利用现学知识能够让两个函数或者方法同时执行吗? 不能&#xff0c;因为之前所写的程序都是单任务的&#xff0c;也就是说一个函数或者方法执行完成另外一个函数或者方法才能执行&#xff0c;要想实现这种操作就需要使用多任务。 多任务的最大好处是充分利用CPU资源&…

算法学习——栈与队列

栈与队列 栈与队列理论基础用栈实现队列思路代码 用队列实现栈思路代码 删除字符串中的所有相邻重复项思路代码 有效的括号思路代码 逆波兰表达式求值思路代码 滑动窗口最大值思路代码未完待续 前 K 个高频元素思路代码拓展 总结栈在系统中的应用括号匹配问题字符串去重问题逆波…

redis之五种基本数据类型

redis存储任何类型的数据都是以key-value形式保存&#xff0c;并且所有的key都是字符串&#xff0c;所以讨论基础数据结构都是基于value的数据类型 常见的5种数据类型是&#xff1a;String、List、Set、Zset、Hash 一) 字符串(String) String是redis最基本的类型&#xff0c;v…

【SpringBoot篇】基于布隆过滤器,缓存空值,解决缓存穿透问题 (商铺查询时可用)

文章目录 &#x1f354;什么是缓存穿透&#x1f384;解决办法⭐缓存空值处理&#x1f388;优点&#x1f388;缺点&#x1f38d;代码实现 ⭐布隆过滤器&#x1f38d;代码实现 &#x1f354;什么是缓存穿透 缓存穿透是指在使用缓存机制时&#xff0c;大量的请求无法从缓存中获取…

docker-compose介绍和用法

docker-compose介绍和用法详解 1、docker-compose介绍2、docker-compose build3、docker-compose down4、docker-compose up -d 1、docker-compose介绍 Docker Compose是一个用于快速配置多个Docker容器的工具。它是一个定义和运行多容器的Docker应用工具&#xff0c;通过YAML…