Servlet的book图书表格实现(使用原生js实现)

作业内容:

1 建立一个book.html,实现图书入库提交

整体参考效果如下:

 数据提交后,以窗口弹出数据结果,如:

     

2  使用正则表达式验证ISBN为x-x-x格式,图书名不低于2个字符,作者不能为空,单价在【10-100】之间

3 使用ajax技术(原生js的ajax或jquery的ajax都行)。后台接收url为“bookreg“,接收前端所有数据,并拼凑成一个SQL的insert命令操作串。后端处理完数据后,向前端返回一个“新书注册成功”并在前端一个文本标签中输出。

4 说明:整个过程标准化,模块化,尽量通用化。

  Word作业中要附上完整的代码,并加以适当注释说明,每一步运行结果要截图保存。

解答过程:
HTML部分:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Book.html</title><style>table {width: 28%;margin: 0px auto; /* 让表格水平居中 */border-collapse: collapse;line-height: 35px;}th, td {border: 1px solid black;padding: 8px;text-align: left; /* 内容居中 */}#topic{text-align: center;font-size: 35px;}#change_web_color{font-size: 20px;}.sub{margin: 65% 50% ;}</style><script src="JS/book.js"></script><script src="JS/jquery-3.2.1.min.js"></script>
</head>
<body><div><form action="BookReg" name="bookForm" id="bookForm1" method="post" enctype="application/x-www-form-urlencoded"><h2 id="topic">图书入库</h2><div><button id="change_web_color">改变网页颜色</button></div><table><tr><td>ISBN:</td><td><input type="text" name="ISBN" id="ISBN" required>&nbsp;*必填</td></tr><tr><td>图书名:</td><td><input type="text" name="bookName" id="bookName" required>&nbsp;*必填</td>  </tr><tr><td>作者:</td><td><input type="text" name="writer" id="writer"></td>   </tr><tr><td>类别:</td><td><select name="type" id="type"><option value="理工科">理工科</option><option value="文科">文科</option></select></td></tr><tr><td>是否贷款:</td><td><label for=""><input type="radio" name="loan" id="loan_Y">是</label><label for=""><input type="radio" name="loan" id="loan_N">否</label></td></tr><tr><td>出版社:</td><td><input type="text" name="press" id="press"></td> </tr><tr><td>出版日期:</td><td><input type="date" name="brith" id="brith"></td></tr><tr><td>版次:</td><td><input type="text" name="edNum" id="edNum"><input type="range" id="range" name="range"></td>     </tr><tr><td>单价:</td><td><input type="text" name="money" id="money">元</td></tr><tr><td>图书介绍:</td><td><textarea name="introduction" id="introduction" cols="30" rows="10"></textarea></td>     </tr><tr><td class="sub" id="submitBtn" onclick="check()"><button>提交</button></td><td class="sub"><button>取消</button></td></tr></table></form></div>
</body></html>

JS部分:

function check() {// 检验ISBNvar isbn = document.getElementById('ISBN').value.trim();var isbnRegex = /^\d{1}-\d{1}-\d{1}$/;if (!isbnRegex.test(isbn)) {alert("ISBN格式不正确,请输入x-x-x格式的ISBN");document.getElementById('ISBN').value = "";document.getElementById('ISBN').focus();return false;// 如果 ISBN 格式不正确,直接返回,不再执行后续逻辑}// 检验图书名字var bookName = document.getElementById('bookName').value.trim();if (bookName.length <= 2) {alert("书名不能小于2个字符,书名输入错误!");document.getElementById('bookName').value = "";document.getElementById('bookName').focus();return false;}// 检验作者名var author = document.getElementById('writer').value.trim();if (author.length == 0) {alert("作者名不能为空!请重新输入!");document.getElementById('writer').value = "";return false;}// 判断单价var price = parseFloat(document.getElementById('money').value);if (price <= 10 || price >= 100) {alert("单价要处于【10-100】之间!");return false;}// 获取表单数据let formData = {ISBN: isbn,bookName: bookName,// 其他表单数据可以依次添加writer: author,type: document.getElementById('type').value,loan: document.querySelector('input[name="loan"]:checked').value,press: document.getElementById('press').value,brith: document.getElementById('brith').value,edNum: document.getElementById('edNum').value,money: price,introducation: document.getElementById('introduction').value};// 转换为 JSON 格式let jsonData = JSON.stringify(formData, null, 2);// 弹出显示alert(jsonData);
}

