IDEA实现javaweb用户登录(增删改查)
IDEA实现javaweb用户登录(增删改查)
文章目录
- IDEA实现javaweb用户登录(增删改查)
- 前言
- 一、IDEA 软件的简单使用
- 1 创建一个普通 java 项目
- 2 新增 web 配置将项目由普通的Java项目变为 javaweb项目
- 2.1 新增 web 配置
- 2.2 新增项目文件夹
- 2.3 创建资源文件夹
- 3 配置 tomcat 服务器
- 4 测试 jsp 网页是否能运行
- 5 在 IDEA 连接mysql数据库
- 6 debug
- 二、问题
- 1 IDEA WEB项目无法继承HttpServlet问题
- 2 创建新项目后旧项目不见了
- 3 index.jsp 页面可以访问,但是ajax请求错误
- 4 通过 MyBatis 查询数据库数据时,部分值显示为null
- 5 修改了内容后需要重启tomcat
- 6 idea 增删改数据库数据,返回1但是数据库值没有变化
- ** 源码
前言
创建javaweb项目目录如下:

步骤:
- 创建一个普通 java 项目;
- 新增 web 配置将项目由普通的Java项目变为 javaweb项目;
- 配置 tomcat 服务器;
- 测试 jsp 网页是否能运行;
- 新增 config 资源文件夹;
一、IDEA 软件的简单使用
1 创建一个普通 java 项目


2 新增 web 配置将项目由普通的Java项目变为 javaweb项目
2.1 新增 web 配置
在右上角设置或file可以看见项目架构这个选项,选择→

选择moudles,点击+

选择 web,点击ok

web 配置新增成功!

2.2 新增项目文件夹
项目路径仿照 eclipse

- .jsp / js / css 文件或文件夹在web下创建
- 在 WEB-INF下创建 lib 文件夹存放 jar 包
jar 包导入:右键“Add as Library”

2.3 创建资源文件夹
- 先创建一个普通文件夹
- 右键“Mark Directory as”,选择“Sources Root”

普通文件夹和资源文件夹区别:

3 配置 tomcat 服务器
配置 tomcat 到 IDEA
输入 tomcat 路径,ok。
这里已经配置上去了

注意:选择的是 Tomcat,而不是 TomEE

接下来将项目放进去
Run-中选择Edit Configurations。在“+”中,选择Tomcat Server,选择 local 本地。


这时会发现有一个红×

这是因为当前项目没有部署到 Tomcat,点击右边的 +

选择当前项目

这样就将项目配置到 Tomcat 上了


4 测试 jsp 网页是否能运行
创建一个 jsp 页面

5 在 IDEA 连接mysql数据库
连接后可以直接在 IDEA 软件中查看 mysql 数据库的所有库/表信息,也可以进行sql语句查询!

选择 MySQL 数据库

输入用户名、密码

连接成功!!

选择数据库

这里选择 user 数据库,里面有一张表 userinfo,双击可以查看表中内容

在 console 可以输入 sql 语句运行

关闭了 console 可以在左下角打开

6 debug

使用 Step Over(F8)来逐步执行代码,每次执行一行。 使用 Step Into(F7)来进入方法内部执行。 使用 Step
Out(Shift+F8)来跳出当前方法,回到调用它的地方。 使用 Resume
Program(F9)来继续执行程序,直到下一个断点或程序结束。
debug的值都会在右侧直接显示。

若想查看集合的值,可以点击该集合,点击 view。
size为3,查到了3条数据


二、问题
1 IDEA WEB项目无法继承HttpServlet问题
jar包和资源文件配置都正常配置,但是创建 servlet 的时候无法继承HttpServlet。
解决:将 tomcat 下的 lib 文件夹中的两个jar包配置到项目中
- servlet-api.jar
- tomcat-api.jar

2 创建新项目后旧项目不见了
解决:点击file,点击 openrecent,便可找到之前的项目。
3 index.jsp 页面可以访问,但是ajax请求错误
这个地方查了半天-_-,知道问题在这里,但是改的时候又出问题。
解决:删除后面的路径

这里选择当前项目

ajax 访问路径前面不需要再加项目路径

4 通过 MyBatis 查询数据库数据时,部分值显示为null
原因:实体字段名和数据库中不一致。
解决:将实体类中名称改为和数据库一致。
(这里是直接通过注释查询)
//查询所有用户信息
@Select("SELECT USERID,USERNAME,USERPASS FROM USERINFO")List<Users> selectAllUsers();
5 修改了内容后需要重启tomcat
6 idea 增删改数据库数据,返回1但是数据库值没有变化
控制台输出的增删改信息是正确的,但是数据库数据就是没改变!!没改变!

