Servlet的几种用法?
serlet
1.定义:Serlet是使用Java编写的运行在服务器端的程序
2.Servlet主要是用于处理浏览器端发送的Http请求,并返回一个响应
3.Servlet开发需要使用到的包:
java.servlet
java.servlet.http
一.Servlet注册
1.xml方式
<servlet><servlet-name>HelloServlet</servlet-name><servlet-class>com.qfedu.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping><servlet-name>HelloServlet</servlet-name><url-pattern>/hello</url-pattern>
</servlet-mapping>
元素用于注册Servlet,它包含有两个主要的子元素:
: 设置Servlet的注册名称
: 设置Servlet的完整类名,包名+类型形式
元素用于映射已注册的Servlet的对外访问路径,它包含有两个子元素:
:Servlet的注册名称,必须和配对的中的相同
:设置访问该Servlet资源的路径
例如,访问:http://localhost:8080/test/hello时,
Tomcat服务器截取到访问的资源名称/hello,
先从web.xml的中找匹配的url,找到后,再查找对应的;
然后从节点中找匹配的,找到后,根据的类名,创建Servlet对象,执行其中的方法
2)Servlet的多重映射
注意:
同一个Servlet可以被映射到多个URL上,即中可以设置多个
<servlet><servlet-name>HelloServlet</servlet-name><servlet-class>com.qfedu.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping><servlet-name>HelloServlet</servlet-name><url-pattern>/HelloServlet</url-pattern><url-pattern>/hello</url-pattern>
</servlet-mapping>
2 @WebServlet注解方式
注解中使用主要属性:
属性名 | |
---|---|
name | Servlet名字,可以自定义 |
value | 访问Servlet资源时匹配的路径,和urlPatterns互斥 |
urlPatterns | 允许当前Servlet有多个匹配方式,和value互斥 |
loadOnStartup | 标记容器是否启动时加载该Servlet |
initParams | 当前Servlet的初始化配置WebInitParam 注解类型 ,属性包括name和value |
@WebServlet(name = "HelloServlet", value = "/HelloServlet")
public class HelloServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.getWriter().write("get hello");}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.getWriter().write("post hello");}
}
二.servlet开发
Servlet由Servlet容器提供,所谓的Servlet容器是指提供了Servlet 功能的Web服务器(比如Tomcat),Servlet容器将Servlet动态的加载到服务器上。
servlet使用的主要接口和类:
Servlet接口
GenericServlet抽象类
HttpServlet类
Servlet接口中的主要方法:
方法 | |
---|---|
void init(ServletConfig config) | 初始化Servlet |
void service(ServletRequet req, ServletResponse res) | 负责响应客户端请求 |
void destroy() | 销毁servlet对象,用于释放资源等 |
ServletConfng getServletConfig() | 获得Servlet 的相关配置信息,该方法会返回一个指向ServletConfig的引用 |
java.lang.Sring getServletInfo() | 获得Servlet开发者定义的信息 |
实现的原理就是:
Web服务器收到客户端的http请求,会针对每一次请求。分别创建一个对应的代表请求的requst对象和代表响应的response的对象
1 HttpServletRequest接口
HttpServletRequest接口继承了ServletRequest接口
HttpServletRequst对象代表客户端的请求,当客户端通过Http协议访问web服务器的时候,Http请求头中的所有信息都封装在这个对象中,开发人员通过这个对象中的方法,可以获得请求相关的信息.
常用方法:
方 法 | 说 明 |
---|---|
String getParameter(String name) | 获取请求中的参数,该参数是由name指定的 |
Enumeration getParameterNames() | 获取请求中所有参数的名字 |
String[] Enumeration getParameterValues(String name) | 返回请求中的参数值,该参数值是由name指定的 |
Map<K, V> getParameterMap() | 返回此请求的参数的 java.util.Map对象 |
ServletInputStream getInputStream() | 获取请求的输入流中的数据 |
String getQueryString() | 返回包含在请求 URL 中路径后面的数据字符串 |
Enumeration getAttributeNames() | 返回当前请求的所有属性的名字集合 |
Object getAttribute(String name) | 返回name指定的属性值 |
void setAttribute(String name, Object value) | 设置属性值 |
void removeAttribute(String name) | 删除指定的属性值 |
Cookies getCookies() | 返回客户端发送的Cookie |
HttpSession getsession() | 返回和客户端相关的session,如果没有给客户端分session,则返回null |
HttpSession getsession(boolean create) | 返回和客户端相关的session,如果没有给客户端分session,则创建一个session并返回 |
String getCharacterEncoding() | 返回请求的字符编码方式 |
void setCharacterEncoding(String env) | 设置请求中使用的字符编码方式 |
String getMethod() | 获取发送请求的方式,如get、post |
int getContentLength() | 返回请求体的有效长度 |
String getProtocol() | 获取请求所使用的协议名称 |
String getRemoteAddr() | 获取客户端的IP地址 |
String getRemoteHost() | 获取客户端的名字 |
String getServerName() | 返回接受请求的服务器的名字 |
String getServerPath() | 获取请求的路径 |
String getHeader(String name) | 返回指定请求头的值 |
1.1获取请求参数
request.getParameter()方法
//根据表单中输入控件的name属性值,获取表单参数
//get和post方式都可以用该方法获取表单参数
//tomcat8下,get方式下,使用getParameter方法,中文不会乱码
String name = request.getParameter("name");
String pwd = request.getParameter("password");System.out.println(name);
System.out.println(pwd);
1.2post提交方式下中文的乱码处理
//post提交方式,解决中文乱码的方案
request.setCharacterEncoding("utf-8");
注意:使用tomcat8以上版本后,get方式不存在中文乱码问题
2 HttpServletResponse
HttpServletResponse对象服务器的响应。该对象中封装了向客户端发送数据,发送响应头,发送响应状态码的方法
方 法 | 说 明 |
---|---|
PrintWriter getWriter() | 返回Servlet引擎创建的字符输出流对象 |
void addCookie(Cookie cookie) | 将指定的Cookie加入到当前的响应中 |
void addHeader(String name,String value) | 将指定的名字和值加入到响应的头信息中 |
String encodeURL(String url) | 编码指定的URL |
void sendRedirect(String location) | 重定向,发送一个临时的响应到客户端 |
void setHeader(String name,String value) | 将给出的名字和值设置响应的头部 |
void setStatus(int sc) | 给当前响应设置状态码 |
void setContentType(String ContentType) | 设置响应的MIME类型 |
2.1返回响应的内容
//获取打印流的对象PrintWriter writer = response.getWriter();//writer.write("hello");//writer.write("<html><head><title>hello</title></head><body><font color='red'>hello world</font></body></html>");String html = "<html>";html += "<head>";html += "</head>";html += "<body>";html += " 你好";html += "</body>";html += "</html>";writer.write(html);writer.close();
2.2 中文乱码处理
方案一:
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Type", "text/html");
注意:如果仅使用response.setCharacterEncoding(“utf-8”),还是会显示乱码。这是由于虽然返回内容使用了utf8编码,但是浏览器加载的页面使用的是gbk编码,所以还需要设置content-type响应头。
方案二:
response.setContentType("text/html;charset=utf-8");
2.3重定向
重新定位到一个资源,实现资源的跳转
response.setStatus(302);
response.setHeader("location", "/W06_Servlet2/index.html");
2.4定时刷新
//定时刷新,每隔一秒刷新一次
//response.setHeader("refresh", "1");
//指定时间(秒)后,跳转到另外的界面
response.setHeader("refresh", "3;url=/W06_Servlet2/index.html");
三servlet的生命周期
1.生命周期
Servlet的生命周期主要有四个阶段:
\1) 创建对象
对同一个servlet,只会创建一次
\2) 初始化
创建对象后,init方法,只会调用一次,会获取一个ServletConfig对象
\3) 运行阶段
运行阶段,调用service()方法。
每调用一次servlet资源,都会调用该方法。对于每次访问请求,都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,在该方法中,根据请求方式,决定调用doGet还是doPost方法
\4) 销毁
关闭tomcat服务器,或者重新加载应用,都会调用destroy方法
针对客户端的多次Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说一个Servlet的实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出,servlet实例对象才会销毁。
2.Servlet自动加载
它的取值必须是一整数;
当值小于0或者没有指定的时候,则表示容器在该Servlet被首次请求时才会被加载;
当值大于0或者等于0的时候,表示容器在启动时就加载并初始化该Servlet,取值越小,优先级越高;
当取值相同时,容器就会自行选择顺序进行加载
<servlet><description></description><display-name>LifeServlet</display-name><servlet-name>LifeServlet</servlet-name><servlet-class>com.rr.life.LifeServlet</servlet-class><!-- tomcat服务器加载we应用时,创建对应的servlet对象值越小,优先级越高--><load-on-startup>1</load-on-startup>
</servlet>
注解的写法
@WebServlet(name = "HelloServlet", value = "/HelloServlet", loadOnStartup = 1)
四转发和重定向
1.请求转发
一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理,称之为请求转发啊
请求转发属于服务器行为
转发需要通过RequestDispatche接口的对象,调用ServletRequest的getRequestDispatcher(String path)方法可以获取该对象
RequestDispatcher 接口中提供的实现转发的方法:
方法 | 功能描述 |
---|---|
void forward(ServletRequest request,ServletResponse response) | 用于将请求转发给另一个 Web 资源。该方法必须在响应提交给客户端之前被调用 |
//request域
request.setAttribute("age", 10);
//转发
request.getRequestDispatcher("/ForwardServlet2").forward(request, response);
转发后,可以实现request对象中的数据的共享
2.重定向
一个web资源收到客户端请求后,通知浏览器去访问另外一个web资源,称之为请求重定向.
重定向属于客户端行为。本质上是两次 HTTP 请求,对应两个 request 对象和两个 response 对象。
转发和重定向的区别:
转发是一个web资源收到客户端请求后,通知服务器去调用另外一个web资源。
重定向是一个web资源收到客户端的请求后,通知浏览器去调用另外一个web资源
//重定向
//response.sendRedirect("/W08_2_Servlet/RedirectServlet2");
//response.sendRedirect("RedirectServlet2");//重定向时,不能共享request对象中的数据
request.setAttribute("id", 100);
//推荐如下写法
response.sendRedirect(request.getContextPath() + "/RedirectServlet2");
重定向时,多个Servlet不能共享request对象中的数据
3.重定向和转发的区别
1)重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变;转发过程结束后,浏览器地址栏保持初始的URL地址不变
2)重定向时,是通过响应的结果告诉浏览器去重新发出请求访问另外一个web资源。而转发是在服务器内部请求转发给另外一个资源的
3)转发时,调用者与被调用者之间共享相同的request对象和response对象,它们属于同一个访问请求和响应过程;而重定向时调用者与被调用者使用各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。
4)重定向时,重定向的URL以“/”开头,它是相对于WEB应用所在的服务器;转发时的URL以“/”开头,它是相对于当前WEB应用程序。
5)转发只能将请求转发给同一个WEB应用中的资源;而重定向还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。
区别 | 转发 | 重定向 |
---|---|---|
行为 | 服务器行为 | 客户端行为 |
浏览器地址栏 URL 是否发生改变 | 否 | 是 |
是否共享 request 对象和 response 对象 | 是 | 否 |
是否能通过 request 域对象传递数据 | 是 | 否 |
是否支持跳转到其他应用的资源 | 否 | 是 |
路径中/ | 相对于当前web应用 | 相对于服务器 |
五ServletConfig接口
Servlet容器初始化Servlet时,会为了这个Servlet创建一个ServletConfig对象,并将ServletConfig对象作为参数传递给Servlet。通过Servlet的初始化参数信息。
方法 | 功能描述 |
---|---|
String getInitParameter(String name) | 根据初始化参数名 name,返回对应的初始化参数值。 |
Enumeration getInitParameterNames() | 返回 Servlet 所有的初始化参数名的枚举集合,如果该 Servlet 没有初始化参数,则返回一个空的集合。 |
ServletContext getServletContext() | 返回一个代表当前 Web 应用的 ServletContext 对象。 |
String getServletName() | 返回 Servlet 的名字 |
配置servlet的初始化参数
<servlet><servlet-name>ConfigServlet</servlet-name><servlet-class>com.qfedu.servletconfig.ConfigServlet</servlet-class><!-- servlet的初始化参数 --><init-param><param-name>user</param-name><param-value>zhangsan</param-value></init-param><init-param><param-name>pwd</param-name><param-value>12345</param-value></init-param></servlet>
public class ConfigServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub// 获取ServletConfig对象// ServletConfig 不需要额外创建// 每个Servlet都会对应一个ServletConfig对象ServletConfig servletConfig = this.getServletConfig();// 获取servlet中的初始化参数的值String info = servletConfig.getInitParameter("user");System.out.println(info);String info2 = servletConfig.getInitParameter("pwd");System.out.println(info2);}}
注解方式
@WebServlet(value = {"/config"}, initParams = {@WebInitParam(name = "user", value = "zhangsan"),@WebInitParam(name = "pwd", value = "1234")})
public class ConfigServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub// 获取ServletConfig对象// ServletConfig 不需要额外创建// 每个Servlet都会对应一个ServletConfig对象ServletConfig servletConfig = this.getServletConfig();// 获取servlet中的初始化参数的值String info = servletConfig.getInitParameter("user");System.out.println(info);String info2 = servletConfig.getInitParameter("pwd");System.out.println(info2);}}
六 ServletContext 接口
Servlet 容器启动时,会为每个 Web 应用创建一个唯一的 ServletContext 对象,该对象一般被称为“Servlet 上下文对象”。
ServletContext 对象的生命周期从 Servlet 容器启动时开始,到容器关闭或应用被卸载时结束。
常用方法:
方法 | 描述 |
---|---|
String getInitParameter(String name) | 根据初始化参数名 name,返回对应的初始化参数值。 |
Enumeration getInitParameterNames() | 返回 Web 应用所有上下文初始化参数名的枚举集合,如果该 Web 应用没有上下文初始化参数,则返回一个空的枚举集合。 |
void setAttribute(String name, Object object) | 把一个 Java 对象与一个属性名绑定,并将它作为一个属性存放到 ServletContext 中。 参数 name 为属性名,参数 object 为属性值。 |
void removeAttribute(String name) | 从 ServletContext 中移除属性名为 name 的属性。 |
Object getAttribute(String name) | 根据指定的属性名 name,返回 ServletContext 中对应的属性值。 |
String getRealPath(String path) | 返回资源文件的真实路径(文件的绝对路径)。 |
InputStream getResourceAsStream(String path) | 返回映射到资源文件的 InputStream 输入流对象。 |
1 获取web应用路径
//获取servletcontext对象
ServletContext servletContext = this.getServletContext();// /W08_2_Servlet
System.out.println(servletContext.getContextPath());//通过request对象,获取应用的路径
System.out.println(request.getContextPath());
2 web****应用的初始化参数
/**<!-- 针对整个应用的初始化参数 -->
<context-param><param-name>AAA</param-name><param-value>aaa</param-value>
</context-param>* * */
String v1 = servletContext.getInitParameter("AAA");
System.out.println(v1);
3 多个Servlet对象共享数据
同一个Web应用中,所有的Servlet对象共享一个ServletContext对象
ServletContext servletContext = this.getServletContext();
//向servletcontext域中写入数据
//在整个web应用的不同的资源之间共享数据
servletContext.setAttribute("name", "zhangsan");Dog d = new Dog();
d.setAge(2);
d.setName("wangcai");servletContext.setAttribute("dog", d);
相关文章:
Servlet的几种用法?
serlet 1.定义:Serlet是使用Java编写的运行在服务器端的程序 2.Servlet主要是用于处理浏览器端发送的Http请求,并返回一个响应 3.Servlet开发需要使用到的包: java.servlet java.servlet.http 一.Servlet注册 1.xml方式 <servlet>…...
Golang | Leetcode Golang题解之第69题x的平方根
题目: 题解: func mySqrt(x int) int {if x 0 {return 0}C, x0 : float64(x), float64(x)for {xi : 0.5 * (x0 C/x0)if math.Abs(x0 - xi) < 1e-7 {break}x0 xi}return int(x0) }...
AR人脸美妆SDK解决方案,让妆容更加贴合个人风格
美妆行业正迎来前所未有的变革,为满足企业对高效、精准、创新的美妆技术需求,美摄科技倾力打造了一款企业级AR人脸美妆SDK解决方案,为企业打开美妆领域的新世界大门。 革命性的人脸美妆技术 美摄科技的AR人脸美妆SDK解决方案,不…...
Python-100-Days: Day09 Object-oriented programming(OOP) Upgrade
1.property装饰器 之前有讨论过, Python中属性和方法访问权限的问题,不建议将属性设置为私有的,倘若直接将属性暴露给外界也是存在问题的。例如,我们没有办法检查赋给属性的值是否有效。之前的建议是将属性命名以单下划线开头&am…...
虹科Pico汽车示波器 | 免拆诊断案例 | 2010款凯迪拉克SRX车发动机无法起动
故障现象 一辆2010款凯迪拉克SRX车,搭载LF1发动机,累计行驶里程约为14.3万km。该车因正时链条断裂导致气门顶弯,大修发动机后试车,起动机运转有力,但发动机没有着机迹象;多起动几次,火花塞会变…...
ECC 号码总结
1、问题背景 在手机开发过程中,经常遇见各种紧急号码问题,在此特意总结下紧急号码相关知识。 2、紧急号码来源 在MTK RILD EccNumberSource.h中,定义了如下几种紧急号码来源。 按优先级排序介绍如下 2.1、SOURCE_NETWORK 网络下发ÿ…...
《大疆二次开发》EMQX和MQTT部署
EMQX 服务器 基础知识 概念 EMQX (Erlang/Enterprise/Elastic MQTT Broker) ;EMQ/EMQX就是MQTT Broker的一种实现;一款开源的大规模分布式 MQTT 消息服务器,功能丰富,专为物联网和实时通信应用而设计;支持多种协议&…...
【网络】滑动窗口和拥塞窗口
滑动窗口和拥塞窗口是TCP协议中两个重要的窗口概念,它们分别用于流量控制和拥塞控制,在功能和作用上有所不同。 滑动窗口(Sliding Window) 滑动窗口是用于流量控制的机制,它定义了发送方和接收方之间的数据传输量。T…...
数据库知识初步汇总
创建标签表格: CREATE TABLE IF NOT EXISTS labels (标签ID INTEGER PRIMARY KEY,标签名称 TEXT );创建文本与标签的关联表格: CREATE TABLE IF NOT EXISTS 文本标签 (文本ID INTEGER,标签ID INTEGER,FOREIGN KEY (文本ID) REFERENCES texts(编号),FOR…...
Moby简介:openEuler 中的开源docker引擎
Moby 是一个开源的容器化引擎,它提供了创建和管理容器所需的核心功能。在 openEuler 系统中,Moby 作为容器技术的实现之一,它允许用户利用容器化技术来部署、运行和移植应用程序。 Moby 的功能和作用: 1. **容器创建**ÿ…...
分布式光纤测温DTS的测温范围是多少?
分布式光纤测温DTS的测温范围不仅仅取决于光缆的感温能力,还受到多种复杂因素的影响。尽管高温光缆可以耐高温,低温光缆可以耐低温,甚至镀金光缆能够耐受高达700摄氏度的极高温度,然而,这些因素并不能完全解释测温范围…...
Java实现裁剪PDF
目录 安装Java PDF库 Java裁剪PDF页面 Java裁剪PDF页面并将结果保存为图片、HTML、Excel等格式 裁剪PDF页面是一项常见的任务,它可以用来调整文档的尺寸和去除不需要的边距或白边。通过裁剪页面,你可以优化文档的布局和展示效果,使其更符合…...
ZooKeeper以及DolphinScheduler的用法
目录 一、ZooKeeper的介绍 数据模型 编辑 操作使用 ①登录客户端 编辑 ②可以查看下面节点有哪些 ③创建新的节点,并指定数据 ④查看节点内的数据 ⑤、删除节点及数据 特殊点: 运行机制: 二、DolphinScheduler的介绍 架构&#…...
gitlab集群高可用架构拆分部署
目录 前言 负载均衡器准备 外部负载均衡器 内部负载均衡器 (可选)Consul服务 Postgresql拆分 1.准备postgresql集群 手动安装postgresql插件 2./etc/gitlab/gitlab.rb配置 3.生效配置文件 Redis拆分 1./etc/gitlab/gitlab.rb配置 2.生效配置文件 Gitaly拆分 1.…...
STC8增强型单片机开发day01
C51版本Keil环境搭建 搭建流程 环境搭建的基本流程: 从官方网站下载并安装Keil软件。选择安装的软件中的C51工具集并运行。通过从“文件”菜单中选择“项目”来创建新项目。输入项目名称并选择您正在使用的设备。通过从“项目”菜单中选择“添加文件到组”来添加…...
记录: Python解析yml文件,顺序解析,带所有文件等号
记录: Python解析yml文件,顺序解析,带所有文件等号from yaml.composer import Composer from yaml.constructor import Constructor import yamlclass ParseYml:def __init__(self):passstaticmethoddef parse(yml_pathNone):try:loader yaml.Loader(op…...
Npm Install Docusaurus Demo【npm 安装 docusaurus 实践 】
文章目录 1. 简介2. 前提2.1 安装 git2.2 安装 node 3. 安装4. 项目结构5. 访问5.1 localhost 访问5.2 ip 访问 1. 简介 Docusaurus 是一个facebook的开源项目,旨在帮助开发者构建易于维护和部署的文档网站。它提供了一个简单的方法来创建专业的文档网站࿰…...
【工具推荐定制开发】一款轻量的批量web请求命令行工具支持全平台:hey,基本安装、配置、使用
背景 在开发 Web 应用的过程中,作为开发人员,为了确认接口的性能能够达到要求,我们往往需要一个接口压测工具,帮助我们快速地对我们所提供的 Web 服务发起批量请求。在接口联调的过程中,我们通常会用 Postman 等图形化…...
Linux进程——进程的创建(fork的原理)
前言:在上一篇文章中,我们已经会使用getpid/getppid函数来查看pid和ppid,本篇文章会介绍第二种查看进程的方法,以及如何创建子进程! 本篇主要内容: 查看进程的第二种方法创建子进程系统调用函数fork 在开始前ÿ…...
ICode国际青少年编程竞赛- Python-1级训练场-路线规划
ICode国际青少年编程竞赛- Python-1级训练场-路线规划 1、 Dev.step(3) Dev.turnLeft() Dev.step(4)2、 Dev.step(3) Dev.turnLeft() Dev.step(3) Dev.step(-6)3、 Dev.step(-2) Dev.step(4) Dev.turnLeft() Dev.step(3)4、 Dev.step(2) Spaceship.step(2) Dev.step(3)5、…...
uniapp微信小程序1rpx border在某些手机机型上边框显示不出来解决方案
小程序在ios系统中,如果border小于1px的情况下,border就可能显示不全(可能少了上下左右任意一边) 只需要加一个::after或::before伪类,使用绝对定位定在原来元素上边就不会产生问题了! .d_card_line1_tag { padding: 1rpx 14r…...
Linux mkfs.ext2命令教程:如何创建ext2文件系统(附实例详解和注意事项)
Linux mkfs.ext2命令介绍 mkfs.ext2是Linux系统中用于创建ext2文件系统的命令。它的作用是在指定的设备上创建一个ext2文件系统,使该设备能够存储文件和目录。创建ext2文件系统的过程包括以下几个步骤。 Linux mkfs.ext2命令适用的Linux版本 mkfs.ext2命令在大多…...
基于Springboot的校园招聘系统(有报告)。Javaee项目,springboot项目。
演示视频: 基于Springboot的校园招聘系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…...
将 Vue、React、Angular、HTML 等一键打包成 macOS 和 Windows 平台客户端应用
应用简介 PPX 基于 pywebview 和 PyInstaller 框架,构建 macOS 和 Windows 平台的客户端。本应用的视图层支持 Vue、React、Angular、HTML 中的任意一种,业务层支持 Python 脚本。考虑到某些生物计算场景数据量大,数据私密,因此将…...
使用 MobaXterm 链接 Ubuntu(Windows子系统)
MobaXterm_Personal_22.1 Ubuntu(Windows子系统)...
QT设计模式:代理模式
基本概念 代理模式(Proxy Pattern)是一种结构型设计模式,它允许你提供一个代理对象,以控制对其他对象的访问。 代理通常在客户端和实际对象之间充当中介,用于控制对实际对象的访问(如登录控制)…...
独热编码One-Hot是什么?在实际应用中具体是如何存储的?
One Hot编码是一种常用的文本或类别数据编码方式,尤其在自然语言处理和机器学习中。在One Hot编码中,每个词(或类别)会被表示为一个二进制的向量,这个向量的长度等于词汇表(或类别总数)的大小&a…...
计算机视觉与深度学习实战之以Python为工具:基于GUI搭建通用视频处理工具
注意:本文的下载教程,与以下文章的思路有相同点,也有不同点,最终目标只是让读者从多维度去熟练掌握本知识点。 下载教程:计算机视觉与深度学习实战-以MATLAB和Python为工具_基于GUI搭建通用视频处理工具_项目开发案例教程.pdf 一、引言 随着计算机视觉和深度学习技术的飞速…...
18.Docker学习
1.Docker应用场景 Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker(模板)将软件运往各个环境(测试环境和生产环境拉取镜像(实例)),相当于是一个模子刻出来的 …...
树莓派4b红外检测
1.红外检测连接图 2.红外检测工作原理 红外传感器的工作原理类似于物体检测传感器。该传感器包括一个红外LED和一个红外光电二极管,因此通过将这两者结合起来,可以形成一个光耦合器。 红外LED是一种发射红外辐射的发射器。该LED看起来与标准LED相似&a…...
网站做树状结构有什么作用/微信广告推广如何收费
1. 在托管程序的.config文件里,启用legacyCorruptedStateExceptionsPolicy这个属性,即简化的.config文件类似下面的文件: App.config: <?xml version"1.0"?> <configuration> <startup> <supportedRun…...
漯河网站优化/成功营销案例分享
一、分析什么是顺序表?顺序表是指用一组地址连续的存储单元依次存储各个元素,使得在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中的线性表。一个标准的顺序表需要实现以下基本操作:1、初始化顺序表2、销毁顺序表3、清空顺序表4、检测…...
wordpress 命令执行时间/营销策划公司介绍
文/黑水泛金波 问题一、套头是不是都很差? 答:不是。肯定不是。 事实上,厂家在决定用什么样的头来作为“套头”、跟机身组成“套机”一起销售的时候,的确就已经先考虑好了、用户最可能需要的镜头会是哪一个。这往往跟机身的“气质…...
手机网站在线生成/6个好用的bt种子搜索引擎
目录一、文件目录二、实现效果三、实现3.1 跳转页面api3.2 页面组件跳转四、示例demo源码4.1 wxml4.2 wxss4.3 js一、文件目录 二、实现效果 三、实现 点击test页面中的按钮,跳转至页面other; 3.1 跳转页面api 3.1.1 navigateTo 保留当前页面&#x…...
短视频seo软件/新站优化案例
一、功能不同 margin-top:功能为设置元素的上外边距。top:规定元素的顶部边缘。 二、特点不同 margin-top:允许使用负值。定义固定的上外边距。默认值是 0。top:定义了一个定位元素的上外边距边界与其包含块上边界之间的偏移。…...
山西网站建设费用/网站内容如何优化
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。 -u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。 如果不使用 -u user 的话…...