需求:关于用户登录的功能。
在这个需求中,我们需要实现用户输入用户名和密码进行身份验证的过程。
包括前端页面让用户输入信息,
然后后端接收这些信息并与数据源中的用户凭据进行比对。
如果匹配成功,用户将被允许登录并访问相应的资源;
如果匹配失败,系统则会提示用户错误信息。
PHP
PHP7是PHP语言的一个重要版本,它在性能、安全性以及新特性方面都有着显著的提升。与之前的版本相比,PHP7的执行速度有了大幅的提高,这主要得益于其底层的优化和对新特性的引入。
Nginx是一个高性能的HTTP和反向代理web服务器,也提供了IMAP/POP3/SMTP服务。它的设计注重性能、稳定性和丰富的功能集。Nginx采用异步非阻塞的事件驱动模型,使其能够处理高并发连接,并且消耗的系统资源相对较少。
HTML(HyperText Markup Language,超文本标记语言)是一种用于创建网页的标准标记语言。它通过一系列标签来定义网页中的元素,如段落、标题、链接、图片等。
phpStudy 是一个PHP开发环境集成包,可用在本地电脑或者服务器上,该程序包集成最新的PHP/MySql/Apache/Nginx/Redis/FTP/Composer,一次性安装,无须配置即可使用。如果你的电脑对应的环境可以用这个程序来简单实现PHP环境的配置。
HTML代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="login.php" method="post">
<input type="text" name="username" id="user" required>
<input type="password" name="pwd" id="pwd" required>
<input type="submit">
</form>
</body>
</html>
PHP 代码:
<?php
$user=$_POST["username"];
$pwd=$_POST["pwd"];
if($user=="admin"&&$pwd=="123456")
echo("<h1>{$user} login success!</h1>");
else
echo("<h1>Logon failure</h1>")
?>
打开PHPSTUDY启动NGINX
文件目录如图所示:
然后打开浏览器输入localhost
,填写表单admin和123456运行:
登录成功显示:
Python
Python3是Python编程语言的最新版本,它带来了许多新特性和改进,使编程变得更加高效和灵活。Python3注重代码可读性和简洁的语法,允许开发者用少量的代码表达想法,非常适合快速应用开发和Web开发。
Flask是一个使用Python编写的轻量级Web应用框架。它诞生于2010年,由Armin Ronacher用Python语言基于Werkzeug工具箱编写。Flask本身相当于一个内核,它使用简单的核心,并通过扩展(extension)来增加其他功能。
HTML代码
Python代码:
#引入所需模块
from flask import Flask, render_template, request, jsonify
app=Flask(__name__) #创建一个Flask应用实例,__name__表示当前模块的名称
@app.route('/') #创建路由/
def index(): #定义index函数并指向模型文件login.html
return render_template("login.html")
VALID_USERNAME='admin' #定义账号常量
VALID_PASSWORD='123456' #定义密码常量
@app.route('/login', methods=['POST']) #定义登录路由,使用POST请求方式
def login(): #定义登录方法
#从请求中获取表单数据
username=request.form.get('username')
password=request.form.get('pwd')
#验证如果账号和密码相同则返回成功
if username==VALID_USERNAME and password==VALID_PASSWORD:
return jsonify({'status':'success','message':'Login successful.'})
else: #否则返回失败
return jsonify({'status':'error','message':'Invalid username or password.'})
#只有单独运行该文件时才运行该应用(而不是通过扩展引入)
if __name__ == '__main__':
app.run(debug=True)
- 确保你安装了 Flask。如果没有安装,请使用
pip install Flask
进行安装。 - 将上面的 Flask 代码保存为
app.py
。 - 创建一个名为
templates
的目录,并将login.html
文件放入其中。 - 在命令行中运行 Flask 应用:
python app.py
。 - 在浏览器中访问
http://127.0.0.1:5000/
,你应该能看到登录表单。 - 尝试输入用户名和密码,点击登录按钮。如果输入正确,将弹出一个提示框显示“Login successful.”。如果输入错误,将在表单下方显示错误消息。
JAVA
Tomcat 9是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,它是一个轻量级的Web应用服务器,实现了Servlet和JSP规范。Tomcat 9因其先进的技术、稳定的性能以及开源免费的特点,受到了Java开发者的广泛喜爱,并得到了许多软件开发商的认可。Tomcat 9发布于2017年,支持Servlet 4.0、JSP 2.3和EL 3.0规范,并引入了WebSocket子协议和JASPIC等新特性。
JDK 8是Oracle公司在2014年3月18日发布的一个重要版本,也是Java发展史上的一个重要里程碑。JDK 8在JVM、编译器、库以及Java语法特性等方面进行了大量改进,提高了语言的表达力和简洁性。此外,JDK 8还引入了接口新规范,允许在接口中定义默认方法和静态方法,并推出了函数式接口设计。
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
IntelliJ IDEA是JetBrains公司开发的一款Java集成开发环境(IDE)。它被誉为业界最好的Java开发工具,提供了丰富的功能,如智能代码助手、代码自动提示、重构、JavaEE支持、版本控制工具整合、代码分析以及创新的GUI设计等。
- 新建一个JAVA项目
- 在项目中右键添加框架支持
- 勾选Web Application
- 新建一个目录classes5. 打开Project Structure的Modules,并把Paths改成你项目中的classes目录
- 新增Servlet依赖
- 选择tomcat lib目录中的servlet-api包
- 在Web目录下编写index.html文件
- 在原本的main.java编写后端登录代码。(注意配置访问的注解)
- 新增运行环境 Tomcat Local (可以根据情况修改访问路径),遇到问题就fix掉。
- 访问路径与应用路径需一致,便于开发
- 点击运行后自动弹出浏览器,访问链接
http://localhost:8080/login.html
12. 访问成功
END
首先,这个需求就像是小小的挑战,它们让我有机会与PHP、Python和Java这三位“朋友”深入交流。与PHP的相处,让我感受到它作为Web开发“老手”的便利和实用。它的语法简洁明了,让我在构建Web页面时能够迅速上手,轻松实现功能。
而与Python的邂逅,则让我体验到了编程的优雅与灵活。Python就像是一位多才多艺的艺术家,无论是处理数据还是构建复杂的逻辑,它都能以简洁的代码和强大的库来助我一臂之力。与它的合作让我深刻体会到编程的乐趣和无限可能。
至于Java,它则像是一位严谨而可靠的工程师。在与Java的交往中,我感受到了它强大的性能和稳定性。虽然它的语法相对复杂一些,但正是这种严谨性让我对编程有了更深入的理解。通过Java,我学会了如何构建健壮的应用程序,并处理各种复杂的业务逻辑。
与这三位“朋友”的交流让我意识到,每种编程语言都有其独特的特点和适用场景。没有绝对的优劣之分,只有最适合的选择。我学习到了在选择编程语言时,要考虑到项目的需求、团队的技能以及开发效率等因素。
此外,这次经历也让我更加明白了编程的本质——解决问题。无论是使用哪种编程语言,我们的目标都是实现功能、满足需求。因此,重要的是掌握编程的基本思想和解决问题的方法,而不仅仅是熟练掌握某种语言的语法和特性。
总的来说,这次与PHP、Python和Java的相处让我收获颇丰。我不仅学会了如何使用这些语言来实现功能,更重要的是,我学会了如何根据不同的需求和场景选择合适的编程语言,并掌握了编程的核心思想和方法。这些经验和教训将伴随我未来的编程之路,让我更加自信和从容地面对各种挑战。