目录一、Get请求二、Post请求三、小结一、Get请求创建数据库create database web_study; use web_study;创建数据表CREATE TABLE student ( id int NOT NULL AUTO_INCREMENT, name varchar(20) NOT NULL, age int DEFAULT NULL, sex int DEFAULT NULL, grade varchar(20) DEFAULT NULL, PRIMARY KEY (id) ); CREATE TABLE user ( id int NOT NULL AUTO_INCREMENT, username varchar(20) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (id) );给数据表添加数据INSERT INTO student VALUES (1,白小黑,24,1,研二), (2,刘小辉,21,1,大四), (3,胡小静,25,0,研三), (4,漆小孟,18,0,大一), (5,林小茂,23,1,研一); INSERT INTO user VALUES (1,bxh,123456), (2,lxh,234567), (3,hxj,345678), (4,qxm,456789), (5,lxm,567890);核心代码package WebStudy import stdx.net.http.* import std.database.sql.* import std.convert.* import mariadb.cdbc.* main(): Unit { getRequest() } // 根据id获取学生信息 public func getStudentById(id: Int64): String { // 学生信息 var studentInfo // 创建驱动 let driver DriverManager.getDriver(mariadb).getOrThrow() // 数据库的链接 let url mariadb://127.0.0.1:3306 // 数据库用户 let username (username, root) // 数据库密码 let password (password, YGBG372S1) // 需要连接数据库 let database (database, web_study) // 启动驱动获取数据资源 let dataSource driver.open(url, [username, password, database]) // 创建连接 let connection dataSource.connect() let sql select * from student where id? let statement connection.prepareStatement(sql) statement.setInt64(1, id) let resultSet statement.query() while (resultSet.next()) { let id resultSet.getInt64(1) let name resultSet.getString(2) let age match (resultSet.getOrNullInt64(3)) { case Some(v) v case None 0 } let sex if(resultSet.getOrNullInt64(4) 1){男}else{女} let grade resultSet.getString(5) studentInfo 学生信息br 编号: ${id}br 姓名: ${name}br 年龄: ${age}br 性别: ${sex}br 年级: ${grade}br } // 释放资源 resultSet.close() statement.close() connection.close() dataSource.close() return studentInfo } // Get请求 public func getRequest(): Unit { let server: Server ServerBuilder().addr(127.0.0.1).port(8080).build() let studentInfo FuncHandler{ httpContext let request httpContext.request // 获取Form let form request.form let id Int64.parse(form.get(id) ?? ) let info getStudentById(id) // 设置中文编码 UTF-8 httpContext.responseBuilder.header(Content-Type, text/html;charsetUTF-8) httpContext.responseBuilder.body(info) } server.distributor.register(/studentInfo, studentInfo) println(Web服务已启动...) server.serve() }在浏览器访问http://localhost:8080/studentInfo?id1运行结果二、Post请求核心代码package WebStudy import stdx.net.http.* import std.database.sql.* import mariadb.cdbc.* main(): Unit { postRequest() } // 登录 public func login(u: String, p: String): String { var info // 创建驱动 let driver DriverManager.getDriver(mariadb).getOrThrow() // 数据库的链接 let url mariadb://127.0.0.1:3306 // 数据库用户 let username (username, root) // 数据库密码 let password (password, YGBG372S1) // 需要连接数据库 let database (database, web_study) // 启动驱动获取数据资源 let dataSource driver.open(url, [username, password, database]) // 创建连接 let connection dataSource.connect() let sql select * from user where username? and password? let statement connection.prepareStatement(sql) statement.setString(1, u) statement.setString(2, p) let resultSet statement.query() var uname var pwd while (resultSet.next()) { let id resultSet.getInt64(1) uname resultSet.getString(2) pwd resultSet.getString(3) } if (u uname p pwd) { info 登录成功, 欢迎您: ${u}! } else { info 用户名或密码错误, 登录失败 } // 释放资源 resultSet.close() statement.close() connection.close() dataSource.close() return info } // 登录的post请求 public func postRequest() { let server: Server ServerBuilder().addr(127.0.0.1).port(8080).build() let handler FuncHandler { httpContext let request httpContext.request // 获取Form let form request.form // 用户名 let username form.get(username) ?? // 密码 let password form.get(password) ?? // 设置中文编码 UTF-8 httpContext.responseBuilder.header(Content-Type, text/html;charsetUTF-8) httpContext.responseBuilder.body(login(username, password)) } server.distributor.register(/login, handler) println(Web服务已启动...) server.serve() }Html代码!DOCTYPE html html head meta charsetUTF-8 title登录表单/title /head body h2用户登录/h2 !-- 登录表单 -- form actionhttp://localhost:8080/login methodpost !-- 用户名输入框 -- div label用户名/label input typetext nameusername required /div br !-- 密码输入框 -- div label密码/label input typepassword namepassword required /div br !-- 提交按钮 -- input typesubmit value登录 /form /body /html运行结果三、小结本章为大家详细的介绍了Http请求的内容下一章为大家介绍Web架构设计的内容。最后创作不易如果大家觉得我的文章对学习仓颉Web基础编程有帮助的话就动动小手点个免费的赞吧收到的赞越多我的创作动力也会越大哦谢谢大家
跟我一起学“仓颉Web”基础编程-Http请求
目录一、Get请求二、Post请求三、小结一、Get请求创建数据库create database web_study; use web_study;创建数据表CREATE TABLE student ( id int NOT NULL AUTO_INCREMENT, name varchar(20) NOT NULL, age int DEFAULT NULL, sex int DEFAULT NULL, grade varchar(20) DEFAULT NULL, PRIMARY KEY (id) ); CREATE TABLE user ( id int NOT NULL AUTO_INCREMENT, username varchar(20) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (id) );给数据表添加数据INSERT INTO student VALUES (1,白小黑,24,1,研二), (2,刘小辉,21,1,大四), (3,胡小静,25,0,研三), (4,漆小孟,18,0,大一), (5,林小茂,23,1,研一); INSERT INTO user VALUES (1,bxh,123456), (2,lxh,234567), (3,hxj,345678), (4,qxm,456789), (5,lxm,567890);核心代码package WebStudy import stdx.net.http.* import std.database.sql.* import std.convert.* import mariadb.cdbc.* main(): Unit { getRequest() } // 根据id获取学生信息 public func getStudentById(id: Int64): String { // 学生信息 var studentInfo // 创建驱动 let driver DriverManager.getDriver(mariadb).getOrThrow() // 数据库的链接 let url mariadb://127.0.0.1:3306 // 数据库用户 let username (username, root) // 数据库密码 let password (password, YGBG372S1) // 需要连接数据库 let database (database, web_study) // 启动驱动获取数据资源 let dataSource driver.open(url, [username, password, database]) // 创建连接 let connection dataSource.connect() let sql select * from student where id? let statement connection.prepareStatement(sql) statement.setInt64(1, id) let resultSet statement.query() while (resultSet.next()) { let id resultSet.getInt64(1) let name resultSet.getString(2) let age match (resultSet.getOrNullInt64(3)) { case Some(v) v case None 0 } let sex if(resultSet.getOrNullInt64(4) 1){男}else{女} let grade resultSet.getString(5) studentInfo 学生信息br 编号: ${id}br 姓名: ${name}br 年龄: ${age}br 性别: ${sex}br 年级: ${grade}br } // 释放资源 resultSet.close() statement.close() connection.close() dataSource.close() return studentInfo } // Get请求 public func getRequest(): Unit { let server: Server ServerBuilder().addr(127.0.0.1).port(8080).build() let studentInfo FuncHandler{ httpContext let request httpContext.request // 获取Form let form request.form let id Int64.parse(form.get(id) ?? ) let info getStudentById(id) // 设置中文编码 UTF-8 httpContext.responseBuilder.header(Content-Type, text/html;charsetUTF-8) httpContext.responseBuilder.body(info) } server.distributor.register(/studentInfo, studentInfo) println(Web服务已启动...) server.serve() }在浏览器访问http://localhost:8080/studentInfo?id1运行结果二、Post请求核心代码package WebStudy import stdx.net.http.* import std.database.sql.* import mariadb.cdbc.* main(): Unit { postRequest() } // 登录 public func login(u: String, p: String): String { var info // 创建驱动 let driver DriverManager.getDriver(mariadb).getOrThrow() // 数据库的链接 let url mariadb://127.0.0.1:3306 // 数据库用户 let username (username, root) // 数据库密码 let password (password, YGBG372S1) // 需要连接数据库 let database (database, web_study) // 启动驱动获取数据资源 let dataSource driver.open(url, [username, password, database]) // 创建连接 let connection dataSource.connect() let sql select * from user where username? and password? let statement connection.prepareStatement(sql) statement.setString(1, u) statement.setString(2, p) let resultSet statement.query() var uname var pwd while (resultSet.next()) { let id resultSet.getInt64(1) uname resultSet.getString(2) pwd resultSet.getString(3) } if (u uname p pwd) { info 登录成功, 欢迎您: ${u}! } else { info 用户名或密码错误, 登录失败 } // 释放资源 resultSet.close() statement.close() connection.close() dataSource.close() return info } // 登录的post请求 public func postRequest() { let server: Server ServerBuilder().addr(127.0.0.1).port(8080).build() let handler FuncHandler { httpContext let request httpContext.request // 获取Form let form request.form // 用户名 let username form.get(username) ?? // 密码 let password form.get(password) ?? // 设置中文编码 UTF-8 httpContext.responseBuilder.header(Content-Type, text/html;charsetUTF-8) httpContext.responseBuilder.body(login(username, password)) } server.distributor.register(/login, handler) println(Web服务已启动...) server.serve() }Html代码!DOCTYPE html html head meta charsetUTF-8 title登录表单/title /head body h2用户登录/h2 !-- 登录表单 -- form actionhttp://localhost:8080/login methodpost !-- 用户名输入框 -- div label用户名/label input typetext nameusername required /div br !-- 密码输入框 -- div label密码/label input typepassword namepassword required /div br !-- 提交按钮 -- input typesubmit value登录 /form /body /html运行结果三、小结本章为大家详细的介绍了Http请求的内容下一章为大家介绍Web架构设计的内容。最后创作不易如果大家觉得我的文章对学习仓颉Web基础编程有帮助的话就动动小手点个免费的赞吧收到的赞越多我的创作动力也会越大哦谢谢大家