Servlet部分:

import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class BookReg*/
@WebServlet("/BookReg")
public class BookReg extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public BookReg() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubresponse.getWriter().append("Served at: ").append(request.getContextPath());}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");response.setContentType("text/html;Charset=UTF-8");//表的信息String ISBN = request.getParameter("ISBN").trim();//ISBNString bookName = request.getParameter("bookName").trim();//bookNameString writer = request.getParameter("writer").trim();//writerString type = request.getParameter("type").trim();//type//String loan = request.getParameter("loan").trim();//loanString loan = "";if("on".equals(request.getParameter("loan"))) {loan = "是";} else {loan = "否";}String press = request.getParameter("press").trim();//pressString brith = request.getParameter("brith").trim();//brithString edNum = request.getParameter("edNum").trim();//edNumString money = request.getParameter("money").trim();//moneyString introduction = request.getParameter("introduction").trim();//introduction//这个Java的servlet里的输出System.out.println("ISBN:"+ISBN);System.out.println("BookName:"+bookName);System.out.println("writer:"+writer);System.out.println("type:"+type);System.out.println("loan:"+loan);System.out.println("press:"+press);System.out.println("brith:"+brith);System.out.println("edNum:"+edNum);System.out.println("money:"+money);System.out.println("introduction:"+introduction);String sqlString = "insert xxx";PrintWriter out0 = response.getWriter();out0.write("新书注册成功");System.out.println("好:前后端交互成功:sql语句为:" + sqlString);out0.flush();out0.close();}}

其他的记得看哦哦!

关注我!爱吃鸡爪zi!!! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/739488.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NASA和IBM联合开发的 2022 年多时相土地分类数据集

简介 美国国家航空航天局&#xff08;NASA&#xff09;和国际商业机器公司&#xff08;IBM&#xff09;合作&#xff0c;利用大规模卫星和遥感数据&#xff0c;包括大地遥感卫星和哨兵-2 号&#xff08;HLS&#xff09;数据&#xff0c;创建了地球观测人工智能基础模型。通过奉…

光电容积脉搏波PPG信号分析笔记

1.脉搏波信号的PRV分析 各类分析参数记参数 意义 公式 参数意义 线性分析 时域分析 均值MEAN 反应RR间期的平均水平 总体标准差SDNN 评估24小时长程HRV的总体变化&#xff0c; SDNN &#xff1c; 50ms 为异常&#xff0c;SDNN&#xff1e;100ms 为正常&#xff1b;…

Python 导入Excel三维坐标数据 生成三维曲面地形图(体) 5-1、线条平滑曲面且可通过面观察柱体变化(一)

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata fro…

力扣 347前k个高频元素

