Web App 2|学习笔记

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 快速学习Web App 2

开发者学堂课程【高校精品课-上海交通大学 -互联网应用开发技术:Web App 2】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/76/detail/15738


Web App 2


内容介绍:

一、PHP

二、Ruby on Rails

三、Python

四、Node.js

五、重量级框架——Windows.NET

六、其他选择

七、HTTP协议

八、Request methods

九、HTTP session

十、HTTP session state

十一、用户A、B如何创建session

十二、请求与相应

十三、参考文献

十四、Maven源如何改成阿里的源

 

一、PHP

l Hypertext Preprocessor

l PHP is a popular general-purpose scripting language that

is especially suitedto web development.

l Fast, flexible and pragmatic, PHP powers everything from

your blog to themost popular websites in the world.

l LAMP

l Linux + Apache + MySQL+ PHP/Python/Perl

l Facebook, Yahoo, Weibo

可以利用PHP来编写网站,有一些网站确实是PHP进行编写的。PHP的特点是比较容易去掌握,缺点是不太适合大型的网站,主要是因为它里面一些支持的,像网站的一些并发,以及安全性可能不是那么好,虽然有一些网站是用PHP写,但其实做了一些框架的设计。做一些定制去使安全性事务管理各方面都更好。

 

二、Ruby on Rails

l Rails is a web application development framework written

in the Rubylanguage.

l It is designed to make programming web applications

easier by makingassumptions about what every developer needs to get started.

l It allows you to write less code while accomplishing more

than manyother languages and frameworks.

l If you run bin/rails routes, you'll see that it has defined

routes for all thestandard RESTful actions.

Ruby on Rails和JAVA很相似的一点是,Ruby是一种语言,Ruby on Rails是一种框架,像JAVA的企业版。Ruby相当于会中文,Ruby on Rails就相当于会使用中文写诗。所以必须使用语言在框架之下去开发Ruby on Rails。这是一种框架,比较著名的是Github和Airbnb,这两个网站就是Ruby on Rails进行开发的。

 

三、Python

Diango

- Django is a high-level Python Web framework that encourages rapid

development and clean, pragmatic design.

TurboGears 2

- TurboGears 2 is built on top of the experience of several next generation

web frameworks including TurboGears 1 (of course), Django, and Rails.

Web2py

- Free open source full-stack framework for rapid development of fast,

scalable, secure and portable database-driven web-based applications.Written and programmable in Python.

 

四、Node.js

- Node.jsRis a JavaScript runtime built on Chrome's V8 JavaScript engine- Node.js uses an event-driven, non-blocking I/O model that makes it

lightweight and efficient.

-Node.js' package ecosystem, npm, is the largest ecosystem of opensource libraries in the world.

- Emerging Technology

Node.js的好处是上手比较快,而且npm做项目管理实现一体化比较方便。

的缺点是执行效率不是高,另外就是在进行的演化的时候有和其配合不是特别好,比如最近做的一个项目就是拿它来和人工智能里面的OPEN POS来从图片里面识别人体的骨骼,这样一个包它的结合就不是特别好

 

五、重量级框架——Windows.NET

- An alternative of Java EE

- Stackoverflow

Windows.NET是微软的很多的产品系列的打包在一起,变成一个开发站,最初只有两种企业开发的标准。一种是windows另一种是Java,比较著名的Stackoverflow就是使用.net进行开发。

image.png

上图是.NET的一个框架,.NET和java企业版的最大的差异是,.NET支持多种语言,比如VB.NET等等。后面加上.NET不是使用VB或者C++就能直接在.NET里面使用,因为这种语言和拿这种语言去写诗是两回事,必须要按照.NET的框架用语言去写才可以。类似于java的字节码,然后再windows平台上面跑。

而JAVA的企业版是只支持JAVA这种语言,但是通过编译可以在任何一个操作系统上面跑,里面会存在一些不同,但是大体上是基于构建者开发。在web构建上开发,将其标准化。标准不一样但是想法都是一样的。

 

六、其他选择

Erlang

- Erlang is a programming language used to build massively scalable soft

real-time systems with requirements on high availability.

Scala

- Construct elegant class hierarchies for maximum code reuse and

extensibility, implement their behavior using higher-order functions.Oranything in-between.

Go

- Go is an open source programming language that makes it easy to build

simple, reliable, and efficient software.