原因:没有提交事务!!
在使用 MyBatis 进行数据库操作时,需要手动提交事务。在插入数据完成后调用 commit()
方法来提交事务。如果没有提交事务,数据库中的数据不会被实际保存。
感谢up救我狗命=_=
遇见问题:使用mybaties向数据库中插入数据,idea显示插入成功,但是数据库中并没有数据变化?
/**
* 删除用户信息
*/
@Override
public Integer deleteCheck(Integer userId) {//加载数据库工厂SqlSession session = MybatisUtil.getSessionFactory().openSession();//通过数据库工厂获取 UserMapperUserMapper userMapper = session.getMapper(UserMapper.class);//调用 UserMapper 中的方法,删除用户信息Integer i = userMapper.deleteCheck(userId);return i;
}
/**
* 删除用户信息
*/
@Override
public Integer deleteCheck(Integer userId) {//加载数据库工厂SqlSession session = MybatisUtil.getSessionFactory().openSession();//通过数据库工厂获取 UserMapperUserMapper userMapper = session.getMapper(UserMapper.class);//调用 UserMapper 中的方法,删除用户信息Integer i = userMapper.deleteCheck(userId);//提交事务if (session != null) {session.commit();session.close();}return i;
}
** 源码
IDEA实现javaweb用户登录(增删改查)
相关文章:
IDEA实现javaweb用户登录(增删改查)
IDEA实现javaweb用户登录(增删改查) 文章目录 IDEA实现javaweb用户登录(增删改查)前言一、IDEA 软件的简单使用1 创建一个普通 java 项目2 新增 web 配置将项目由普通的Java项目变为 javaweb项目2.1 新增 web 配置2.2 新增项目文件…...
JS进阶01-异步编程、跨域、懒加载
目录 一、异步编程 1.1.异步编程的基本概念与重要性 1.2.事件循环(Event Loop)机制 1.3.JavaScript异步编程的常见方式及详解 示例 1.4.异步编程的最佳实践 二、跨域 2.1.什么是跨域 2.2.怎么解决跨域 1. JSONP(JSON with Padding&…...
2012年 数模美赛 C题 犯罪克星
一、问题重述 银河犯罪建模中心(ICM)正在调查一个犯罪阴谋。调查人员已经识别出一些阴谋成员,但希望在逮捕之前确定其他成员和领导人。所有嫌疑人和可能的同谋者都受雇于同一家公司,并在一个大的综合办公室里工作。该公司正在开发…...
社区团购中 2+1 链动模式商城小程序的创新融合与发展策略研究
摘要:本文聚焦于社区团购这一新兴零售模式的发展态势,深入探讨 21 链动模式商城小程序与之融合的创新机制与应用策略。通过剖析社区团购的运营模式、优势特点以及发展现状,结合 21 链动模式商城小程序的功能特性,研究二者协同作用…...
【Go底层】time包Ticker定时器原理
目录 1、背景2、go版本3、源码解释【1】Ticker结构【2】NewTicker函数解释 4、代码示例5、总结 1、背景 说到定时器我们一般想到的库是cron,但是对于一些简单的定时任务场景,标准库time包下提供的定时器就足够我们使用,本篇文章我们就来研究…...
RoBERTa- 稳健优化的 BERT 预训练模型详解
一、引言 自 BERT(Bidirectional Encoder Representations from Transformers)问世,预训练语言模型在自然语言处理(NLP)领域掀起革命浪潮,凭卓越表现大幅刷新诸多任务成绩。RoBERTa 承继 BERT 架构&#x…...
【C++】continue语句、goto语句
1、continue 语句 作用:在循环语句中,跳过本次循环中余下尚未执行的语句。继续下一次循环。 注意:continue只能用于循环中。 示例: 代码: //continue的用法 #include<iostream> using namespace std; int ma…...
postgresql与pgvector安装与使用
环境变量修改 打开 .bashrc 文件进行编辑: vim ~/.bashrc在文件的末尾添加上面的环境变量配置 # 添加 PostgreSQL 可执行文件路径到系统 PATH export PATH/home/....../pg/postgresql-12.4/bin:$PATH# 设置 PostgreSQL 数据目录 export PGDATA/home/....../pg/pos…...
开箱即用,阿里开源!专业AI 聊天界面工具包:Ant Design X
Ant Design X是一个基于Ant Design体系的创新解决方案,为构建高效的AI交互界面提供了便利和支持。从精细的原子组件到快速集成的模型服务,Ant Design X让开发者能轻松应对各种需求。本文将结合实际场景,展示Ant Design X的功能与使用方法。 为…...
详解版本控制工作原理及优势,常见的版本控制系统对比(HelixCore、Git、SVN等)
什么是版本控制软件?从基础层面来说,版本控制(也可称版本管理)就是随时间跟踪和管理文件变更的过程,而版本控制软件有助于实现这一过程的自动化。但这仅仅是其功能及其重要性的开端。 什么是版本控制? 版本…...
Vue2 vs Vue3:核心原理与性能优化详解
Vue2 vs Vue3:核心原理与性能优化详解 Vue.js 是目前主流的前端框架之一,随着 Vue3 的发布,框架内部的实现和使用方式都发生了显著变化。本文将从 Vue2 和 Vue3 的核心实现原理出发,详细解析两者的区别,并分析 Vue3…...
Qt+GDAL属性计算软件开发记录
一.GDAL添加字段 void MainWindow::addField(QString fieldName){OGRFieldDefn * fieldDefn new OGRFieldDefn(fieldName.toStdString().c_str(), OFTInteger);ly->CreateField(fieldDefn);srand((int)time(NULL));while (true){OGRFeature * feature ly->GetNextFeat…...
在超表面中琼斯矩阵的使用
琼斯矩阵(Jones Matrix) 是一种线性代数方法,用于描述光的偏振状态和偏振变化,是偏振光学中重要的数学工具。它在 超表面理论设计 中广泛应用,尤其是在设计和调控光与物质相互作用时,例如偏振控制、相位调制…...
在macOS上从源码部署RAGFlow-0.14.1
一、macOS配置 1. macOS配置 我使用MacBook Pro,chip 是 Apple M3 Pro,Memory是18GB,macOS是 Sonoma 14.6.1。 2.安装Docker和Docker compose 官方要求 Docker ≥ 24.0.0 & Docker Compose ≥ v2.26.1,我的版本如下&#x…...
2-2-18-9 QNX系统架构之文件系统(二)
阅读前言 本文以QNX系统官方的文档英文原版资料为参考,翻译和逐句校对后,对QNX操作系统的相关概念进行了深度整理,旨在帮助想要了解QNX的读者及开发者可以快速阅读,而不必查看晦涩难懂的英文原文,这些文章将会作为一个…...
【经管数据】上市公司企业审计报告时滞数据、 年报披露时滞数据(2001-2022年)
测算方式:参考C刊《审计研究》窦笑晨(2022)老师的研究,从审计报告约定披露日期到审计报告实际披露日期之间的时间间隔。有关审计报告时滞的度量,现有研究大多采用资产负债表日与审计报告实际披露日期之间的间隔天数进行…...
debian ubuntu armbian部署asp.net core 项目 开机自启动
我本地的环境是 rk3399机器,安装armbian系统。 1.安装.net core 组件 sudo apt-get update && \sudo apt-get install -y dotnet-sdk-8.0或者安装运行库,但无法生成编译项目 sudo apt-get update && \sudo apt-get install -y aspnet…...
无人机地面遥控遥测技术与算法概述!
一、地面系统遥控检测核心技术 卫星遥测技术: 定义:卫星遥测技术是实现卫星与地面之间遥测数据传输的关键环节。 功能:传输卫星的状态信息、传感器采集的环境参数等。 关键技术: 调制解调技术:用于将数字遥测数据…...
游戏引擎学习第30天
仓库: https://gitee.com/mrxiao_com/2d_game 回顾 在这段讨论中,重点是对开发过程中出现的游戏代码进行梳理和进一步优化的过程。 工作回顾:在第30天,回顾了前一天的工作,并提到今天的任务是继续从第29天的代码开始,…...
Django drf 快速使用
1. 安装: pip install djangorestframework 2. 添加rest_framework到您的INSTALLED_APPS设置。 settings.pyINSTALLED_APPS [...rest_framework, ] 3. 定义模型 models.pyfrom django.db import modelsclass BookModel(models.Model):name models.CharField(max_length64)…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
从零开始了解数据采集(二十八)——制造业数字孪生
近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...
