添加课程(maven + mybatis + tomcat)

news/2024/10/21 18:37:56

IDE:idea
框架:maven + mybatis + tomcat

具体的文件分布

需要的配置文件
maven的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.stdu</groupId><artifactId>NewClasses</artifactId><version>1.0-SNAPSHOT</version><!--    默认打包为war包--><packaging>war</packaging><dependencies><dependency><!--            导入Servlet API--><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.5</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.25</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>javax.servlet.jsp-api</artifactId><version>2.3.3</version><scope>provided</scope></dependency><!-- https://mvnrepository.com/artifact/jstl/jstl --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!-- https://mvnrepository.com/artifact/taglibs/standard --><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency></dependencies><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><build><plugins><!--            tomcat 插件--><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>80</port><!--                    <path>/</path>--></configuration></plugin></plugins></build></project>

mybatis的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><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql:///test?useSSL=false&amp;allowPublicKeyRetrieval=true"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments><mappers><package name="com.stdu"/>
<!--        <mapper resource="UserMapper.xml"/>--></mappers>
</configuration>

具体步骤

  1. 首先,创建课程实体类
package com.stdu.pojo;public class Lesson {private String lesson;private String teacher;private String place;public Lesson() {}public Lesson(String lesson, String teacher, String place) {this.lesson = lesson;this.teacher = teacher;this.place = place;}/*** 获取* @return lesson*/public String getLesson() {return lesson;}/*** 设置* @param lesson*/public void setLesson(String lesson) {this.lesson = lesson;}/*** 获取* @return teacher*/public String getTeacher() {return teacher;}/*** 设置* @param teacher*/public void setTeacher(String teacher) {this.teacher = teacher;}/*** 获取* @return place*/public String getPlace() {return place;}/*** 设置* @param place*/public void setPlace(String place) {this.place = place;}public String toString() {return "Lesson{lesson = " + lesson + ", teacher = " + teacher + ", place = " + place + "}";}
}
  1. 建立数据库表(名称尽量和java实体类的名称一致)
create table lesson(id int primary key auto_increment,lesson varchar(30),teacher varchar(30),place varchar(30)
);
  1. 建立前端html界面
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><center><!-- 添加课程的表单 --><h1>添加课程</h1>
<!--    action: 表单提交的地址--><form action="http://localhost/NewClasses/commit" method = 'post' style="text-align: center;">课程名称: <input type="text" name="lesson"><br>老师姓名: <input type="text" name="teacher"><br>上课地点: <input type="text" name="place"><br><input type="submit" value="提交"></form>
</center></body>
</html>
  1. LessonMapper接口和LessonMapper.xml
    在这两个文件中书写添加的sql语句
    深入解析 Mybatis 中 Mapper 接口的实现原理
package com.stdu.mapper;import com.stdu.pojo.Lesson;
import org.apache.ibatis.annotations.Insert;/*** LessonMapper接口用于定义与数据库中lesson表相关的数据操作方法*/
public interface LessonMapper {/*** 插入一个新的lesson记录到数据库中* * @param l Lesson对象,包含要插入的lesson、teacher和place字段* * 使用MyBatis的@Insert注解来执行插入操作,注解内的SQL语句用于指定插入的字段和值* 这里的#{lesson}, #{teacher}, #{place}是参数占位符,它们将被Lesson对象的相应属性值替换*/@Insert("insert into lesson(lesson,teacher,place) values(#{lesson},#{teacher},#{place})")void insert(Lesson l);
}

上面是直接在接口里使用MyBatis的@Insert注解来执行插入操作,也可以写在LessonMapper.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.stdu.mapper.LessonMapper"><insert id="insert" >insert into lesson(lesson,teacher,place) values(#{lesson},#{teacher},#{place})</insert></mapper>
  1. 最主要的Servlet代码
    用来获取到前端输入框的内容和连接数据库
