一个简单的servlet+Jsp+MySQL/Oracle程序

news2024/11/13 16:02:49

一个简单的servlet+Jsp+MySQL/oracle程序

1. 创建项目

使用 IDEA 创建一个 Maven 项目.

1.1、File -> New Project

Name:javaservlet4

Location:选择要存放的路径

Language:Java

Build system:Maven

点击Create按钮

​​​​​​​1.2、Pom.xml配置

 <dependencies>
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <!-- mysql依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.48</version>
        </dependency>
    </dependencies>

2、创建webapp目录

2.1、创建目录webapp

在 main 目录下, 和 java 目录并列, 创建一个 webapp 目录

  • src 表示源代码所在的目录。
  • main/java 表示源代码的根目录. 后续创建 .java 文件就放到这个目录中。
  • main/resources 表示项目的一些资源文件所在的目录。
  • webapp 目录就是未来部署到 Tomcat 中的一个重要的目录. 当前我们可以往 webapp 中放一些静态资源, 比如 html , css 等。

在这个目录中还有一个重要的文件 web.xml. Tomcat 找到这个文件才能正确处理 webapp 中的动态资源

2.2、创建WEB-INF 目录

在 webapp 目录内部创建一个 WEB-INF 目录,可放一些lib和web.xml

web.xml

<!DOCTYPE web-app PUBLIC

        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

        "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>

    <display-name>Archetype Created Web Application</display-name>

    <welcome-file-list>

        <welcome-file>index.jsp</welcome-file>

    </welcome-file-list>

</web-app>

2.3、创建index.jsp

在webapp目录下创建一个index.jsp文件

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="ISO-8859-1"%>

<%@page import="webhandle.servletDemo"%>
<%
    request.setCharacterEncoding("utf-8");

    String selSql = request.getParameter("selsql");

    String selectResult = "";
    if (selSql != null && !selSql.equals("")) {
        System.out.println(selSql);
        servletDemo demo = new servletDemo();
        selectResult = demo.execSelect(selSql);

    }

    String othSql = request.getParameter("othsql");
    String othResult = "";
    if (othSql != null && !othSql.equals("")) {
        System.out.println(othSql);
        servletDemo demo = new servletDemo();
        int result = demo.execOther(othSql);
        othResult = "exec:" + result;

    }
%>


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
</head>
<form action="index.jsp" method="post">
    <table>
        <tr>
            <td>
                select: <input type="text" size=50 name="selsql" />
                <input type="submit" value="execSelect" />
            </td>
            <td>
                other: <input type="text" size=50 name="othsql" />
                <input type="submit" value="execOther" />
                result:<input type="text" size=10 name="othresult" value="<%=othResult%>" />
            </td>
        </tr>
        <td>
            result: <textarea rows="10" cols="50"><%=selectResult%></textarea>
        </td>
        <tr>
        </tr>
    </table>
</form>

<body>

</body>
</html>

3、java 目录创建一个类和读取数据库配置文件

3.1、servletDemo.java

package webhandle;

import javax.servlet.annotation.WebServlet;
import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

/**
 * Description :
 *
 * @author : HMF
 * Date : Created in 23:14 2023/4/27
 * @version :
 */
