当前位置: 首页 > news >正文

Java项目作业~ 通过html+Servlet+MyBatis,完成站点信息的添加功能

需求:

通过html+Servlet+MyBatis,完成站点信息的添加功能。

以下是站点表的建表语句:

CREATE TABLE `websites` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` char(20) NOT NULL DEFAULT '' COMMENT '站点名称',`url` varchar(255) NOT NULL DEFAULT '',`alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名',`country` char(10) NOT NULL DEFAULT '' COMMENT '国家',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

 

 

步骤:

RegisterServlet:

package com.ambow.controller;import com.ambow.dao.UserDao;
import com.ambow.pojo.User;
import com.ambow.util.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;@WebServlet("/doRegister")
public class RegisterServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.修改编码request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");//2.获取参数String name = request.getParameter("name");String url = request.getParameter("url");Integer alexa = Integer.valueOf(request.getParameter("alexa"));String country = request.getParameter("country");//3.构建对象User user = new User(name, url, alexa, country);//4.获取代理对象SqlSession sqlSession = MyBatisUtil.getSqlSession();UserDao mapper = sqlSession.getMapper(UserDao.class);//5.执行添加PrintWriter out = response.getWriter();int row = mapper.insertUser(user);sqlSession.commit();if (row != 0) {out.println("<h1 align='center'>添加成功!!!</h1>");} else {out.println("<h1 align='center'>添加失败!!!</h1>");}}
}

UserDao:

package com.ambow.dao;import com.ambow.pojo.User;public interface UserDao {int insertUser(User user);
}

User:

package com.ambow.pojo;import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
public class User {private int id;private String name;private String url;private int alexa;private String country;public User(String name, String url, int alexa, String country) {this.name = name;this.url = url;this.alexa = alexa;this.country = country;}
}

MyBatisUtil:

package com.ambow.util;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.io.InputStream;public class MyBatisUtil {//获取数据库链接public static SqlSession getSqlSession(){SqlSession sqlSession = null;//读取主配置文件String resource = "mybatis-config.xml";InputStream inputStream = null;try {inputStream = Resources.getResourceAsStream(resource);//获取SqlSessionFactory - 工厂对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//获取SqlSession - 连接对象sqlSession = sqlSessionFactory.openSession();} catch (IOException e) {e.printStackTrace();}return sqlSession;}
}

UserDao.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ambow.dao.UserDao"><insert id="insertUser">insert into websites values(null,#{name},#{url},#{alexa},#{country})</insert>
</mapper>

jdbc.properties:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://192.168.2.111:3306/db1
username=root
password=Mysql666!

mybatis-config.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><properties resource="jdbc.properties" /><settings><!--开启数据库日志检测--><setting name="logImpl" value="STDOUT_LOGGING"/></settings><typeAliases><!--<typeAlias type="com.ambow.pojo.User" alias="user"></typeAlias>--><package name="com.ambow.pojo"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><mappers><package name="com.ambow.dao"/></mappers></configuration>

 web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0">
</web-app>

register.html:

<!DOCTYPE html>
<html>
<head><title>站点信息</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link href="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/css/bootstrap.min.css" rel="stylesheet"><script src="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/js/bootstrap.bundle.min.js"></script>
</head>
<body><div class="container mt-2"><h1><b>新增站点</b></h1><br><form action="doRegister" method="post"><div class="mb-2 mt-2"><label for="webname" class="form-label">站点名称:</label><input type="text" class="form-control" id="webname" placeholder="请输入站点名称" name="webname"></div><br><div class="mb-2"><label for="url" class="form-label">站点网址:</label><input type="text" class="form-control" id="url" placeholder="请输入站点网址" name="url"></div><br><div class="mb-2 mt-2"><label for="alexa" class="form-label">站点排名:</label><input type="text" class="form-control" id="alexa" placeholder="输入站点的名次" name="alexa"></div><br><div class="mb-2 mt-2"><label for="country" class="form-label">所在国家:</label><select class="form-select" id="country" name="country"><option value="中国">中国</option><option value="美国">美国</option><option value="印度">印度</option><option value="日本">日本</option><option value="德国">德国</option></select></div><br><div class="mb-4 mt-4"><label for="sign" class="form-label">简要介绍:</label><br/><textarea cols="40" rows="10" id="sign" name="sign"></textarea></div><button type="submit" class="btn btn-primary">添加</button></form>
</div></body>
</html>