现在比较热门的是GO语言,被称为是下一代语言。Scala是函数式编程的语言。这几种语言的特点是更加面向于未来的应用,它们的执行效率会非常高。

举一个例子,spark这种工具就是使用scala语言写的,使用Scala写的内容也可以使用Java编写,但是二者对比的话,scala的代码量是java的1/6,它非常简洁,性能也是比较高。所以在应对实时性要求比较高的情况下,可能会选择Scala的语言和架构去写。在这其中有很多的选择,可以用不同的方式来开发web应用。这里选择的是JAVA,原因是现在使用JAVA更多一些而且JAVA设计到的方面更广一些。不单单能做企业级的开发,还可以去做其他的开发。

除了用Java体系之外,还要知道包含哪些,接下来简单的给列举出这些东西。从要开发一个电子书城的角度来说,可能会开发出来,但是和授课的内容就脱离了。后面会讲不同的框架,在后端开发的时候首先是选择一个Java的框架,其次在使用某一个具体的框架的时候可以有所选择,它们大体上大同小异,只是具体的一些编程模型有点差异,但是基本上体现出来的思想是一样的。

 

七、HTTP协议

互联网和WEB是有差异的,Web是在互联网上使用web协议,web协议的基础就是HTTP协议。

HTTP functions as a request-response protocol in the client-server computing model.

- A web browser, for example, may be the client and an application

running on a computer hosting a website may be the server.

- The client submits an HTTP request message to the server.

- The server, which provides resources such as HTML files and other

content, or performs other functions on behalf of the client, returnsa response message to the client.

. The response contains completion status information about the request an may also contain requested content in its message body.

- A web browser is an example of a user agent (UA).

Other types of user agent include the indexing software used by searchproviders (web crawlers), voice browsers, mobile apps, andother software that accesses, consumes, or displays web content.

首先HTTP协议是一种请求响应式的协议。所谓请求响应,就是不请求是没有响应的,客户端要请求一下服务器端才会发一个相应回来,如果客户端没有发请求,走HTTP协议是没有办法直接从服务器端上推一个数据给客户端。比如开发了一个股票交易的网站,在网站上面就会呈现现在的行情,行情是不断变化的,要把变化的数据推给客户端去显示。走HTTP协议想主动把数据推过去是不行。于是有两种解决方案,第一种是不使用HTTP,可以使用web cos。另外一种方式是就是想方法让其发送请求,定期发送请求,但是这个请求不能让用户通过超链接发送,所以就有Ajax的存在。但是这种方式并不推荐使用,因为会加重服务器端的压力。无论是Ajax还是cos都是后话,最重要的是一定要在浏览器里面产生请求,然后后端才会产生响应。请求的产生通常是需要通过用户代理,用户代理最常用的的就是web浏览器。当然也不排除在后端写了一份程序web爬虫,它不断地自动产生请求。再比如说移动端的应用,它未必是一个浏览器。不管是哪一种,它的作用就是要发送请求出来,它就是应用的客户端。客户端在提交了请求到服务器端之后,服务器端就会去解析请求,去查看想要的资源,比如是HTML页面还是一些参数的需要去进行查找动态生成一些内容。无论如何,它根据后台的资源以及请求里面的内容去产生一个响应,响应就会发送回客户端。以上就是HTTP协议的核心,HTTP是请求响应式协议。

HTTP resources are identified and located on the network

by Uniform Resource Locators (URLs),