class Solution { public:// 小顶堆class mycomparison {public:bool operator()(const pair<int, int>& lhs, const pair<int, int>& rhs) {return lhs.second > rhs.second;}};vector<int> topKFrequent(vector<int>& nums, int k) {…

【Java探索之旅】数据类型与变量 浮点型,字符型,布尔型,字符串型

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; Java成长日志 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、变量1.1 浮点型1.2 字符型变量1.3 布尔类型 二、字符串类型2.1 转化 &#x1f324…

建造家庭泳池位置选择尤为重要

建造家庭泳池位置选择尤为重要 在自家别墅庭院中建造一座游泳池是很多人的梦想&#xff0c;因为有泳池家人健身起来是非常方便的&#xff0c;但是建造泳池选择合适的位置显得尤为关键&#xff0c;因为合适的选址可以带来美观性及在泳池的日常使用维护中也起到了很重要的作用。…

Failed to load local image resource the server responded with a status of 500

在微信小程序里使用van-image时&#xff0c;加载本地图片加载不出来&#xff0c;报错信息如下 Failed to load local image resource /miniprogram_npm/vant/weapp/image/require(/images/xztp.jpg) the server responded with a status of 500 (HTTP/1.1 500 Internal Server …

python 通过代理服务器 连接 huggingface下载模型,并运行 pipeline

想在Python 代码中运行时下载模型&#xff0c;启动代理服务器客户端后 1. 检查能否科学上网 $ curl -x socks5h://127.0.0.1:1080 https://www.example.com <!doctype html> <html> <head><title>Example Domain</title><meta charset"…

前端css 纯数字或者字母 溢出不换行

问题&#xff1a;一个div元素盒子 宽度固定 内容是中文到达盒子宽度放不下时会自动换行&#xff0c;但是如果输入的事纯数字或者字母 会发现内容区会溢出 异常现象&#xff1a;11111超出div盒子 解决方案&#xff1a;添加属性 word-break: break-all; 原理&#xff1a;浏览器…

Spring Data的Repositories----自定义存储库实现

【Spring连载】使用Spring Data的Repositories----自定义存储库实现 一、定制单个存储库1.1 配置1.2 歧义的解决1.3 手动装配 二、自定义基础存储库 Spring Data提供了各种选项&#xff0c;可以用很少的编码来创建查询方法。但是&#xff0c;当这些选项不能满足你的需求时&…

13年老鸟整理,性能测试技术知识体系总结,从零开始打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 从个人的实践经验…

多线程案例及常用模式

一.单例模式——经典的设计模式 什么是单例模式&#xff1a;就是规定一个类只能创建一个对象&#xff0c;也就是保证某个类在程序中只存在唯一一个实例&#xff0c;而不会创建出多个实例 根据对象创建的时机不同&#xff0c;可以分为饿汉模式和懒汉模式 1.饿汉模式 在类加载…

Cloudflare Tunnel:无惧DDOS_随时随地安全访问局域网Web应用

利用此方法&#xff0c;您可以在局域网&#xff08;尤其是NAS&#xff09;上搭建的Web应用支持公网访问&#xff0c;成本低而且操作简单&#xff01; 如果这是博客的话&#xff0c;它还可以有效防止DDOS攻击&#xff01; 准备工作&#xff1a; 需要一个域名&#xff08;推荐N…

类模板和函数模板

在 C 中&#xff0c;类模板和函数模板是用来创建通用类型的模板&#xff0c;允许在编写代码时将类型参数化。这种泛型编程方式可以帮助我们编写更通用、更灵活的代码&#xff0c;提高代码的重用性和可维护性。 类模板&#xff08;Class Templates&#xff09; 类模板允许在类定…

服务端请求伪造(SSRF)

漏洞概述 服务器会根据用户提交的 URL 发送一个 HTTP 请求。使用用户指定的 URL &#xff0c; Web 应用可以获取图片或者文件资源等。典型的例子是百度识图功能。 如果没有对用户提交 URL 和远端服务器所返回的信息做合适的验证或过滤&#xff0c;就有可能存在 “ 请求伪造…

【微服务学习笔记(二)】Docker、RabbitMQ、SpringAMQP、Elasticseach

【微服务学习笔记&#xff08;二&#xff09;】Docker、RabbitMQ、SpringAMQP、Elasticseach Docker镜像和容器安装基础命令Dockerfile自定义镜像 MQ&#xff08;服务异步通讯&#xff09;RabbitMQ安装使用消息模型 SpringAMQP消息发送消息接收Work Queue 工作队列发布订阅Fano…

抖音小店精选联盟关闭了,是什么原因?怎么解决?

大家好&#xff0c;我是电商糖果 不知道大家有没有出现这样的情况&#xff0c;店铺后台的精选联盟莫名其妙的关闭了。 这里糖果就来给大家列举一下&#xff0c;出现联盟关闭的几种原因&#xff0c;以及怎么解决。 第一种&#xff1a;体验分低于70 这个是联盟关闭最常出现的情…

Python中的运算符介绍

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能…

使用Docker搭建Caddy

使用Docker搭建Caddy&#xff0c;可以快速部署一个轻量级的、支持自动HTTPS的web服务器。下面将分别介绍使用Docker CLI和Docker Compose两种方式来搭建Caddy服务器&#xff0c;并给出配置文件示例以及参数解释。 使用Docker CLI搭建Caddy 首先&#xff0c;确保你的系统上已安…

VR全景在智慧园区中的应用

VR全景如今以及广泛的应用于生产制造业、零售、展厅、房产等领域&#xff0c;如今720云VR全景更是在智慧园区的建设中&#xff0c;以其独特的优势&#xff0c;发挥着越来越重要的作用。VR全景作为打造智慧园区的重要角色和呈现方式已经受到了越来越多智慧园区企业的选择和应用。…