首页 > 其他分享 >前后端交互

前后端交互

时间:2023-06-30 10:22:42浏览次数:24  
标签:body 前后 req app express html 交互 文件夹

# Students-system开发步骤
## 项目初始化
新建文件夹,命名为`students-system`,注意这里的命名不得为中文或其他特殊字符
```shell npm init -y ```
## 安装包
```shell npm i jquery express express-art-template ```
## 新建文件夹
新建public,views文件夹,public下新建img,js,css文件夹,目录如下:
``` student-system     node_modules     public         img         css         js     views     package.json     ... ```
## 新建服务
在students-system文件夹下新建`server.js`
```js const express=require('express')
const app = express()
//配置express-art-template,才可以render html app.engine('html',require('express-art-template'))
app.get('/',(req,res) =>{     res.render('login.html') })
app.listen(3000,() => console.log('app listening on http://localhost:3000 ')) ```
当用户get   / 时,就会渲染login.html
开通了3000端口号。
> ip地址是链接到网络上的某台计算机 > > 端口号是识别到该计算机上的某个软件
## 新建页面
在`views`文件夹下,新建`login.html`
```html <!DOCTYPE html> <html> <head>     <title>Login</title>     <style>         body {             font-family: Arial, sans-serif;             background-color: #f4f4f4;         }
        .container {             max-width: 400px;             margin: 0 auto;             padding: 20px;             background-color: #ffffff;             box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);         }
        h1 {             text-align: center;             margin-bottom: 20px;         }
        .form-group {             margin-bottom: 20px;         }
        label {             display: block;             font-weight: bold;             margin-bottom: 5px;         }
        input[type="email"],         input[type="password"] {             width: 100%;             padding: 10px;             border: 1px solid #ccc;             border-radius: 4px;         }
        button {             display: block;             width: 100%;             padding: 10px;             background-color: #4caf50;             color: #ffffff;             border: none;             border-radius: 4px;             cursor: pointer;         }
        button:hover {             background-color: #45a049;         }
        .text-center {             text-align: center;         }     </style> </head> <body> <div class="container">     <h1>Login</h1>     <form>         <div class="form-group">             <label for="email">Email:</label>             <input type="email" id="email" name="email" required>         </div>         <div class="form-group">             <label for="password">Password:</label>             <input type="password" id="password" name="password" required>         </div>         <div class="text-center">             <button type="submit">Login</button>         </div>     </form> </div> </body> </html>

```
此时,用户在浏览器进入 [Login](http://localhost:3000/)即可打开我们的登录界面。
## 登录功能开发
### 传统的表单登录
表单登录,需要在form表单里,指定action和method,action是路径,method是方法,方法一般分为get和post
get用于保密级别低,长度短的信息(get会把请求写道url里面,受到url长度影响,信息的长度不能无限长)
post用于保密级别高(比如密码等),长度长的信息
> 表单登录,一定伴随着整个页面的重新跳转或刷新
在login.html,为表单指定路径和方法
```html  <form action='/login' method='post'>     ·······  </form> ```
在后端server.js 里配置相应请求信息
```js app.post('/login',(req,res) =>{     console.log(req.body)     if (req.body.email==='[email protected]'&&req.body.password==='admin'){         res.render('main.html')     }else{         res.render('error.html')     } }) ```
如果想要在后端使用req.body来获取post来的信息,比如在后端配置body-parser,现在新版本的express已经内置了body-parser,不需要额外安装,直接配置即可
```js //配置body-parser app.use(express.urlencoded({ extended:false})) app.use(express.json()) ```
如此,当用户输入正确账号和密码时,就可以跳转到main.html,如果错误账号或密码,则会跳转到error.html
error.html里可以配置错误信息,并且几秒后跳转回登录界面
### ajax局部刷新登录
由于表单登录,伴随着整个页面的刷新,带来白屏问题,等待,跳转等问题,非常不方便,而且提示信息是在错误页面上需要跳转来,跳转去
```html  <form>     ·······  </form> ```
form表单里的action和method此时已经无用,删除掉
引入jQuery
```html <script src="../node_modules/jquery/dist/jquery.js"></script> ```
打开localhost:3000发现,jQuery并没有被加载上,因为此时jQuery存在于服务器中的node_modules文件夹中,后端服务器的文件不允许前端随意查看,我们需要开放静态文件权限给前端,public和node_modulse两个文件夹
```js /开放node_modules,public两个文件夹的权限,允许用户查看 app.use('/public', express.static('public')) app.use('/bbb', express.static('node_modules')) //前面的/aaa,/bbb是随便起名,可以对后端文件夹配置有一定的隐藏,防止被黑 ```
此时,前端对于jQuery的引入,也可以改成下面形式,以隐藏真实后端文件夹目录
```html <script src="/bbb/jquery/dist/jquery.js"></script> ```
配置前端jQuery ajax,向后端发起请求,如果账号密码正确,则跳转到新页面main.html,如果账号密码错误,则跳出提示
```html <script>    $('form').on('submit', function(event){        event.preventDefault()//取消默认submit提交事件        $.ajax({            url:'/login',            method: 'POST',            data:{//向后端提交的数据                email: $('#email').val(),                password: $('#password').val()            },            success: function(data){//提交成功,要执行的函数,data就是后端回来的信息                console.log(data)                if (data.success){                    window.location.href='/main.html'                }else{                     alert('账号或密码错误')                }            },            error: function(){//如果受到网络原因或其他不确定因素的影响,导致请求失败执行的函数                console.log('Something went wrong')            }        })    })
</script> ```
后端对于post   /login的请求修改如下:
```js app.post('/login',(req,res) =>{     console.log(req.body)     if (req.body.email==='[email protected]'&&req.body.password==='admin'){         // res.render('main.html')         res.send({success:true})     }else{         res.send({success:false})     } }) ```
![image-20230615160632362](C:\Users\lvmen\AppData\Roaming\Typora\typora-user-images\image-20230615160632362.png)

标签:body,前后,req,app,express,html,交互,文件夹
From: https://www.cnblogs.com/tw22419/p/17515896.html

相关文章

  • python使用 flask+vue 制作前后端分离图书信息管理系统
    哈喽兄弟们,今天咱们来用Python实现一个前后端分离的图书信息管理系统。制作前后端分离图书信息管理系统的思路:1、前端部分首先,我们可以使用VueJS作为前端框架,并通过VueCLI工具进行创建和管理项目。2、后端部分后端部分我们可以采用PythonFlask框架,这个框......
  • 2023智能系统与人机交互国际会议(ISHCI2023)
    2023智能系统与人机交互国际会议(ISHCI2023)由中国湖北众科自然科学研究院主办,将于2023年10月20-21日在中国武汉召开。会议每年举办一届,成为人们在智能系统和人机交互及相关领域交流观点和经验的理想平台。我们热烈邀请您为ISHCI2023做出贡献和参与。★重要信息会议时间:2023年10......
  • 前后台分离跨域交互
    目录一、跨域问题详解1.1同源策略1.2解决跨域问题:二、CORS:跨域资源共享2.1什么是简单请求,什么是非简单请求?2.2支持跨域支持跨域,简单请求支持跨域,复杂请求2.3解决跨域三、自定义中间件,解决跨域问题common_mideleware.py自定义中间件配置文件四、django使用django-cors-header......
  • 叉车前后盲区防撞——智能AI防撞系统的核心优势
    根据新规程要求,叉车必须安装安全监控装置。如果叉车未安装安全监控装置,或者安全监控装置失效,根据《场(厂)内专用机动车辆安全技术规程》(TSG81—2022)规定,特种设备检验机构将判定该台叉车检验结论为不合格。叉车安全监控系统可以安装九盾安防的叉车智能AI影像防撞系统,它是专为工程......
  • 高德地图动态Marker和自定义弹框、交互事件、中心点跳转
    高德地图vue3使用下载NPM:npmi@amap/amap-jsapi-loader--save根据官网提示,VUE3需要改变监听模式下载npmi@vue/reactivity组件内配置初始化<scriptsetup>//开发技术vue3piniatsimport{ref}from"vue";importAMapLoaderfrom"@amap/amap-jsapi-loa......
  • spring mvc 和ajax异步交互完整实例
    spring MVC异步交互demo:1.jsp页面: 1.<%@pagelanguage="java"contentType="text/html;charset=utf-8"2."utf-8"%>3.<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/......
  • PHP 去除前后空格
    <metacharset="UTF-8"><?php$str="阅谁问群诵,水落清香浮。";echo"方括号中为原始字符串:[$str]\n";$str1=ltrim($str);echo"执行ltrim()之后的字符串:[$str1]\n";$str2=rtrim($str);echo"执行rtrim()之后的字符串:[$str2]\n"......
  • ModifyAjaxResponse,修改ajax请求返回值,前后端调试之利器
    一、概要先看图 京豆多的离谱,你的第一想法肯定是:按F12修改了网页元素没那么简单,你看支持刷新的  肯定还是假的,通过Fiddler或Wireshark等抓包工具修改了响应包;或者干脆改了本地host文件,指向了一个自己写的页面......这些都太麻烦了,如果能在当前网页上拦截这个请求,......
  • 基于前端Vue后端.NetCore Web后台管理系统通用开本框架采用前后端分离技术
    基于前端Vue后端.NetCoreWeb后台管理系统通用开本框架采用前后端分离技术,前端使用vue2.6.0,后端使用.netcore3.1,支持跨平台、多租户、支持MySQLSQLServerOracle多数据库,模块化设计,高性能,高颜值,不管是个人学习还是企业做项目都非常适合 原创文章,转载请说明出处,资料来源:http://im......
  • 前端文件上传的几种交互造轮子 | 京东云技术团队
    背景前端文件上传本来是一个常规交互操作,没什么特殊性可言,但是最近在做文件上传,需要实现截图粘贴上传,去找了下有没有什么好用的组件,网上提供的方法有,但是没找完整的组件来支持cv上传,经过了解发现可以用剪贴板功能让自己的cv实现文件上传,于是自己就整合了目前几种文件上传的交互方式......