JSP与Servlet
一、什么是JSP?
JSP
(java Service Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的动态技术标准。
在传统的HTML文件(*.htm 、 *.html)中加入Java程序片段(Scriptlet)和JSP标签,构成了JSP网页。
1.1 JSP页面的运行原理
- 客户端向服务器发送JSP页面请求。
- JSP容器接收到请求后检索对应的JSP页面,如果该JSP页面是第一次被请求,则容器将此页面中的静态数据(HTML文本)和动态数据(Java脚本)全部转化成Java代码,使JSP页文件翻译成一个Java文件即Servlet。
- 容器将翻译后的Servlet文件编译成字节码文件即.class。
- 编译后的字节码文件被加载到容器内存中执行。并根据用户的请求生成HTML格式的响应内容。
- 容器将响应内容返回到客户端。如下图所示
1.2 JSP页面元素
1.3 page指令
每个JSP
页面都有一个page
指令:
page指令属性:
属性 值 默认值 import 类名或包名 无 language 脚本语言名称 “java” contentType MIME类型和字符集 “text/html” extends 类名 无 info 文本字符串 无 session 布尔值 "true’ buffer 缓冲器大小,或none autoFlush 布尔值 "true’ isThreadSafe 布尔值 "true’ errorPage 本地URL 无 isErrorPage 布尔值 "false’
page的三大指令
- Page :指令是针对当前页面的指令
- Include :用于指定如何包含另一个页面
- Taglib :用于定义和指定自定义标签。
JSP中
动态include
和静态include
的区别
- 静态include:语法:<%@ include file=“文件名” %>,相当于复制,编辑时将对应的文件包含进来,当内容变化时,不会再一次对其编译,不易维护。
- 动态include:语法:<jsp:include page=“文件名”>,能够自动检查被包含文件,当客户端对JSP文件进行请求时,会重新将对应的文件包含进来,进行实时的更新。
1.4 九大内置对象
-
request
对象
request
对象是javax.servlet.httpServletRequest
类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request
对象的作用域为一次请求。 -
response
对象
response
代表的是对客户端的响应,主要是将JSP
容器处理过的对象传回到客户端。response
对象也具有作用域,它只在JSP
页面内有效。 -
session
对象
session
对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session
对象,用于保存该用户的信息,跟踪用户的操作状态。session
对象内部使用Map
类来保存数据,因此保存数据的格式为 “Key/value
”。session
对象的value
可以使复杂的对象类型,而不仅仅局限于字符串类型。 -
application
对象
application
对象可将信息保存在服务器中,直到服务器关闭,否则application
对象中保存的信息会在整个应用中都有效。与session
对象相比,application
的out 对象
用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用out对象
输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。 -
pageContext
对象
pageContext
对象的作用是取得任何范围的参数,通过它可以获取JSP
页面的out
、request
、reponse
、session
、application
等对象。pageContext
对象的创建和初始化都是由容器来完成的,在JSP
页面中可以直接使用pageContext
对象。 -
config
对象
config
对象的主要作用是取得服务器的配置信息。通过pageConext
对象的getServletConfig()
方法可以获取一个config
对象。当一个Servlet
初始化时,容器把某些信息通过config
对象传递给这个Servlet
。 开发者可以在web.xml
文件中为应用程序环境中的Servlet
程序和JSP
页面提供初始化参数。 -
page
对象
page
对象代表JSP
本身,只有在JSP
页面内才是合法的。page
隐含对象本质上包含当前Servlet
接口引用的变量,类似于Java编程中的 this 指针。 -
exception
对象
exception
对象的作用是显示异常信息,只有在包含isErrorPage=“true”
的页面中才可以被使用,在一般的JSP
页面中使用该对象将无法编译JSP
文件。excepation
对象和Java的所有对象一样,都具有系统提供的继承结构。exception
对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch
关键字来处理异常情况; 如果在JSP页面中出现没有捕获到的异常,就会生成exception
对象,并把exception
对象传送到在page
指令中设定的错误页面中,然后在错误页面中处理相应的exception
对象。
1.5 四大作用域
( 从小到大排序 )
-
page:代表与一个页面相关的对象和属性。
-
request:代表与客户端发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件;需要在页面显示的临时数据可以置于此作用域。
-
session:代表与某个用户与服务器建立的一次会话相关的对象和属性。跟某个用户相关的数据应该放在用户自己的 session 中。
-
application:代表与整个 Web 应用程序相关的对象和属性,它实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域。
较常用的就是session,适用于浏览器的多次请求与响应的过程。
而使session(当前会话)结束的有三种:
- 关闭当前服务器,
- 超时,服务器响应.
- 调用 session.invalidate()方法来结束。
二、什么是Servlet?
Servlet 可以看作是在服务器上运行的小程序,一个页面处理程序。
2.1 Servlet的生命周期
主要分为以下几个阶段:
加载类—>实例化(为对象分配空间)—>初始化(为对象的属性赋值)—>请求响应(服务阶段)—>销毁
s三个阶段分别对应Servlet
的三个方法:
init()
初始化
service()
处理请求
destroy()
销毁
初始化阶段
Servlet 初始化是其生命周期的第一个阶段,也是其他阶段的基础。只有完成了初始化,Servlet 才能处理来自客户端的请求。
-Servlet 初始化阶段分为 3 步:
- 当客户端首次发送第一次请求后,由
Servlet
容器去解析请求,根据请求找到是否有对应的Servlet
。 - 判断是否有
Servlet
实现类的对象存在?存在则直接使用,不存在则先创建一个Servlet
实现类的对象。 - 调用 init() 方法进行初始化
请求响应阶段
初始化完成后调取service()方法,由service()判断客户端的请求方式。
- 如果是get请求,则执行doGet()方法。
- 如果是post请求,则执行doPost()。
- 处理方法完成后会作出相应的结果返回给客户端,单次请求处理完毕。
当用户发送第二次以后的请求时,会判断对象是否存在,但是不再执行init()
,而直接执行service()
方法调取doGet()
/ doPost()
方法。
服务终止阶段
当服务器关闭,重启或移除Servlet
实例时Servlet
调取destroy()
方法进行销毁,宣告生命周期的结束。
2.2 Servlet如何输出页面
servlet
作为服务端既可以处理用户从页面发过来的请求,并反馈到其他页面,也可以直接在通过servlet
直接进行页面的输出:
① 先使用response
的setContentType()
方法设置发送到客户端的响应的内容类型(text/html
, text/plain
, application/msword
等等)
例如:
setContentType(“text/html;charset=UTF-8”);
响应类型为HTML格式的
setContentType(“text/plain;charset=UTF-8”);
响应类型为文本格式的
setContentType(“application/msword;charset=UTF-8”);
响应类型为word格式的
当要进行页面展示的时候就选用text/html;charset=UTF-8
;
② 在设置上述方法之后,使用PrintWriter out=response.getWriter();
拿到输出器,然后用out
对象的write()
方法写出页面,如:
private static final String CONTENT_TYPE="text/html;charset=utf-8";
response.setContentType(CONTENT_TYPE);PrintWriter out=response.getWriter();out.println("<html>");out.println("<head><title>MyServlet</title></head>");out.println("<body bgcolor=\"#ffffff\">");out.println("<p><h1>hello world</h1></p>");out.println("</body></html>");out.close();
三、jsp和servlet 的区别
JSP
是Servlet
技术的扩展,本质上就是Servlet
的简易方式。JSP
编译后是“类servlet
”。
Servlet
的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩 展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。
四、其他相关
4.1 页面向后台提交数据有三种方式
- form表单。
- a href 超链接。
- ajax运用了
js
技术
4.2 页面向后台提交请求有两种方式
- get。
- post。
get和post的区别:
get
是用来从服务器上获取数据,而post
是用来向服务器传递数据;get
将表单中数据按照variable=value
的形式,添加到action
所指向的URL
后面,并且两者用?
连接,变量之间用&
连 接;而post
是将表单中的数据放在form
的数据体中,按照变量与值对应的方式,传递到action
所指定的URL
。get
是不安全的,因为在传输过程中,数据是被放在请求的URL
中;而post
的所有操作对用户来说都是不可见的。get
传输的数据量小,这主要应为受url
长度限制;而post
可以传输大量的数据,所有上传文件只能用post提交。get
限制form
表单的数据集必须为ASCII
字符;而post
支持整个IS01 0646
字符集。get
是form
表单的默认方法。
页面发送请求,servlet
执行逻辑,servlet
调用service
方法根据页面提交方式来调用doget()
或dopost(
)方法。最后相应。
4.3 解决乱码
既然的提交数据那么肯定有中文,有数字,而数据提交不是中文格式,那么提交的数据就会出现乱码问题,那么如何解决表单提交的中文乱码问题呢?
- 设置页面编码,若是jsp页面,需编写代码<%@page language=“java” pageEncoding=“UTF-8” contentType=“text/html;charset=UTF-8” %>
若 是 html 页 面 , 在 网 页 头 部 ( < head>< /head> ) 中 添 加 下 面 这 段 代 码 < meta http-equiv=“Content-Type” content=“text/html; charset=utf-8” /> - 将 form 表 单 提 交 方 式 变 为 post 方 式 , 即 添 加 method=“post”; ) 在 Servlet 类 中 编 写 代 码request.setCharacterEncoding(“UTF-8”),而且必须写在第一行。
- 如 果 是 get 请 求 , 在 Servlet 类 中 编 写 代 码 byte [] bytes = str.getBytes(“iso-8859-1”);String cstr = new String(bytes,“utf-8”);或者直接修改Tomcat服务器配置文件server.xml增加内容:URIEncoding=“utf-8”
4.4 request.getAttribute()和 request.getParameter()的区别
request.getParameter()
取得是通过容器的实现来取得通过类似post
,get
等方式传入的数据。getAttribute()
是返回对象,getParameter()
返回字符串getAttribute()
一向是和setAttribute()
一起使用的,只有先用setAttribute()
设置之后,才能够通过getAttribute()
来获得值,它们传递的是Object类型的数据。而且必须在同一个request
对象中使用才有效。而getParameter()
是接收表单的get
或者post
提交过来的参数
如下是Request对象的主要方法
4.5 转发与重定向的区别?
- 从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.所以redirect等于客户端向服务器端发出两次request,同时也接受两次response。
转发地址栏不发生改变,重定向地址栏发生改变。
转发是一次请求,重定向是多次请求。 - 从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据.redirect:不能共享数据.redirect不仅可以重定向到当前应用程序 的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源.forward方法 只能在同一个Web应用程序内的资源之间转发请求.forward 是服务器内部的一种操作.redirect 是服务器通知客户端,让客户端重新发起请求.所以,你可以说 redirect 是一种间接的请求, 但是你不能说"一个请求是属于forward还是redirect "。
转发数据不会丢失,而重定向数据会丢失。 - 从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块. redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等. - 从效率来说
forward:高. redirect:低.
4.6 servlet的四种会话跟踪技术
- session :使用
setAttribute(String str,Object obj)
方法将对象捆绑到一个会话。 - cookie: 一个 cookie 是一个小的,已命名数据元素。服务器使用 SET-Cookie 头标将它作为 HTTP响应的一部分传送到客户端,客户端被请求保存 Cookie 值,在对同一服务器的后续请求使用一个Cookie 头标将之返回到服务器。与其它技术比较, Cookie 的一个优点是在浏览器会话结束后,甚至在客户端计算机重启后它仍可以保留其值
- URL 重写 :URL 可以在后面附加参数,和服务器的请求一起发送,这些参数为名字 / 值对。
- 隐藏表单域:适合步需要大量数据存储的会话应用。
session的工作原理:
session 的工作原理是客户端登录完成之后,服务器会创建对应的 session,session 创建完之后,会把 session 的 id 发送给客户端,客户端再存储到浏览器中。这样客户端每次访问服务器时,都会带着 sessionid,服务器拿到 sessionid 之后,在内存找到与之对应的 session 这样就可以正常工作了。
参考资料:
- CSDN
https://blog.csdn.net/m0_59079129/article/details/117934977
- CSDN
https://blog.csdn.net/weixin_67588007/article/details/125071301
相关文章:
JSP与Servlet
一、什么是JSP? JSP(java Service Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的动态技术标准。 在传统的HTML文件(*.htm 、 *.html)中加入Java程序片段(Scriptlet)和JSP标签,构成了JSP网页。 1.1 JSP页面的运行原理 客户…...
C++之迭代器
迭代器C中,迭代器就是类似于指针的对象,但比指针的功能更丰富,它提供了对对象的间接访问,每个迭代器对象代表容器中一个确定的地址。举个例子:void test() {vector<int> vv{1,2,3,4,5};for(vector<int>::i…...
2023-02-16:干活小计
数学公式表示学习: 大约耗时:2 hours 在做了一些工作后重读论文:MathBERT: A Pre-Trained Model for Mathematical Formula Understanding 这是本篇论文最重要的idea:Current pre-trained models neglect the structural featu…...
Linux上安装LaTeX
Linux上安装LaTeX1. 安装1.1 下载安装texlive1.2 配置中文1.3 安装XeLatex1.4 安装编辑器1.5 设置默认支持中文编译1.6 配置环境路径2. latex配置2.1 latex自动安装宏包2.2 latex手动安装宏包2.2.1. 查找包2.2.2. 生成.sty文件2.2.3. 复制到配置文件夹3. 更新包3. 卸载参考链接…...
webpack -- 无法将“webpack”项识别为 cmdlet
webpack : 无法将“webpack”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 1.检测是否是版本太高而只能使用脚手架进行打包 webpack4.x的打包已经不能用webpack 文件a …...
对齐与非对齐访问
对齐与非对齐访问 什么是非对齐访问 在机器指令层面,当尝试从不能被 N 整除 (addr % N ! 0) 的起始地址读取 N 字节的数据时即发生了非对齐内存访问。举例而言,从地址 0x10004 读取 4 字节是可以的,然而从地址 0x10005 读取 4 字节数据将会…...
基于感知动作循环的层次推理用于视觉问答
title:Hierarchical Reasoning Based on Perception Action Cycle for Visual Question Answering 基于感知动作循环的层次推理用于视觉问答 文章目录title:[Hierarchical Reasoning Based on Perception Action Cycle for Visual Question Answering](…...
python中的.nc文件处理 | 05 NetCDF数据的进一步分析
NetCDF数据的进一步分析 比较不同数据集、不同季节的气候数据 import os import numpy as np import pandas as pd import matplotlib.pyplot as plt import cartopy.crs as ccrs import cartopy.feature as cfeature import seaborn as sns import geopandas as gpd import…...
GGX发布全新路线图,揭示具备 Layer0 特性且可编程的跨链基建生态
据彭博社报道,具备跨链通信且可编程的 Layer0 基础设施协议 Golden Gate (GGX) 已进行了 两年的线下开发,于近日公开发布了最新的路线图,该路线图不仅显示了该生态在过去两年的发展历程,也披露了 2023 年即将实现的重要里程碑。 G…...
taro+vue3 搭建一套框架,适用于微信小程序和H5
这里写tarovue3 搭建一套框架,适用于微信小程序和H5TaroVue3 搭建适用于微信小程序和 H5 的框架的大致步骤:TaroVue3 搭建适用于微信小程序和 H5 的框架的大致步骤: 安装 Taro。可以在终端输入以下命令进行安装: npm install -g…...
C++:模板初阶(泛型编程、函数模板、类模板)
文章目录1 泛型编程2 函数模板2.1 函数模板概念2.2 函数模板格式2.3 函数模板的原理2.4 函数模板的实例化2.5 模板参数的匹配原则3 类模板3.1 类模板的定义格式3.2 类模板的实例化1 泛型编程 所谓泛型,也就是通用型的意思。 在以往编写代码时,我们常常…...
把数组排成最小的数 AcWing(JAVA)
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 例如输入数组 [3,32,321][3,32,321],则打印出这 33 个数字能排成的最小数字 321323321323。 数据范围 数组长度 [0,500][0,500]。 样例&#x…...
4.3 PBR
1. 实验目的 熟悉PBR的应用场景掌握PBR的配置方法2. 实验拓扑 PBR实验拓扑如图4-8所示: 图4-8:PBR 3. 实验步骤 (1) IP地址的配置 R1的配置 <Huawei>system-view...
hmac — 加密消息签名和验证
hmac — 加密消息签名和验证 1.概述 它的全称叫做Hash-based Message Authentication Code: 哈希消息认证码,从名字中就可以看出来这个hmac基于哈希函数的,并且还得提供一个秘钥key,它的作用就是用来保证消息的完整性,不可篡改。…...
AWS攻略——使用ACL限制访问
文章目录确定出口IP修改ACL修改主网络ACL修改入站规则修改子网ACL创建子网ACL新增入站规则新增出站规则关联子网假如我们希望限制只有公司内部的IP可以SSH登录到EC2,则可以考虑使用ACL来实现。 我们延续使用《AWS攻略——创建VPC》的案例,在它的基础上做…...
【已解决】关于 luckysheet 设置纯文本,解决日期格式回显错误的办法
目录 一、现象 二、分析 三、思考过程 五、解决 六、参考链接 一、现象 在excel里面输入内容,如 2023-2-17 12:00 保存后,传回后端的数据被转化成了 数值类型,这显然是一种困扰。 如图所示 二、分析 查阅了文档和一些博客发现 Lucky…...
Jackson
first you need to add dependence: gradle: implementation com.fasterxml.jackson.core:jackson-databind:2.13.1 implementation com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.1原生Jackson的使用示例: /*** 原生Jackson的使用示例*/ public class Jacks…...
字节软件测试岗:惨不忍睹的三面,幸好做足了准备,月薪19k,已拿offer
我今年25岁,专业是电子信息工程本科,19年年末的时候去面试,统一投了测试的岗位,软件硬件都有,那时候面试的两家公司都是做培训的,当初没啥钱,他们以面试为谎言再推荐去培训这点让我特别难受。后…...
vue使用axios发送post请求携带json body参数,后端使用@RequestBody进行接收
前言 最近在做自己项目中,做一个非常简单的新增用户场景,但是使用原生axios发送post请求的时候,还是踩了不少坑的。 唉,说多了都是泪,小小一个新增业务,在自己前后端一起开发的时候,硬是搞了好…...
【python百炼成魔】python之列表详解
文章目录一. 列表的概念1.1 列表是什么?1.2 为什么要使用列表?1.3 列表的定义二. 列表的增删改查操作2.1 列表的读取2.2 列表的切片2.3 列表的查询操作2.3.1 not in ,in 表达式2.3.2 列表元素遍历2.4 列表元素的增加操作2.4.1 append()的相关用法2.4.2 e…...
如何学习 Web3
在本文中,我将总结您可以采取的步骤来学习 Web3。从哪儿开始?当我们想要开始新事物时,我们需要一些指导,以免在一开始就卡住。但我们都是不同的,我们有不同的学习方式。这篇文章基于我学习 Web3 的非常个人的经验。路线…...
大数据框架之Hadoop:MapReduce(一)MapReduce概述
1.1MapReduce定义 MapReduce是一个分布式计算框架,用于编写批处理应用程序,是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一…...
一文搞定python语法进阶
前言前面我们已经学习了Python的基础语法,了解了Python的分支结构,也就是选择结构、循环结构以及函数这些具体的框架,还学习了列表、元组、字典、字符串这些Python中特有的数据结构,还用这些语法完成了一个简单的名片管理系统。下…...
2019蓝桥杯真题数列求值(填空题) C语言/C++
题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 给定数列 1,1,1,3,5,9,17,⋯,从第 4 项开始,每项都是前 3 项的和。 求第 20190324 项的最后 4 位数字。 运行限制 最大运行时间:…...
spring中@Autowire和@Resource的区别在哪里?
介绍今天使用Idea写代码的时候,看到之前的项目中显示有warning的提示,去看了下,是如下代码?Autowire private JdbcTemplate jdbcTemplate;提示的警告信息Field injection is not recommended Inspection info: Spring Team recommends: &quo…...
算法训练营DAY54|583. 两个字符串的删除操作、72. 编辑距离
583. 两个字符串的删除操作 - 力扣(LeetCode)https://leetcode.cn/problems/delete-operation-for-two-strings/这道题也是对于编辑距离的铺垫题目,是可以操作两个字符串的删除,使得两个字符串的字符完全相同,这道题可…...
【Ctfshow_Web】信息收集和爆破
0x00 信息收集 web1 直接查看源码 web2 查看不了源码,抓包即可看到(JS拦截了F12) web3 抓包,发送repeater,在响应包中有Flag字段 web4 题目提示后台地址在robots,访问/robots.txt看到Disallow: /fl…...
基于机器学习的推荐算法研究与实现
摘要随着互联网的普及,人们可以通过搜索引擎、社交网络等方式获取大量的信息资源。但是,面对如此之多的信息,人们往往会感到迷失和困惑,无法快速准确地找到自己需要的信息。在这种情况下,推荐算法的出现为我们提供了一…...
(二十四)ATP应用测试平台——springboot集成fastdfs上传与下载功能
前言 本节内容我们主要介绍一下如何在springboot项目中集成fastdfs组件,实现文件的上传与下载。关于fastdfs服务中间键的安装过程,本节内容不做介绍。fastdfs是一个轻量级的分布式文件系统,也是我们文件存储中常常使用的组件之一,…...
linux好用命令+vs快捷键
linux好用命令 功能指令跳转到vim界面的最后一行shift键g复制当前路径下所有文件和目录(加-r才行)到target目录cp -r * /home/target删除指定文件rm -rf test.txt文件重命名(-i交互式提示)mv -i file1 file2移动某个内容…...
themebox wordpress/怎么免费注册域名
文章来源教师范文吧大班数学:数字接龙活动目标:1.引发幼儿对一组数字的记忆与敏感性,培养孩子的专注力。2.理解并遵守规则,按不同任务要求进行游戏。活动准备:任务卡,游戏币活动过程:一、颠三倒…...
wordpress全局阴影/怎样申请网站注册
前言:这篇文章对于工作多年的可能用处不大,但对于刚刚接触Java的同学肯定是有一些帮助,现在我总结我接触liunx后常见的一些命令 1:日志查询常用的命令 ll:查询目录下所有的文件 ls -lht:查询目录下所有文件的大小 cd:切…...
免费做网站公司/网站人多怎么优化
作者:岑川链接:https://www.zhihu.com/question/51179323/answer/124680433来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。为什么实现同样的电路,asic频率总是(几乎是一定…...
太阳宫网站建设/人工智能培训机构
【转自】:https://blog.csdn.net/CatStarXcode/article/details/79513425 NoSQL 的全称是 Not Only SQL,也可以理解非关系型的数据库,是一种新型的革命式的数据库设计方式,不过它不是为了取代传统的关系型数据库而被设计的&#…...
男女做羞羞的视频网站/广州网站排名专业乐云seo
本文结合实例,讲解使用PHPMySqljQuery实现的“顶”和“踩”投票功能,通过记录用户IP,判断用户的投票行为是否有效,该实例也可以扩展到投票系统中。如果您具备PHP、MySql和jQuery相关基础知识,那么请继续往下阅读。本文…...
用asp做网站需要准备什么/如何让关键词排名靠前
目录 Java是什么? Java工作原理 目录介绍 第1章 Java面向对象 第2章 Java异常 第3章 Java数组 第4章 Java常用类 第5章 Java集合 第6章 Java IO流 第7章 Java线程 第8章 Java反射 第9章 Socket编程 第10章 Java注解开发 第11章 Java GoF设计模式 第1…...