RegTest:

package com.ambow.test;import com.ambow.dao.UserDao;
import com.ambow.pojo.User;
import com.ambow.util.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;public class RegTest {@Testpublic void test01(){SqlSession sqlSession = MyBatisUtil.getSqlSession();UserDao userDao = sqlSession.getMapper(UserDao.class);User user = new User();user.setName("淘宝");user.setUrl("http://taobao.com");user.setAlexa(20);user.setCountry("中国");int i = userDao.insertUser(user);sqlSession.commit();System.out.println(i);}
}

项目结构如下:

 

 运行主程序:

 点击网址跳转到浏览器:

 填写信息如下:

 点击提交按钮:

 数据库中查看信息:

 

相关文章:

Java项目作业~ 通过html+Servlet+MyBatis,完成站点信息的添加功能

需求&#xff1a; 通过htmlServletMyBatis&#xff0c;完成站点信息的添加功能。 以下是站点表的建表语句&#xff1a; CREATE TABLE websites (id int(11) NOT NULL AUTO_INCREMENT,name char(20) NOT NULL DEFAULT COMMENT 站点名称,url varchar(255) NOT NULL DEFAULT ,…...

基于 Arduino 编写 ESP32 BLE Server 例程

测试代码如下&#xff1a; 支持 BLE 连接支持 BLE 数据传输 #include <BLEDevice.h> #include <BLEServer.h> #include <BLEUtils.h>namespace BLEServerDemo {BLEServer *pServer nullptr; BLEService *pService nullptr; BLECharacteristic *pCharacte…...

Mac环境变量配置

export HOMEBREW_NO_AUTO_UPDATEtrue关闭Homebrew自动更新&#xff0c;因为每次安装软件都要自动更新&#xff0c;特别慢export JAVA_HOME/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home配置JAVA_HOMEexport ANDROID_HOME/Users/fanpaopao/Library/Android…...

使用FTP文件传输协议的潜在风险

数据&#xff08;事实&#xff0c;数字&#xff0c;价值&#xff09;是当今业务运行的核心要素。但是&#xff0c;如果数据没有得到有效的存储和传输&#xff0c;它们就会成为阻碍业务发展的障碍。如果企业不能及时地把数据送到合适的地方&#xff0c;就会造成严重的经济损失。…...

Jtti:windows虚拟内存最小值太低如何解决

当Windows虚拟内存的最小值设置过低时&#xff0c;可能会导致系统性能下降、应用程序崩溃甚至系统不稳定。解决方法包括&#xff1a; 调整虚拟内存设置&#xff1a; 可以通过以下步骤调整虚拟内存的设置&#xff1a; 右键点击“此电脑”或“计算机”&#xff0c;选择“属性”。…...

基于微服务+Java+Spring Cloud +Vue+UniApp +MySql实现的智慧工地云平台源码

基于微服务JavaSpring Cloud VueUniApp MySql开发的智慧工地云平台源码 智慧工地概念&#xff1a; 智慧工地就是互联网建筑工地&#xff0c;是将互联网的理念和技术引入建筑工地&#xff0c;然后以物联网、移动互联网技术为基础&#xff0c;充分应用BIM、大数据、人工智能、移…...

Unity框架学习--4 Mono管理器

作用&#xff1a;使不继承MonoBehaviour的类能够开启协程&#xff0c;并且可以使用FixedUpdate、Update、LateUpdate进行每帧更新。 原理&#xff1a; 1、在场景中创建一个继承MonoBehaviour的“执行者”脚本&#xff0c;这个脚本就专门用来开启协程和监听帧更新。 2、Mono管理…...

Unity zSpace 开发

文章目录 1.下载 zSpace 开发环境1.1 zCore Unity Package1.2 zView Unity Package 2. 导入工程3. 发布设置4.功能实现4.1 用触控笔来实现对模型的拖拽&#xff1a; 5. 后续更新 1.下载 zSpace 开发环境 官网地址 1.1 zCore Unity Package zSpace 开发核心必须 1.2 zView …...

SQL注入是什么?如何防范?

