java servlet结合mysql搭建java web开发环境

概述

Java Web开发中,结合MySQL数据库使用Java Servlet技术是非常常见的一种方式。本文将给出完整的攻略,演示如何在本地环境下搭建Java Servlet和MySQL结合使用的开发环境,并提供两个示例进行说明。

环境准备

在开始之前需要安装以下组件:

  • JDK
  • Tomcat
  • MySQL

配置Tomcat

  1. 下载Tomcat并解压到本地目录(假设是在/usr/local目录下):

$ tar xvzf apache-tomcat-8.5.x.tar.gz

  1. 进入Tomcat配置目录并修改配置文件:

$ cd /usr/local/apache-tomcat-8.5.x/conf
$ vim server.xml

<Server>标签内添加以下内容:

<GlobalNamingResources>
<Resource name="jdbc/mysql" auth="Container"
type="javax.sql.DataSource"
username="root"
password="root"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf8"/>
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
</Engine>
<Context path="/test" docBase="/usr/local/apache-tomcat-8.5.x/webapps/test">
<ResourceLink name="jdbc/mysql" global="jdbc/mysql" type="javax.sql.DataSource"/>
</Context>
</Service>

这段内容将在Tomcat中配置一个名为jdbc/mysql的全局数据源,并在/test上下文路径下进行引用。

配置MySQL

进入MySQL的配置文件目录,打开my.cnf文件并添加以下内容:

[mysql]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

重启MySQL服务以使更改生效:

$ /usr/local/mysql/support-files/mysql.server restart

编写Servlet代码

以下为两个示例,包含了Servlet代码和MySQL的操作:

示例1:插入数据

定义一个InsertServlet用于向MySQL中插入数据:

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
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 javax.sql.DataSource;
import org.apache.tomcat.jdbc.pool.PoolProperties;

@WebServlet("/insert")
public class InsertServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = request.getParameter("name");
        String gender = request.getParameter("gender");

        try {
            Connection conn = getConnection();
            PreparedStatement ps = conn.prepareStatement("INSERT INTO user (name, gender) VALUES (?, ?)");
            ps.setString(1, name);
            ps.setString(2, gender);
            ps.executeUpdate();
            ps.close();
            conn.close();
            response.getWriter().println("Insert successfully!");
        } catch (SQLException e) {
            e.printStackTrace();
            response.sendError(500);
        }
    }

    private Connection getConnection() throws SQLException {
        DataSource ds = getDataSource();
        return ds.getConnection();
    }

    private DataSource getDataSource() {
        PoolProperties p = new PoolProperties();
        p.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8");
        p.setDriverClassName("com.mysql.jdbc.Driver");
        p.setUsername("root");
        p.setPassword("root");

        org.apache.tomcat.jdbc.pool.DataSource ds = new org.apache.tomcat.jdbc.pool.DataSource();
        ds.setPoolProperties(p);
        return ds;
    }
}

以上代码涉及Servlet的处理、MySQL的数据插入操作和Tomcat的数据源配置。其中,getDataSource()方法返回了一个Tomcat连接池的数据源。

示例2:查询数据

定义一个SelectServlet用于从MySQL中查询数据:

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
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 javax.sql.DataSource;
import org.apache.tomcat.jdbc.pool.PoolProperties;

@WebServlet("/select")
public class SelectServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            Connection conn = getConnection();
            PreparedStatement ps = conn.prepareStatement("SELECT * FROM user");
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                response.getWriter().println(rs.getInt("id") + ", " + rs.getString("name") + ", " + rs.getString("gender"));
            }
            rs.close();
            ps.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
            response.sendError(500);
        }
    }

    private Connection getConnection() throws SQLException {
        DataSource ds = getDataSource();
        return ds.getConnection();
    }

    private DataSource getDataSource() {
        PoolProperties p = new PoolProperties();
        p.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8");
        p.setDriverClassName("com.mysql.jdbc.Driver");
        p.setUsername("root");
        p.setPassword("root");

        org.apache.tomcat.jdbc.pool.DataSource ds = new org.apache.tomcat.jdbc.pool.DataSource();
        ds.setPoolProperties(p);
        return ds;
    }
}

以上代码涉及Servlet的处理、MySQL的数据查询操作和Tomcat的数据源配置。其中,getDataSource()方法返回了一个Tomcat连接池的数据源。

运行和测试

  1. 将示例代码保存到Tomcat的/webapps/test/WEB-INF/classes目录下,然后启动Tomcat服务:

$ /usr/local/apache-tomcat-8.5.x/bin/startup.sh

  1. 分别在浏览器中访问以下URL,测试Servlet代码是否正常:

  2. localhost:8080/test/insert?name=Tom&gender=Male

  3. localhost:8080/test/select

结论

本文给出了Java Servlet结合MySQL的完整攻略,并提供了两个例子进行说明。这些操作包括Tomcat的配置、MySQL的配置和Servlet代码的编写。在这个过程中,我们还使用了Tomcat的连接池来实现数据源的配置。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java servlet结合mysql搭建java web开发环境 - Python技术站

(0)
上一篇 2023年6月16日
下一篇 2023年6月16日

相关文章

  • 什么是反射?

    反射 反射是在运行时动态地发现和使用类的信息的机制。Java 反射机制提供了程序在运行时拥有访问并操作任何一个对象、变量、方法的能力。 Java 反射最初被设计出来是为了支持类浏览器这样的工具。在此基础上,JavaBean等技术也得以广泛应用。 反射的使用 在Java中,使用反射需要经过如下基本步骤:1. 获取需要使用的类的Class对象;2. 根据Clas…

    Java 2023年5月10日
    00
  • Java点餐小程序之黑心商人

    Java点餐小程序之黑心商人完整攻略 简介 这是一款基于Java实现的点餐小程序,允许用户查看、点餐、结算等操作,并包含了“黑心商人”功能,允许商家设置并收取“加急费”、“删单费”等不合理费用。作为一名程序员,我们应该注重代码的质量,不容忍这种黑心商业行为,本文将详细讲解该小程序的实现过程,并提供几条防止黑心商户的方法。 整体思路 该小程序主要分为前台用户界…

    Java 2023年5月23日
    00
  • 详解Java的四种引用方式及其区别

    详解Java的四种引用方式及其区别 在Java中,引用通常被用来表示一个对象实例或者一个对象实例的地址信息,Java提供了四种引用方式,分别是强引用、软引用、弱引用和虚引用。本文将详细讲解这四种引用方式以及它们之间的区别。 1. 强引用(Strong Reference) 在Java中,最普通的引用是强引用(Strong Reference),它也是默认的引…

    Java 2023年5月26日
    00
  • 详解重试框架Spring retry实践

    详解重试框架Spring Retry实践 Spring Retry是一个用于在Spring应用程序中执行重试逻辑的框架。它提供了很多有用的功能,例如定时重试、重试策略的配置、异常处理等。在这篇文章中,我们将为您介绍Spring Retry的基本概念和使用方法,并提供一些示例来帮助您更好地了解Spring Retry的使用。 引入Spring Retry 在使…

    Java 2023年5月19日
    00
  • Netty分布式固定长度解码器实现原理剖析

    Netty分布式固定长度解码器实现原理剖析 什么是Netty分布式固定长度解码器 Netty是一个开源、高性能、异步事件驱动的网络应用框架。在Netty中,解码器是十分重要的一部分,它们负责将字节流解析为Java对象。 Netty分布式固定长度解码器,顾名思义,是一种针对分布式系统应用的固定长度数据解码器。 Netty分布式固定长度解码器的实现原理 Nett…

    Java 2023年5月20日
    00
  • Redis分布式锁这样用,有坑?

    背景 在微服务项目中,大家都会去使用到分布式锁,一般也是使用Redis去实现,使用RedisTemplate、Redisson、RedisLockRegistry都行,公司的项目中,使用的是Redisson,一般你会怎么用?看看下面的代码,是不是就是你的写法 String lockKey = “forlan_lock_” + serviceId; RLock…

    Java 2023年4月17日
    00
  • java maven进阶教学

    Java Maven进阶教学攻略 Maven 是 Java 中最流行的构建工具之一,它可以自动化地管理和构建项目的依赖关系,允许开发人员专注于业务代码的开发。 安装 Maven Maven 的安装十分简单,只要在官网下载对应操作系统的二进制包,解压即可。详细步骤参考 Maven 安装指南: # 下载 Maven $ wget https://www-us.a…

    Java 2023年5月20日
    00
  • spring jpa集成依赖的环境准备及实体类仓库编写教程

    一、环境准备1. 项目环境要求要使用Spring JPA集成依赖,需要确保项目中有以下环境准备:- JDK 1.8及以上版本- Maven管理工具(或者其他构建工具)- Spring Boot框架环境 集成依赖导入 在pom.xml配置文件中加入以下依赖: <dependency> <groupId>org.springframewo…

    Java 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部