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

news2025/2/26 5:05:37

需求:

通过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 {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    @Override
    protected 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 mapper
        PUBLIC "-//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 configuration
        PUBLIC "-//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 {
    @Test
    public 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);
    }
}

项目结构如下:

 

 运行主程序:

 点击网址跳转到浏览器:

 填写信息如下:

 点击提交按钮:

 数据库中查看信息:

 

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

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

相关文章

目标识别模型两种部署形态图

目标检测预训练模型基于新数据进行微调&#xff08;训练&#xff09;之后&#xff0c;得到一个权重文件。 在日常工业、车载等需求环境下&#xff0c;需要在嵌入式移动端的软件系统中调用该模型文件进行推断测试&#xff0c;软件系统追求性能经常使用C/C进行编码实现&#xff…

Apipost接口自动化中关联关系如何配置

在接口自动化测试中&#xff0c;接口之间可能存在依赖关系&#xff0c;即某些接口的执行需要先完成其他接口的执行。为了确保测试用例的正确执行&#xff0c;我们需要在配置测试用例时考虑接口之间的依赖关系。在编写测试用例时&#xff0c;需要明确每个接口的功能和输入输出参…

注册亚马逊买家账号需要什么资料

注册亚马逊买家账号通常需要以下基本资料&#xff1a; 1、邮箱&#xff1a;您需要一个有效的邮箱&#xff0c;用于注册账号和接收与账户相关的通知。 2、密码&#xff1a;选择一个安全的密码&#xff0c;以确保您的账号信息安全。 3、姓名&#xff1a;提供您的全名或常用的姓…

高忆管理:今年来尚未有公司递表,香港SPAC市场为何“熄火”?

香港SPAC上市准则敞开之后&#xff0c;从第一家公司上市到现在已经有1年多的时刻。&#xff08;【深度】王石、李宁、卫哲争相发起建立SPAC&#xff0c;香港版“上市盲盒”会火吗&#xff1f; 界面新闻了解到&#xff0c;今年以来&#xff0c;香港SPAC并没有新动态&#xff0c;…

Linux 文件查看命令

一、cat命令 1.cat文件名&#xff0c;查看文件内容&#xff1a; 例如&#xff0c;查看main.c文件的内容&#xff1a; 2.cat < 文件名&#xff0c;往文件中写入数据&#xff0c; Ctrld是结束输入 例如&#xff0c;向文件a.txt中写入数据&#xff1a; 查看刚刚写入a.txt的…

linux网络编程-libevent

libevent介绍 1 事件驱动, 高性能, 轻量级, 专注于网络 2 源代码精炼, 易读 3 跨平台 4 支持多种I/O多路复用技术, 如epoll select poll等 5 支持I/O和信号等事件 1.libevent的安装 登录官方网站: http://libevent.org, 查看相关信息 libevent源码下载主要分2个大版本&…

Linux中使用split切割文件,按行或者文件大小切割

环境中有5G大小的文件1千多万行&#xff0c;需要按行数切割&#xff0c;使用linux中的split工具可快速实现。 示例&#xff1a;测试文件造的是100万行&#xff0c;按行数切割&#xff1a; split -d -l 80000 test.txt qiege --additional-suffix.txt -d表示切割后的文件按照…

Dex文件混淆(一):BlackObfuscator

Dex文件混淆(一)&#xff1a;BlackObfuscator 首发地址:http://zhuoyue360.com/crack/105.html 文章目录 Dex文件混淆(一)&#xff1a;BlackObfuscator1. 前言2.小试牛刀3. 参考学习1. dex2jar源码简析2. BlackObfuscator简析1. 控制流平坦化1. 控制流平坦化基本介绍 2. Dex解析…

职场新星:Java面试干货让你笑傲求职路(三)

职场新星&#xff1a;Java面试干货让你笑傲求职路 1、token 为什么存放在 redis 中&#xff1f;2、索引的底层原理是什么&#xff1f;3、Spring IOC和AOP的原理4、接口和抽象类有什么共同点和区别&#xff1f;5、为什么要使用线程池&#xff1f;直接new个线程不好吗&#xff1f…

C语言函数详解(2)

目录 函数的声明和定义 函数声明 函数定义 函数递归 什么是递归 递归的两个必要条件 练习1 练习2 练习3 练习4 函数的声明和定义 函数声明 1. 告诉编译器有一个函数叫什么&#xff0c;参数是什么&#xff0c;返回类型是什么。但是具体是不是存在&#xff0c;函数声明决定…