package com.stdu.web;import com.stdu.mapper.LessonMapper;
import com.stdu.pojo.Lesson;
import com.stdu.util.SqlSessionFactoryUtils;
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 javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;// 处理"/commit"路径的HTTP请求
@WebServlet("/commit")
public class a01Servlet extends HttpServlet {/*** 处理GET请求的方法* * @param req 用于获取请求信息的HttpServletRequest对象* @param resp 用于发送响应信息的HttpServletResponse对象* @throws ServletException 如果Servlet遇到异常* @throws IOException 如果发生输入或输出异常*/@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//解决乱码问题req.setCharacterEncoding("utf-8");resp.setHeader("content-type","text/html;charset=utf-8");// 获取请求参数中的课程、教师和地点信息String l = req.getParameter("lesson");String t = req.getParameter("teacher");String p = req.getParameter("place");// 加载MyBatis配置文件String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);// 构建SqlSessionFactory对象,用于获取SqlSessionSqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession = sqlSessionFactory.openSession();// 获取LessonMapper接口的实现类对象,用于执行数据库操作LessonMapper mapper = sqlSession.getMapper(LessonMapper.class);// 插入新的课程信息到数据库,并提交事务mapper.insert(new Lesson(l,t,p));sqlSession.commit();// 向客户端发送添加成功的响应信息resp.getWriter().write("添加成功!");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//post请求也调用doGet方法this.doGet(req, resp);}
}

结果展示

查看数据库,添加成功

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

信息学奥赛复赛复习18-CSP-J2023-01小苹果-向上取整、向下取整、模拟算法

PDF文档公众号回复关键字:202410211 P9748 [CSP-J 2023] 小苹果 [题目描述] 小 Y 的桌子上放着 n 个苹果从左到右排成一列,编号为从 1 到 n。 小苞是小 Y 的好朋友,每天她都会从中拿走一些苹果。 每天在拿的时候,小苞都是从左侧第 1 个苹果开始、每隔 2 个苹果拿走 1 个苹果…

多校A层冲刺NOIP2024模拟赛10

因为有好多人没有好好打,所以我认为我垫底了。 赛时rank 2,T1 0pts,T2 100pts,T3 0pts,T4 40pts,accoder上同分,rank 9。 T1 因为没输出挂了5pts,T4 爆搜挂了5pts,乐。 update:T3没有启发式合并被卡成rank 4了 神:wang5是下一个zh0ukangyang 岛屿 唐氏的推柿子题。 …

13、Linux网络管理

网络基本概念 物理地址/逻辑地址物理地址:硬件地址,如MAC地址。 逻辑地址:软件配置地址,如IP地址。网卡作用:连接计算机和网络的硬件设备。MAC地址 (Media Access Control)定义:媒体访问控制地址,唯一标识网络设备的硬件地址。IP地址 (Internet Protocol Address)格式示…

CSS速刷 - CSS动画

作用:引起注意、愉悦感、反馈、掩饰(加载过程)transition动画 补间动画,中间过程可以计算出来。transition: width 1s:意味动画属性是width,动画时间是1秒。delay: 动画延迟几秒再开始 transition-timing-function 缓动函数:可以自己定制。关键帧动画 animationanimation…

五款实用报表工具推荐:从山海鲸到 JasperReports,哪个更适合你?

概述 在现代数据驱动的商业环境中,选择一款合适的报表工具对于企业的决策制定和数据管理至关重要。本文将为您介绍五款各具特色的免费或开源报表工具,包括国内的山海鲸报表、开源的 Superset、云端友好的 Looker Studio 以及企业级的 Zoho Analytics 和 JasperReports。本文将…

数据库运维实操优质文章文档分享(含Oracle、MySQL等) | 2024年9月刊

本文为大家整理了墨天轮数据社区2024年9月发布的优质技术文章/文档,主题涵盖Oracle、MySQL、PostgreSQL等主流数据库系统以及国产数据库的技术实操,欢迎参考。本文为大家整理了墨天轮数据社区2024年9月发布的优质技术文章/文档,主题涵盖Oracle、MySQL、PostgreSQL等主流数据…

物理理机中没有VMNet1和VMNet8虚拟网卡,网络不通

主机ping不通虚拟机网络控制面板——网络连接——网络适配器 VMware Network Adapter VMnet1 VMware Network Adapter VMnet8 如果没有这两个虚拟网卡,虚拟机的网络会出现问题 # 解决办法-恢复虚拟网卡默认设置 1、下载并打开ccleaner,ccleaner官网:CCleaner Makes Your Com…

Linux_进程理解、状态与优先级(详细版)

1.进程的概念 课本概念:程序的一个执行实例,正在执行的程序等。 内核观点:担当分配系统资源(CPU时间,内存)的实体。 其实:进程=内核的相关管理数据结构(task_struct、页表等)+程序的代码和数据task_struct:是描述进程的结构体,是Linux内核的一种数据结构,它会被装载…