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日

相关文章

  • spring-boot-plus V1.4.0发布 集成用户角色权限部门管理(推荐)

    Spring Boot Plus V1.4.0发布 Spring Boot Plus是一个基于SpringBoot的项目快速开发脚手架,版本 V1.4.0 提供了用户角色权限部门管理的集成,方便用户快速搭建管理后台。 安装 首先,我们需要安装Java和Maven,参考:- Java 安装教程- Maven 安装教程 Spring Boot Plus 是通过M…

    Java 2023年5月20日
    00
  • JSP教程(一)

    下面是“JSP教程(一)”的完整攻略: JSP教程(一) 什么是JSP JSP(Java Server Pages) 是一种动态网页开发技术,它是由Servlet API的编程模型衍生而来的。JSP技术将Java代码嵌入到HTML文档中,用于动态处理网页的内容。当客户端发起请求时,JSP容器会将JSP编译为Servlet并执行。 JSP的特点 处理动态内容 …

    Java 2023年6月15日
    00
  • 深入Java万物之母Object类详情

    深入Java万物之母Object类详情 介绍 Java中的所有类都继承自Object类并拥有它的所有方法。Object类是Java程序设计中非常重要的类,其包含的方法可以适用于所有的Java对象。本篇攻略将深入探讨Object类的细节内容。 Object类的基本方法 equals(Object obj) equals方法是用于比较两个对象是否“相等”的方法。…

    Java 2023年5月26日
    00
  • Spring集成MyBatis 及Aop分页的实现代码

    Spring集成MyBatis及AOP分页的实现 1. 什么是MyBatis? MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的工作。MyBatis可以通过XML或注解的方式来配置SQL语句和映射关系。 2. Spring集成MyBatis的实现 在Spr…

    Java 2023年5月18日
    00
  • redis scan命令导致redis连接耗尽,线程上锁的解决

    下面我会详细讲解Redis Scan命令导致Redis连接耗尽和线程上锁的解决攻略。 问题背景 Redis Scan命令是Redis用于迭代key的一种方法。Scan命令的工作原理是对已有keys的集合进行分批迭代。但是,由于Scan需要通过多次迭代才能完成全部数据的扫描,所以会比较耗时和占用Redis的连接资源。 同时,当多个线程同时对Redis进行Sca…

    Java 2023年5月19日
    00
  • Java项目实战之在线考试系统的实现(系统介绍)

    Java项目实战之在线考试系统的实现(系统介绍) 系统功能介绍 在线考试系统是一款基于Java语言开发的在线考试工具,旨在为教师提供创建、管理在线考试的便利。系统主要功能包括: 用户管理:支持管理员添加、修改和删除用户,用户身份分为管理员、教师和学生三种。 考试管理:支持管理员和教师创建、修改和提供考试安排,同时学生可在规定时间内参加考试。 题库管理:管理员…

    Java 2023年5月23日
    00
  • application对象统计所有用户对某网页的访问次数

    要统计所有用户对某网页的访问次数,可以使用应用程序(Application)对象。以下是进行这项任务的攻略: 步骤一:创建计数器 要跟踪访问次数,我们需要一个计数器。使用应用程序对象中的 OnStart 事件和 Application.Lock 方法创建一个计数器并将其初始化为1。然后使用 Application.UnLock 方法解锁应用程序对象。 Sub…

    Java 2023年6月15日
    00
  • Sprint Boot @Controller使用方法详解

    @Controller是Spring Boot中的一个注解,它用于标记一个类为控制器类。在使用Spring Boot开发Web应用程序时,@Controller是非常有用的。本文将详细介绍@Controller的作用和使用方法,并提供两个示例说明。 @Controller的作用 @Controller的作用是标记一个类为控制器类。控制器类是指处理HTTP请求…

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