@WebServlet("/servletDemo")
public class servletDemo {
    Connection conn = null;
    public servletDemo() {
        Properties props = new Properties();
        InputStream is = null;
        String jdbcDriver = "";
        String jdbCurl = "";
        try {
            String filePath = servletDemo.class.getClassLoader().getResource("app.properties").getPath();
            System.out.println(filePath);
            is = new FileInputStream(filePath);
            InputStreamReader reader = new InputStreamReader(is, "UTF-8");
            props.load(reader);

            jdbcDriver = props.getProperty("jdbcdriver");
            jdbCurl = props.getProperty("jdbcurl");
            System.out.println("jdbcDriver:" + jdbcDriver + ", jdbCurl:" + jdbCurl);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
            try {
                if (is != null) {
                    is.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
        try {
            Class.forName(jdbcDriver);
            conn = DriverManager.getConnection(jdbCurl);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public int execOther(String sql)
    {
        int re=0;
        try{
            Statement stmt=conn.createStatement();
            boolean result=stmt.execute(sql);
            re=1;
            System.out.println("+++++sql:"+sql);
            stmt.close();
            conn.close();
        }catch (Exception e){
            e.printStackTrace();
        }
        return re;
    }
    public String execSelect(String sql)
    {
        String result="";
        try{
            Statement statement=conn.createStatement();
            ResultSet rs=statement.executeQuery(sql);
            int columnCount=rs.getMetaData().getColumnCount();
            System.out.println("+++++sql:"+sql);
            while (rs.next()){
                for(int i=0;i<columnCount;i++){
                    result +="\t"+rs.getString(i+1);
                }
                System.out.println(result);
            }
            rs.close();
            statement.close();
            conn.close();
        }catch (Exception e){
            e.printStackTrace();
        }
        return result;
    }
}

3.2、数据库的配置文件app.properties

jdbcdriver=com.mysql.jdbc.Driver
jdbcurl=jdbc:mysql://10.1.1.143:3306/demo_hu?user=xxx&password=xxx&useSSL=false&useUnicode=yes&characterEncoding=UTF-8
#jdbcdriver=oracle.jdbc.driver.OracleDriver
#jdbcurl=jdbc:oracle:thin:xxx/xxx@//10.1.1.38:1521/pdb

4、打包成war包

4.1、Pom.xml引用

    <packaging>war</packaging>

    <build>

        <finalName>servletDemo</finalName>

    </build>

4.2、Maven点击package

5、执行

5.1、把war包放入Tomcat运行并访问

把war放入tomcat的webapps目录中,启动tomcat,访问

数据库操作:使用mysql或oracle时,把mysql驱动或oracle驱动放入tomcat的lib中

支持多种数据库,1、驱动放入lib中 2、数据库连接url写对

5.2、在Idea中运行

参考:一个简单的servlet应用  步骤6.2

 6、执行结果

6.1、插入

INSERT INTO `users` VALUES (10, '胡Test', 'www5@163.com', 1, 'M', '460025198109101501', '13581696800', 'SYP618183458', '军字第00111209号', '北京市朝阳区立水桥北');

 6.2、查询

 

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

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

相关文章

整数在内存中的存储:原码、反码、补码 大小端字节序

本篇博客会讲解整数在内存中的存储形式&#xff0c;以及整数二进制的3种表示形式&#xff1a;原码、反码、补码&#xff0c;还有大小端的相关知识点。相信读完本篇博客&#xff0c;大家对内存的了解会上一个台阶。 注意&#xff1a;本篇博客讨论的是整数在内存中的存储&#x…

【五一创作】【数学建模】matlab的常用函数运用(1)

文章目录 1. matlab基本常识2. 常用输入输出函数2.1 输出函数2.2 拼接函数&#xff08;字符串的合并&#xff09;2.3 输入函数 3. 求和函数3.1 向量求和3.2 矩阵求和 4. 提取矩阵元素4.1 取第x行第y列的元素4.2 取指定行或列的所有元素4.3 取指定某些行的所有元素 1. matlab基本…

MongoDB聚合操作

文章目录 一、单一聚合二、聚合管道2.1 $match / $project / $count2.2 $limit / $skip / $sort2.3 $group 分组查询2.4 $unwind 展开数组2.5 $lookup 左外连接2.6 $bucket 存储桶 三、MapReduce 提示&#xff1a;以下是本篇文章正文内容&#xff0c;MongoDB 系列学习将会持续更…

域名解析出现错误,该如何解决?

域名作为网络地址&#xff0c;是我们访问网站的必经之路&#xff0c;域名解析就是把你的域名解析成一个ip地址&#xff0c;在使用的过程中遇到域名解析文件异常也是常有的事。如果域名解析出现错误&#xff0c;该怎么解决呢&#xff1f; 一、打开网页时&#xff0c;显示域名解析…

Redis主从复制、哨兵实战

环境&#xff1a;linux centos7.x &#xff0c;虚拟机3台 版本&#xff1a;redis-6.2.6 1.下载安转redis 下载地址 wget https://download.redis.io/releases/redis-6.2.6.tar.gz解压 tar -zxvf redis-6.2.6.tar.gz移动目录 mv redis-6.2.6 /usr/local/redis编译 cd /usr/…

【GORM框架】ORM介绍、GORM简单连接和高级配置详解

博主简介&#xff1a;努力学习的大一在校计算机专业学生&#xff0c;热爱学习和创作。目前在学习和分享&#xff1a;数据结构、Go&#xff0c;Java等相关知识。博主主页&#xff1a; 是瑶瑶子啦所属专栏: GORM框架学习 近期目标&#xff1a;写好专栏的每一篇文章 目录 一、简介…

配准带尺度点云的方法汇总

如果点集之间不存在缩放关系时(即尺度相同时), 可以用经典ICP( Iterative Closest Point )方法求解得到旋转矩阵R和平移向量t来进行点集对齐。 如果存在缩放关系时&#xff0c;首先估计出点集S1和S2之间的缩放倍数s, 我们就可以利用ICP算法求解。 一、尺度因子s是两个点集中线…

HashSet底层原理

特点&#xff1a;无序、不可重复 LinkedHashSet 有序、可重复&#xff08;底层通过双向链表的方式记录元素的存储顺序&#xff09; HashSet底层数据结构是哈希表 jdk1.8之前&#xff1a;哈希表组成&#xff1a;数组 链表 jdk1.8之后&#xff1a; 数组 链表 红黑树 存储…

Flutter 组件抽取:日期(DatePicker)、时间(TimePicker)弹窗选择器【仿照】

简介 仿照《Flutter 仿ios自定义一个DatePicker》实行的日期弹窗选择器&#xff08;DatePicker&#xff09;、时间弹窗选择器&#xff08;TimePicker&#xff09; 效果 范例 class _TestPageState extends State<TestPage> {overridevoid initState() {super.initStat…

Java笔记_15(集合三)

Java笔记_15 一、创建不可变集合1.1、创建不可变集合的应用场景1.2、创建不可变集合的书写格式 二、Stream流2.1、体验Stream流2.2、Stream流的思想和获取Stream流2.3、Stream流的中间方法2.4、Stream流的终结方法2.5、收集方法collect 一、创建不可变集合 不可变集合&#xf…

山东省2023年春季高考技能测试电子技术类专业试题

注意事项 1.本试题为样题&#xff0c;实际测试试题与样题基本一致&#xff0c;不同场次试题电路装配要求会有变化&#xff0c;请考生仔细审题。 2.严禁考生私自送电&#xff0c;严禁带电操作&#xff08;通电调试除外&#xff09;。 3.考生要服从监考人员安排&#xff0c;遵…

【python入门篇】安装python教程

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; Python入门&#xff0c;本专栏主要内容为Python的基础语法&#xff0c;Python中的选择循环语句…

【GPT】AutoGPT 安装使用完全教程

欢迎关注【youcans的GPT学习笔记】原创作品&#xff0c;火热更新中** 【GPT】AutoGPT 安装使用完全教程 【GPT】AutoGPT 安装使用完全教程1. AutoGPT 介绍1.1 AutoGPT 简介1.2 AutoGPT 的工作流程 2. 下载 AutoGPT 项目源码2.1 GitHub 下载项目源码2.2 网页下载稳定版源码 3. A…

数据结构(六)—— 二叉树(1)基础

文章目录 前言一、二叉树1.1 满二叉树1.2 完全二叉树1.3 二叉搜索树1.4 平衡二叉搜索树 二、二叉树的遍历2.1 深度优先遍历&#xff08;DFS&#xff09;2.2 广度优先遍历&#xff08;BFS&#xff09; 三、二叉树的代码定义 前言 提示&#xff1a;这里可以添加本文要记录的大概…

学习路线之白银5

init background 这个阶段你就要开始正式学习c了&#xff0c; 并且了解一些常用的git操作。 C 理解程序的编译流程&#xff0c;并映射到gcc和头文件的使用中。区分头文件&#xff0c; 源码等之间的关系理解编译工具的基本使用简单掌握基本的类和函数等常见语法&#xff0c;…

MapSet

在之前数据结构的学习中&#xff0c;对于数据的查找都是基于给定一个值&#xff0c;通过和序列中的关键字比较而实现的。因此这样的查找效率一般都是更依赖于比较的次数&#xff0c;像直接遍历或二分查找都是如此。而如果我们可以不经过任何比较&#xff0c;只是通过记录的关键…

外链跳转页功能分析与实现

一个大型的正规网站&#xff0c;增加一个 外链中转页 是有必要的。合理的交互设计&#xff0c;不仅能有效保障用户体验&#xff0c;又能帮助网站收集外链数据&#xff0c;优化运营管理。 目录 1、为什么使用跳转页面来管理外链 1.1、安全性 1.2、搜索引擎优化 1.3、外链数据…

JVM学习(九):堆

一、堆&#xff08;Heap&#xff09;的概述 一个JVM实例只存在一个堆内存&#xff0c;堆也是Java内存管理的核心区域。 Java堆区在JVM启动的时候即被创建&#xff0c;其空间大小也就确定了。是JVM管理的最大一块内存空间。同时&#xff0c;堆内存的大小是可以调节的。《Java虚拟…

ESP32-硬件IIC读取温湿度传感器SHT30

简介 esp32 使用硬件I2C读取温湿度传感器SHT30,例程基于EDP-IDF-4.4.X 的I2C Simple Example 例程修改 工程创建 打开 VSCODE ,通过 查看-- 命令面板&#xff08;快捷键CtrlShiftP&#xff09;&#xff0c;打开 ESP-IDF 的例程后&#xff0c;选择 i2c_simple 例程&#xff0…

深度学习卷积神经网络学习小结

————————————————————————————————————————————— 学习小结&#xff1a; 1&#xff09;深度学习综述&#xff1b;&#xff08;2&#xff09;对卷积神经网络&#xff08;CNN&#xff09;的认识&#xff1b;&#xff08;3&#xff0…