using the Uniform Resource Identifiers (URI's) schemes http and https.

URIs and hyperlinks in HTML documents form inter-

linked hypertext documents.

Every HTTP URL conforms to the syntax of a generic URI. A

generic URI is of the form:

scheme:[//[user:password@]host[:port][/]path[?query][#fragment]

For example:

https://en.wikipedia.org/wiki/Uniform _Resource_ Locator

在发送请求时是客户端要告诉服务器端想要的资源。为了让所有的资源都可以被客户端明确的描述出来,就像数据库里面的数据得到主键,每一个资源都有一个URLS,URLS叫做统一资源定位符,它的作用类似于主键一样,唯一的描述在互联网上的某一个资源,也就是说每一个URLS对应一个单一资源,不会出现多个页面对应同一个URL的情况。如果想要做到这一点就要让URL符合一定的模式,就像主键必须是一个整数或者字符串是具有唯一标识的,在HTTP协议里面就去定义URL应该如何标识。

URL其实只是一种特例,还有一种更加泛化的是URI,为统一资源定位符或者叫统一资源标识符。URL是URI中的一个特例,接下来讨论一些URL如何去描述。首先RUL要在协议里面,在web里面经常看到是http和https,https是http+ssl,ssl为安全套接字,简单来说https是加密的,也就是在客户端和服务器端通信是加密的。所以可以看到像电子银行或者支付宝的在线支付等等的协议名都是https。反过来说,如果在网络上提交敏感信息后,发现网站的URL前面不是HTTPS,那么数据就相当于是裸奔的,隐私有可能会泄露。所以看到不带有https,但是要到提交个人隐私信息最好就不要去提交了,网站的安全性比较差,所以就是HTTPS就是HTTP+SSL进行了加密,本质上HTTP和HTTPS是一样的。

前端要写协议名scheme,[//[user:password@]比如在用浏览器访问较大的HTTP服务器的时候需要写出用户名、密码,再加上@,这部分是用来变更用户的,host是主机名,描述里面的中括号[]表示可选,[:port]是端口名,当跑起来tomcat的时候会发现使用的是8080的端口,host最后会映射成为一个IP,IP为网络上机器的唯一标识。

举个例子某台机器上面跑了很多的程序,有数据库、tomcat以及http server,这三个都可以接收网络上的请求,如何确定给三个当中的哪一个发送请求呢?是需要进行区分的,区分就用到了端口号。端口号就是所有在host上面跑的分配一个ID,成为一个标识。8080就是tomcat要求跑起来的时候使用8080作为端口。程序代码请求进来后,发现是8080就转给tomcat,3306就发送给mysql,端口实际上就是对host上面跑的很多的应用程序的标识而已,分配一个端口号。[/]path是应用的路径,类似于本地的文件目录,可以继续带更加具体的路径,定位到某一个内容。host[:port][/]path相当于端口的根目录,比如这里是tomcat,那么后面的路径就是相对于tomcat的部署目录(webapp)的相对路径。[?query]是参数,相当于刚才提到的订单是一月的还是五月的。[#fragment]是指在页面里面还可以有一些定位符,比如一个很长的页面,把一本书分为了五张形成了很长的页面,那么可以在每一张的开始增加一个标签,指定定位到第一张还是第二张,以上是URL完整的写法。

Query delimiter

Example

Ampersand (&)

key1=value1&key2=value2

Semicolon (;)

key1=value1;key2=value2

参数不止一个,比如要有其实的月份和终止的月份,当有多个参数的时候可以使用&进行连接。所以在访问某些网站的时候,输入一些内容提交后注意发送的链接,链接就带有类似的信息。参数的写法就是XX参数=XX,注意表格里面虽然写了value,但是在互联网里面在http上面跑的其实都是文本。比如要写Start=1,也就是开始的月份等于1,那么这里的1实际上是一个字符串,而不是一个数字,后台可以转成数字。

 

八、Request methods

当对一个URL发送请求出去的时候,还可以指定使用什么方法。以下是最常用的五种方法。

l GET

The GET method requests a representation of the specified resource.Requests using GET should only retrieve data and should have no othereffect. (idempotent)

l HEAD

The HEAD method asks for a response identical to that of a GET request, but

without the response body. (idempotent)

l POST

The POST method requests that the server accept the entity enclosed in the

request as a new subordinate of the web resource identified by the URI.

l PUT

The PUT method requests that the enclosed entity be stored under the

supplied URI. (idempotent)

l DELETE

The DELETE method deletes the specified resource.(idempotent)

这些方法的目标不是指定get或者post一定要去怎么样,而是往URL发送请求的时候,还可以标识一下想要对资源进行的操作。比如想要获取,就可以使用get方法进行获取。如果想把前端写的内容发送到后端,存到后端的某一个系统里面就可以使用post。如果想要更改当前的页面就去使用put。实际上这些就相当于是标签,作用是告诉服务器对资源想要进行的操作,但是要保证服务器是正确执行,而不是输入了GET却执行了PUT方法。后台写一个serverlet,里面就会有doget的方法,doget里面就会去执行一些逻辑,尽量要去符合约定俗成的一些规定。这五种方法更像是一种声明,去声明要怎么做,但是至于后台真正如何去做还是要根据业务逻辑是如何写的。

这五种方法里面,通常定义GET是用来读,POST用来写/插入,PUT是改,DELETE用来删除,它们对应的就是数据库里面的增插改删的四个动作,所以HTTP协议还可以对资源进行增插改删。这四个方法是类似于标识告诉后台如何去做。idempotent是幂等的含义,也就是发送一次请求和发送两次、三次请求的效果是一样的,不会产生其他影响。如果网络状态不是特别好,当在给用户呈现网页的时候速度比较慢,速度慢可能用户会很着急,用户可能会摁两次甚至多次,如果网站没有问题那么网站的健壮性就比较好,如果有问题那么网站就不太好。如果按照GET就是GET的含义去处理的业务逻辑,那么GET就是幂等的,用户点击一次页面进行刷新还死一样的资源,相当于在读。但是POST就不可以这样操作,POST是把前端的用户封装在请求里面的实体,看作是请求资源的替代物,要进行插入,插入一次和插入多次是不一样的,插入两次相同的数据要么报错要么就会出现两次,所以连续点N次是不可以的。一个网站如果大量是使用幂等进行构成的,那么就不怕在网络拥堵的时候产生不当结果。所以网站幂等操作构成是很良好的习惯。所以当很多网页可以使用GET也可以POST进行获取的时候,建议使用GET进行操作。

还有一些其他的方法

HTTP defines methods to indicate the desired action to be performed

on the identified resource.

- . TRACE

●The TRACE method echoes the received request so that a client can see what (if

any) changes or additions have been made by intermediate servers. (idempotent)

- OPTIONS

●The OPTIONS method returns the HTTP methods that the server supports for the

specified URL. This can be used to check the functionality of a web server by

requesting *' instead of a specific resource. (idempotent)

- CONNECT

●The CONNECT method converts the request connection to a transparent TCP/IP

tunnel, usually to facilitate SSL-encrypted communication (HTTPS) through an

unencrypted HTTP proxy.

- PATCH

●The PATCH method applies partial modifications to a resource.

一All general-purpose HTTP servers are required to implement at least the

GET and HEAD methods, and, whenever possible, also the OPTIONS method.

 

九、HTTP session

Some of the methods (for example, HEAD, GET, OPTIONS andTRACE] are, by convention, defined as safe

一which means they are intended only for information retrieval and should

not change the state of the server.

Methods PUT and DELETE are defined to be idempotent,

一meaning that multiple identical requests should have the same effect as

a single request

- or the response code it returns may be different on subsequent requests,

the system state will be the same every time.

- Methods GET, HEAD, OPTIONS and TRACE, being prescribed as safe,

should also be idempotent, as HTTP is a stateless protocol

凡是幂等的就是安全的,不是幂等就不安全。HTTP是一个无状态的协议。HTTP是采用三次握手的方式建立连接进行传输,也就是客户端、浏览器和web服务器建立连接。A发送TCP请求给B,B收到后再发送第二次告诉A已经收到。当A接到B已经收到的消息以后,A再告诉B它也已经收到B的消息,所以是发送了三次。第一次A发送给B,B如果收到B就知道A发送数据是没有问题的,而B也知道它接受A发送来的数据也是没有问题的,所以A发送和B接受都是没有问题的,B把应答信号发送回给A的时候A就知道B是可以接收到自己发送的信息的并且也能发送消息,A是确认B是能够收到A的信息也能够发消息给B的,B是能知道A确实发送了信息,B发送给A的信息A是否收到还不知道,所以A要发第三次消息告诉B发送的应答已经收到了,经过三次之后就知道,A和B都清楚自发送的信息对方都是收到的,其次对方发送的信息自己也能收到。所以必须经历三次握手。

image.png

 

十、HTTP session state

描述三次握手的目的是为了说明在客户端和服务器端之间建立TCP连接然后传递消息的代价比较大,而一台服务器可以开启的TCP连接需要开启Socket套接字,能开启的套接字的数量是有限的。TCP的套接字指的是一台服务器想要与另一台服务器进行通信必须要打开一个口,就像一条水管,至于水池能够接多少条水管是有上限的。最好的方法是一条水管收到后再收回来,当别人在使用的时候就把水管让给别人去使用,谁需要就给谁使用,用完马上收回。通常HOST A和HOST B之间发送一个请求给客户端要求获取一个页面发送给服务器端,服务器端把页面返回给客户端之后连接就断开了,因为要保证Socket所以TCP的数量是有上限的。

做复用会带来一个问题,相当于和网站进行交互的时候,交互的过程为一个会话,会话的含义如下,假设有客户端A和服务器B,A想要访问B的首页,B返回给A然后断开,断了以后页面会有很多商品,A浏览完商品后想要放到购物车里,又对B发送一个请求,B觉得可以后返回给A购物车新的状态,到最后A提交进行付款,然后结束。结束有两种可能,一种是A直接关闭浏览器,B在一段时间内不会收到A发送的信息就会timeout;另一种是做logout,logout相当于发请求告诉B。以上的这些过程称之为session。

A在看商品目录的时候想要购买一款牙膏,把牙膏放进了购物车,牙膏放进去以后客户端发过来请求服务器端产生响应以后连接就断开了。然后再在购物车放入一支牙刷再发送请求,B是如何知道A的购物车在哪里,它要在已经放了一支牙膏的购物车里面再放入一支牙刷,而不能新建一个购物车再放入牙刷。在整个会话过程当中,A在购物车里面先放一只牙膏,然后再放入牙刷,这是它的状态,这个状态是需要维护的。举个例子,比如坐在办公室里面收集大家的作业,作业本可能都在办公室里面,当进入办公室后,张三可以领取名为“张三”的作业本,做完就可以离开办公室。下一次张三再进来的时候,就把作业本拿出来再让张三写,问题是作业本一直在办公室但是记不住每一个人的人脸是什么样子的,如何确定来的人就是张三?一个最简单的方法就是张三第一次来的时候询问了张三的名字后发给张三一个姓名牌,上面写着张三的名字。然后张三每一次来要作业都要出示这张姓名牌,但是姓名牌是有一个有效期的,本学期结束就失效。

image.png

所以基于这些考虑,HTTP协议也是这样做的。客户端登录到服务器的时候,服务器就去创建Http Session的对象而且是位于服务器端的,里面会有key value的列表,刚开始创建的时候是空的,对象是有ID的,它会把ID通过cookie写回到客户端,这就相当于创建一个牌子,牌子上面有名字,把牌子给到客户端。当客户端发送请求过来后,需要把cookie一起发送过来,cookie相当于一个书包,每一次来了以后先检查书包里面有没有姓名牌,第二次来了以后,查看牌子上面的session ID,去维护的session会话里面去寻找与ID相对于的内容。如果放入了一管牙膏,那就在Http session里面放入一管牙膏,然后连接断掉。下一次再发送的时候cookie会带过来,里面仍然带有session ID,再去寻找相应的对象,把对象和客户端关联起来,在对象已经放了一管牙膏的基础上再放一支牙刷进去。服务器端没必要和客户端一直保持连接,因为每一次都是依靠cookie的传递来标识用户的身份。所以HTTP即使是无状态也可以记住每个客户端的工作原理。如果客户端禁用cookie,那么就会产生问题。所以平时在使用浏览器时都会弹出是否可以使用cookie,如果用户同意,它就可以把信息写入cookie,下一次进行访问的时候会带进来,浏览器能获取之前写入cookie的内容。

Cookie很重要但是也有可能产生安全漏洞,比如要在cookie里面放入一些不好的内容或者cookie返回给浏览器请求的时候在过程中被监听。Cookie的机制是在无状态的协议的基础上去记住客户端状态的功能。

image.png 

当有大量的用户进行访问的时候,每一个用户的服务器端都是按照上面提到的过程进行处理的。当用户的cookie里面是浏览器里面没有的内容,那么浏览器就会创建一个新的seesion,每一次都会把用户的session的ID通过cookie写回到客户端,所以每一个客户端都自己的HTTP session,session里面会存放每次会话时传递过来的所有内容,这时三个客户端的状态都得到了维护。

如果深想会发现cookie也是一个栈支队,里面存放session的ID。不能直接把http session的内容直接写入cookie的原因是直接写入cookie是很危险的行为。比如Http session里面放的是用户购买的内容,直接写入cookie,cookie是一个纯文本文件,客户端拿任何一个文本编辑器打开cookie就可以进行修改,所以不能让用户直接处理。对于session里面的内容必须由开发人员控制,所以对象的内容不可以写入到cookie。

 

十一、用户A、B如何创建session

image.png

创建完Session后要进行购物,创建一个新的cart对象,把cart对象的键和值放一起,键可以随便起个名字比如cart,值就是对象的地址。Cart里面放的是购买的所有东西,比如买的是书,那么就对应了bookA的数组,数组引用到bookA和bookB的两本书。然后又购买了几支笔。

用户B是购买了B和C两本书以及C和D两支笔,这样可以看出A的购物车和B的购物车的状态完全隔离。A在把请求发送到服务器端从请求里面解析出了它是属于sessionA,如过还要购买bookC,会在后面增加一个&BookC,它不会把这本书加到B的购物车里面,以上为HTTP session的工作原理,它是靠cookie实现的。

 

十二、请求与相应

真正的请求发出来以后,服务器端就会进行处理。举个例子,假设目前有www.example.com/index.html这样一个URL,URL在客户端发出请求后会GET /index.html HTTP/1.1 Host: www.example.com这样发,是相对于主机来的,主机最后会解析成一个域名,它靠域名服务器把域名解析成IP。IP就会指定一台机器,然后在timcat具体选择机器的路径,使用get方法进行获取。

请求发过来以后,服务器就会去进行处理,处理会产生响应

<html>

<head>

<title>An Example Page</title>

</head>

<body> Hello World, this is a very simple HTML document.</body>

</html>

以上为页面的内容

l HTTP/1.1200 OKHTTP/1.1 200是状态码,200就是OK,它和404、500是一样的。

l Date: Mon, 23 May 201822:38:34 GMT

响应的时间

Content-Type: text/Ftml; charset=UTF-8

产生的页面,对应的字符集是UTF-8,如果写的网页里面带中文,如果不想出现乱码,就要使用UTF-8的编码

l Content-Encoding: UTF-8

l Content-Length: 138

内容长度为138

l Last-Modified: Wed, 08 Jan 2018 23:11:55 GMT

A是客户端,B是服务器端,当一个请求发过来的时候,会产生一个响应,返回以后打开计算机会发现浏览器都会带一个cache也就是缓存。如果不想让别人发现曾经浏览过哪些网页,就可以把缓存清空,选择清空记录还是浏览器页面。Cache缓存是当用户访问页面是就会缓存住。缓存后想一个问题:当前页面缓存到了本地,下次再访问的时候,应该如何访问最节省时间?首先先去看缓存里面有没有页面,如果有页面就去取页面和字段,把时间取出来,时间取出来以后先发送给B,B会看一下Last-Modified,确认页面是在服务器端,但是Last-Modified字段时间和发过来的时间是一样的,于是B会告诉A是一样的。当A接收到消息以后,就觉得没有必要再传页面了,传输页面会导致非常的慢,于是会从本地的开始把页面加载出来。如果B认为不一致,就会整体发送页面。所以有一些页面的内容改掉,但是Last-Modified字段是没有改动的。于是在访问页面的时候,因为页面没有变动,所以会去开始里面进行加载,结果发现明明改动了浏览器的页面,但是显示的还是旧的页面,所以就要强制刷新一下。

l Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)

Server是指对方的服务器是什么

l ETag: "3f80f-1b6-3e1cb03b”

l Accept-Ranges: bytes

l Connection: close

 

十三、参考文献

. Web Applications: What are They? What of Them?

-http://www.acunetix.com/websitesecurity/web-applications/.

Web开发的发展史

- https://linux.cn/article-3166-1.html.

Web研发模式演变

- https://github.com/lifesinger/blog/issues/184-

Java应用一般架构

-https://blog.coding.net/blog/General-architecture-for-Java-applications.

Hypertext Transfer Protocol

- https://en.wikipedia.org/wiki/Hypertext Transfer Protocol.

Uniform Resource Locator

- https://en.wikipedia.org/wiki/Uniform Resource _Locator.

HttpSession原理

- https:// www.openhome.cc/Gossip/ServletJSP/BehindHttpSession.html

JAVE SOFTWARE SOLUTIONS: FOUNDATIONS OF PROGRAM DESIGN(EighthEdition)

-JOHN LEWIS(Virginia Tech), WILLIAM LOFTUS (Accenture)The Java EE 8 Tutorial - Web Applicaitons

- https:/ / javaee.github.io/tutorial/webapp001.html

PHP Documentation

- http: // www.php.net/manual/en/

Using Apache HTTP Server on Microsoft Windows,- http://httpd.apache.org/docs/2.4/en/platform/windows.html

PHP教程

- http:// www.w3school.com.cn/php/index.asp

Mac OSx配置Apache+Mysql+PHP详细教程

- http://jingyan.baidu.com/article/0aa22375b553a488cc0d64b5.html

Build CRUD Application with jQuery EasyUI

- http:// www.jeasyui.com/tutorial/app/crud.php

Web Frameworks for Python

- https:// wiki.python.org/moin/WebFrameworks

 

十四、Maven源如何改成阿里的源

Maven的配置里面可以进行修改,注意文件在不同的操作系统上面位置可能不一样,没有特意去下载Maven,直接使用系统自带的Maven把配置的源改成阿里。

Maven还是要用,因为如果缺少内容,使用Maven会非常容易,不用特意去找包在哪里,Maven会直接去下载。文件如果稍微进行修改,就会自动弹出提示。

相关文章
|
4月前
|
计算机视觉 Python
Flask学习笔记(六):基于Flask的摄像头-web显示代码(可直接使用)
这篇文章是关于如何使用Flask框架结合OpenCV库,通过电脑摄像头实现视频流在网页上的实时显示,并提供了单摄像头和多摄像头的实现方法。
174 2
Flask学习笔记(六):基于Flask的摄像头-web显示代码(可直接使用)
|
4月前
|
XML 前端开发 JavaScript
react学习笔记一:入门级小白到脚手架(create-react-app)开发项目
这篇文章是React的学习笔记,覆盖了从React的基础用法到高级特性,包括组件化、状态管理、生命周期、虚拟DOM等主题,适合React初学者参考。
135 0
react学习笔记一:入门级小白到脚手架(create-react-app)开发项目
|
3月前
【Azure App Service】PowerShell脚本批量添加IP地址到Web App允许访问IP列表中
Web App取消公网访问后,只允许特定IP能访问Web App。需要写一下段PowerShell脚本,批量添加IP到Web App的允许访问IP列表里!
|
4月前
|
文件存储 Python
Flask学习笔记(一):Flask Web框架
本文介绍了Flask Web框架的基本概念、安装方法、初始化参数、程序编写、静态文件显示和配置信息加载等基础知识。
57 0
|
4月前
|
监控 安全 Apache
构建安全的URL重定向策略:确保从Web到App平滑过渡的最佳实践
【10月更文挑战第2天】URL重定向是Web开发中常见的操作,它允许服务器根据请求的URL将用户重定向到另一个URL。然而,如果重定向过程没有得到妥善处理,可能会导致安全漏洞,如开放重定向攻击。因此,确保重定向过程的安全性至关重要。
252 0
|
6月前
|
关系型数据库 MySQL Linux
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
|
6月前
|
Shell PHP Windows
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
|
6月前
|
Linux 应用服务中间件 网络安全
【Azure 应用服务】查看App Service for Linux上部署PHP 7.4 和 8.0时,所使用的WEB服务器是什么?
【Azure 应用服务】查看App Service for Linux上部署PHP 7.4 和 8.0时,所使用的WEB服务器是什么?
|
6月前
【Azure 应用服务】通过 Web.config 开启 dotnet 应用的 stdoutLog 日志,查看App Service 产生500错误的原因
【Azure 应用服务】通过 Web.config 开启 dotnet 应用的 stdoutLog 日志,查看App Service 产生500错误的原因
|
6月前
|
Linux Python
【Azure 应用服务】Azure App Service For Linux 上实现 Python Flask Web Socket 项目 Http/Https
【Azure 应用服务】Azure App Service For Linux 上实现 Python Flask Web Socket 项目 Http/Https

热门文章

最新文章

  • 1
    MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
  • 2
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    微信小程序 app.json 配置文件解析与应用
  • 4
    【Azure App Service】基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?
  • 5
    【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 6
    【Azure Function】Function App出现System.IO.FileNotFoundException异常
  • 7
    原生鸿蒙版小艺APP接入DeepSeek-R1,为HarmonyOS应用开发注入新活力
  • 8
    【Azure Logic App】使用MySQL 新增行触发器遇见错误 :“Unknown column 'created_at' in 'order clause'”
  • 9
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 10
    阿里云APP备案流程图以及备案所需材料整理,跟着教程一步步操作