什么是SQL注入&#xff1f; SQL注入&#xff08;SQLi&#xff09;是一种注入攻击&#xff0c;可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询&#xff0c;使攻击者能够完全控制Web应用程序后面的数据库服务器。攻击者可以使用SQL注入漏洞绕过应用程序安全措施&#…...

Spring kafka源码分析——消息是如何消费的

文章目录 概要端点注册创建监听容器启动监听容器消息拉取与消费小结 概要 本文主要从Spring Kafka的源码来分析&#xff0c;消费端消费流程&#xff1b;从spring容器启动到消息被拉取下来&#xff0c;再到执行客户端自定义的消费逻辑&#xff0c;大致概括为以下4个部分&#x…...

汽车电子的发展对国产32位MCU的影响

32位MCU是目前产品市场的主流&#xff0c;尤其是在汽车电子发展起来后&#xff0c;32位MCU在市场的比重迅速增涨&#xff0c;国内32位MCU厂商抓住风口&#xff0c;推出一系列汽车电子芯片从而稳定国内市场。如芯海的CS32F030系列就是主要应用汽车电子市场的32位MCU。 根据市场…...

Vue 目录结构 vite 项目

Vue3 项目常用的目录结构和每个文件的作用【通过 vite 创建的项目】 vite目录结构&#xff1a; dist // 打包后生成的文件目录 node_modules // 环境依赖 public // 公共资源目录 favicon.ico …...

TB/TM-商品详情原数据(APP)

一、接口参数说明&#xff1a; item_get_app-获得TB/TMapp商品详情原数据&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_get_app 名称类型必须描述keyString是调用key&…...

小米发布会:雷军成长故事与创新壮举,AI大模型技术引领未来,雷军探索之路之从创业波折到小米AI领航,成就高端化传奇!

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…...

春秋云镜 CVE-2021-41947

春秋云镜 CVE-2021-41947 Subrion CMS v4.2.1 存在sql注入 靶标介绍 Subrion CMS v4.2.1 存在sql注入。 启动场景 漏洞利用 exp http://localhost/panel/visual-mode.json?getaccess&typeblocks UNION ALL SELECT username, password FROM sbr421_members -- -&o…...

面试题-React(一):React是什么?它的主要特点是什么?

探索React&#xff1a;前端开发中的重要角色与主要特点 引言&#xff1a; 在现代前端开发领域&#xff0c;React已经成为最受欢迎和广泛使用的JavaScript库之一。它由Facebook开发并于2013年首次发布。随着时间的推移&#xff0c;React在开发社区中获得了强大的支持和认可。本…...

算法笔试 java 输入输出练习

在线编程题刷题训练 所有答案 scancer函数的用法 输入输出总结top&#xff01;&#xff01;&#xff01;&#xff01; java如何调用函数&#xff08;方法&#xff09; java刷acm的各种输入输出 vscode配置java环境 子函数的调用&#xff0c;直接定义一个static子函数调用就…...

5.内置构造函数

在JavaScript中最主要的数据类型有6种: 1.基本数据类型: 字符串、数值、布尔、undefined、 null 2.引用类型&#xff1a;对象 但是&#xff0c;我们会发现有些特殊情况: //普通字符串 const str andy console.1og(str.length) // 4其实字符串、数值、布尔、等基本类型也都有…...

DG故障切换及DG Broker失效配置清理

DG故障切换及DG Broker失效配置清理 DG故障强制切主DG Broker原有配置清理 DG故障强制切主 主库发生故障无法在短时间内恢复时&#xff0c;需要执行主备切换。此时由于DG Broker无法连接到主库&#xff0c;故不能通过Broker切换&#xff0c;只能手动在备库进行切主。 --断开备…...

地毯(暴力+差分两种方法)

题目描述 在 nx n 的格子上有 m 个地毯。 给出这些地毯的信息&#xff0c;问每个点被多少个地毯覆盖。 输入格式 第一行&#xff0c;两个正整数 n,m。意义如题所述。 接下来 m 行&#xff0c;每行两个坐标 (x_1,y_1) 和 (x_2,y_2)&#xff0c;代表一块地毯&#xff0c;左上…...

立体视觉入门避坑:为什么你的双目深度估计总是不准?从标定到匹配的5个常见误区