一键部署 Umami 统计个人网站访问数据

谈到网站统计&#xff0c;大家第一时间想到的肯定是 Google Analytics。然而&#xff0c;我们都知道 Google Analytics 会收集所有用户的信息&#xff0c;对数据没有任何控制和隐私保护。 Google Analytics 收集的指标实在是太多了&#xff0c;有很多都是不必要的&#xff0c;…

我被一位美女程序员夸了!

见字如面&#xff0c;我是军哥&#xff01; 昨天晚上&#xff0c;一位美女程序员&#xff08;为什么说是美女&#xff0c;因为我有她的简历照片&#xff09;读者主动找我聊天&#xff0c;说之前买我的《技术人核心能力》课程终于看完了&#xff0c;受益匪浅&#xff0c;并且有些…

【QT】 QSS样式表设计一文了解

很高兴在雪易的CSDN遇见你 &#xff0c;给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 本文分享QT界面设计中的QSS样式技术&#xff0c;主要从**、**和**方面展开&#xff0c;希望对各位小伙伴有所帮助&#xff01;学会了QSS样式设计&#xff0c;就可以开动你的审美&#…

【腾讯云 Cloud Studio 实战训练营】基于Python实现的快速抽奖系统

文章目录 ⭐️ Cloud Studio - 简介&#x1f31f; 操作步骤&#x1f31f; 注册Cloud Studio&#x1f31f; 创建工作空间&#x1f31f; 启动对应的开发环境 ⭐️ 抽奖系统项目介绍⭐️ 抽奖系统代码结构图⭐️ 项目基础类 - 文件检查&#x1f31f; base.py 基础类文件检查示例如…

【踩坑系列记录 】Anaconda环境将torch由cpu换成gpu

概要 很早前做过深度学习&#xff0c;配环境之类的坑由于没记录都记不清了。这段时间开始做深度学习的项目&#xff0c;于是用Anaconda给项目创建了一个环境&#xff0c;其他的环境配置很顺利&#xff0c;就是到了安装pytorch时&#xff0c;我用pytorch官网的代码一直下载的是…

法学领域的技术创新点

文章目录 一、中国法研杯-2019方案分享1 相似案件检索——法律文书的相似判断方案1 -冠军方案2——三等奖 2 裁判文书论辩挖掘 二、中国法研杯2018总述Overview of CAIL2018: Legal Judgment Prediction Competition 三、中国法研杯2022-任务概述事件检测文书校对类案检索司法摘…

对留学生来说,ChatGPT究竟是福是祸?

ChatGPT&#xff0c;“出道即顶流”。教师们防ChatGPT如洪水猛兽&#xff0c;学生们使用起来依然肆无忌惮。抄袭、作弊、代写……围绕着ChatGPT的争议不绝于耳。其堪比人类的流畅写作技能和逻辑思维&#xff0c;更引发一些人的担忧&#xff1a;ChatGPT会终结大学申请文书时代吗…

智能离子风棒联网监控静电消除器的主要功能和特点

智能离子风棒联网监控静电消除器是一种集成了智能化和网络化监控功能的设备&#xff0c;用于监测和消除静电现象。它的工作原理是通过产生大量的正负离子&#xff0c;将空气中的静电中和和消除&#xff0c;从而达到防止静电积累和放电的目的。 智能离子风棒联网监控静电消除器的…

无涯教程-Perl - last函数

描述 这不是功能。 last关键字是一个循环控制语句,该语句立即导致循环的当前迭代变为最后一个。不再执行任何语句,循环结束。如果指定了LABEL,则它将退出LABEL标识的循环,而不是当前封闭的循环。 语法 以下是此函数的简单语法- last LABELlast返回值 这不会返回任何值。 …

米家/南卡/松下/明基哪款护眼台灯最值得入手?(附护眼台灯选购技巧)

写这篇文章的时候&#xff0c;我总有种悔不当初的痛感&#xff1a;上学时只喜欢造型好看的台灯&#xff0c;总是把老妈买的护眼灯丢在一边&#xff0c;导致现在眼睛高度近视。 虽然不念书了&#xff0c;但平日使用电脑浏览信息、阅读纸质书仍是抛弃不掉的生活习惯&#xff0c;…