首页 > 其他分享 >Students-system开发步骤

Students-system开发步骤

时间:2023-06-30 12:57:22浏览次数:45  
标签:body req Students 步骤 express system html res 文件夹

项目初始化

新建文件夹,命名为students-system,注意这里的命名不得为中文或其他特殊字符

npm init -y

安装包

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

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

<!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即可打开我们的登录界面。

登录功能开发

传统的表单登录

表单登录,需要在form表单里,指定action和method,action是路径,method是方法,方法一般分为get和post

get用于保密级别低,长度短的信息(get会把请求写道url里面,受到url长度影响,信息的长度不能无限长)

post用于保密级别高(比如密码等),长度长的信息

表单登录,一定伴随着整个页面的重新跳转或刷新

在login.html,为表单指定路径和方法

 <form action='/login' method='post'>
  ·······
</form>

在后端server.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,不需要额外安装,直接配置即可

//配置body-parser
app.use(express.urlencoded({ extended:false}))
app.use(express.json())

如此,当用户输入正确账号和密码时,就可以跳转到main.html,如果错误账号或密码,则会跳转到error.html

error.html里可以配置错误信息,并且几秒后跳转回登录界面

ajax局部刷新登录

由于表单登录,伴随着整个页面的刷新,带来白屏问题,等待,跳转等问题,非常不方便,而且提示信息是在错误页面上需要跳转来,跳转去

 <form>
  ·······
</form>

form表单里的action和method此时已经无用,删除掉

引入jQuery

<script src="../node_modules/jquery/dist/jquery.js"></script>

打开localhost:3000发现,jQuery并没有被加载上,因为此时jQuery存在于服务器中的node_modules文件夹中,后端服务器的文件不允许前端随意查看,我们需要开放静态文件权限给前端,public和node_modulse两个文件夹

//开放node_modules,public两个文件夹的权限,允许用户查看
app.use('/public', express.static('public'))
app.use('/bbb', express.static('node_modules'))
//前面的/aaa,/bbb是随便起名,可以对后端文件夹配置有一定的隐藏,防止被黑

此时,前端对于jQuery的引入,也可以改成下面形式,以隐藏真实后端文件夹目录

<script src="/bbb/jquery/dist/jquery.js"></script>

配置前端jQuery ajax,向后端发起请求,如果账号密码正确,则跳转到新页面main.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的请求修改如下:

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})
  }
})

 

 

 

标签:body,req,Students,步骤,express,system,html,res,文件夹
From: https://www.cnblogs.com/BeiMuxxx/p/17516392.html

相关文章

  • Students-system开发步骤
    #Students-system开发步骤##项目初始化新建文件夹,命名为`students-system`,注意这里的命名不得为中文或其他特殊字符```shellnpminit-y```##安装包```shellnpmijqueryexpressexpress-art-template```##新建文件夹新建public,views文件夹,public下新建img,js,css文件夹,目录如......
  • Linux不同发行版安装Docker全步骤
    一、CentOS安装Docker使用安装脚本安装sudoyumupdatecurl-fsSLhttps://get.docker.com/|shsystemctlstartdockersystemctlenabledocker手动安装卸载原有版本sudoyumremovedocker\docker-client\docker-client-lat......
  • 使用Rufus制作PROXMOX VE 安装优盘的步骤
    Rufus是一个可以帮助格式化和创建可引导USB闪存盘的工具,比如USB随身碟,记忆棒等等。Rufus具有体积小,速度快,功能全面等优势,是非常理想的安装盘制作工具。Rufus当前版本为3.13,下载地址为https://rufus.ie/,推荐使用便携版。ProxmoxVE是一款套开源的虚拟化管理软件,用户可通过网页的......
  • mass mess Monolithic system 单体系统的问题
    1.单体系统太大了最首要的一个原因就是应用系统太大。而由于应用系统的过于庞大,如果仅是单体系统的话,就引发了各种各样的问题,体现在以下三个方面:1.1.系统本身业务复杂,模块众多系统随着时间的发展,业务需求越来越多。而为了满足这些需求,就导致整个系统的模块越来越多。而系统模......
  • 急速报表开发步骤
    新建字段库根据中台报表模板在该应用下创建报表页面导出页面到想要的位置设置过滤条件添加需要查询的字段到字段库创建字段映射创建数据源编写报表页面插件extendsAbstractReportFormPlugin给查询条件加默认值afterCreateNewData{}验证查询verifyQuery(ReportQueryParamquer......
  • jmeter 解决线程组bzm-Concurrency Thread Group 安装的步骤
    1.首先 安装jmeter的插件,下载地址为放到lib/ext下,重启然后option下安装插件就Concurrency 就可以   ......
  • ln -s /dev/null /root/etc/systemd/system/snapd.service
    disablesnapdduringdell-recoveryrunIt'snotneeded,thisspeedsuptherebootbetweenstagesandpreventsOOMonlowmemoryconfigsforinstaller. 这段代码用于在安装过程中禁用snapd服务,以避免在资源较小的配置上出现OOM(OutofMemory)问题。以下是代码的解......
  • Linux安装nginx详细步骤
    Linux版本:CentOS7.664位Nginx版本:1.13.7下载地址:http://nginx.org/download/nginx-1.13.7.tar.gz在安装nginx前首先要确认系统中安装了gcc、pcre-devel、zlib-devel、openssl-devel。由于我这是刚在阿里云新买的服务器,所以什么都没有安装,下面开始安装:1.安装依赖包1.//......
  • Android system & system_ext & product等分区中的build.prop文件是怎么生成的?
    Androidsystem&system_ext&product等分区中的build.prop文件是怎么生成的? #http://aospxref.com/android-13.0.0_r3/xref/build/make/core/sysprop.mk #http://aospxref.com/android-13.0.0_r3/xref/build/make/tools/buildinfo.sh buildinfo.sh脚本内容:#!/bin......
  • 关于CIFS-Common Internet File System-通用Internet文件系统
    服务器消息块(SMB)协议是一种网络文件共享协议,在MicrosoftWindows中实现的称为MicrosoftSMB协议。定义特定版本的协议的消息数据包集称为方言。通用Internet文件系统(CIFS)协议是SMB的方言。VMS、Unix的多个版本和其他操作系统上也提供SMB和CIFS。 CIFS是......