立体视觉实战指南&#xff1a;深度估计不准的五大技术陷阱与解决方案 刚完成双目标定的工程师们常会遇到这样的困境&#xff1a;明明按照教程一步步操作&#xff0c;生成的深度图却充满噪声&#xff0c;物体边缘模糊不清&#xff0c;甚至出现大面积空洞。这不是算法本身的缺陷&…...

深入解析Pydantic中的Field与Annotated:从基础到实战应用

1. Pydantic基础与Field入门 Pydantic是Python生态中数据验证和序列化的黄金标准&#xff0c;我在实际项目中用它处理过各种复杂的数据结构。它的核心优势在于利用Python类型提示来定义数据模型&#xff0c;而Field则是模型定义中最灵活的工具。 Field的基本用法很简单&#xf…...

OpenClaw批量处理技巧:Qwen3.5-9B-AWQ-4bit优化1000+图片元数据

OpenClaw批量处理技巧&#xff1a;Qwen3.5-9B-AWQ-4bit优化1000图片元数据 1. 问题背景与需求拆解 上周接手了一个摄影爱好者的委托——他积累了近5000张未经整理的旅行照片&#xff0c;需要批量处理EXIF元数据并生成描述性标签。传统手动处理预计需要8小时&#xff0c;而通过…...

FLUX.1-dev旗舰版多GPU部署:分布式推理加速方案

FLUX.1-dev旗舰版多GPU部署&#xff1a;分布式推理加速方案 1. 引言 想象一下&#xff0c;你正在处理一批高分辨率图像生成任务&#xff0c;单张GPU需要等待数分钟才能完成。随着任务量增加&#xff0c;这种等待变得难以忍受。这就是为什么我们需要多GPU部署方案——将计算负…...

【低空经济合集】2300余份低空经济+低空经济园区+低空经济数字平台+低空经济赋能方案+无人机应用方案报告及政策标准(PPT+WORD+PDF)

“十五五”期间&#xff0c;低空经济将构建以产业园为载体、数字化平台为底座、一网统飞为机制的发展新格局。通过建设共享基础设施与智能调度体系&#xff0c;推动无人机在物流、巡检等场景的“一机多用”&#xff0c;破解低空资源分散难题&#xff0c;实现空域的高效集约利用…...

5个简单技巧:免费解锁付费内容的终极Chrome扩展指南

5个简单技巧&#xff1a;免费解锁付费内容的终极Chrome扩展指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息时代&#xff0c;优质内容常常被付费墙阻隔&#xff0c;但今天我…...

即时通信|自定义基于 Netty 的二进制协议(应用层协议)+心跳检测

基于IM仿微信聊天的场景&#xff1a;TCP&#xff08;传输层&#xff09;负责&#xff1a;把字节流可靠地从A送到B自定义协议&#xff08;应用层&#xff09;负责&#xff1a;规定字节流的含义┌──────────┬──────────┬─────────────────…...

TwinCAT3梯形图编程实战:从基础功能到高级应用

1. TwinCAT3梯形图编程入门指南 第一次打开TwinCAT3开发环境时&#xff0c;很多工程师都会被它强大的功能震撼到。作为工业自动化领域的"瑞士军刀"&#xff0c;TwinCAT3的梯形图编程功能尤其适合从传统PLC转型过来的开发者。我刚开始接触时也走过不少弯路&#xff0c…...

A53安全启动基石——TrustZone在A53中的硬件实现

该文章同步至公众号OneChan 开篇&#xff1a;回答上篇进阶思考 在上一篇探讨复位启动的种种陷阱后&#xff0c;我们留下的五个进阶思考问题&#xff0c;现在结合安全启动和TrustZone的特性进行分析&#xff1a; 1. 量子不确定性对复位电路的影响 量子隧穿效应&#xff1a;在…...

TS_lib深度解析:MegaSquirt协议嵌入式串行通信实现

1. TS_lib 库深度解析&#xff1a;面向 MegaSquirt 协议的嵌入式 ECU 串行通信实现TS_lib 是一个专为嵌入式电控单元&#xff08;ECU&#xff09;与 TunerStudio 调参软件协同工作而设计的轻量级 C 库。其核心价值不在于通用串口抽象&#xff0c;而在于精确复现 MegaSquirt 固件…...