基于H2数据库使用的CounterWebAppV6

前言

你好! 这是一次云应用系统开发技术,之前我们有写一个CounterWebApp的java程序,那是一个基于内存存储,在web应用重启后将重置(从零开始)。本次新版任务将选用H2文件型数据库作为计数器的存储,从而让此Web应用重启后,计数器还能继续计数。Web应用开发的技术栈限定选用Spring Boot + MyBatis + Thymeleaf实现。

所用软件及技术

软件:Eclipse、Xshell、Filezilla
其他:tomcat、jdk、H2数据库
平台:阿里云

实现

环境配置

tomcat

Eclipse:导入项目之后,点击window->preference->server->Runtime Environments->add 加入自己本地配置的tomcat(这里默认tomcat已经配好的),点击OK。

在这里插入图片描述将tomcat8添加到server并尝试启动
在这里插入图片描述启动成功tomcat8后面会出现下面这样的started字样即为成功。

在这里插入图片描述

H2数据库

网站下载H2数据库
网站:link:http://www.h2database.com/html/main.html
在这里插入图片描述
下载完成后打开你的文档,点击h2.bat
在这里插入图片描述它会自己打开浏览器并打开H2数据库操作后台
在这里插入图片描述
注:后台连接到h2数据库的时候,网页程序不可以同时连接到h2数据库。如果你需要运行程序,那么请退出后台链接。
在这里插入图片描述
配置H2DRIVERS变量。
在这里插入图片描述

代码实现

java端我们使用eclipse。
项目结构如下:
项目结构
主要文档有三个:counter.jps、User.java、JDBCUtils.java
下面分别来叙述:counter.jps

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
  pageEncoding="ISO-8859-1" import="JDBC.copy.JDBCUtils,com.cqust.User"%>

<html><body>

<%@ page language="java" %>

        <!-- 每次加载这个页面就调用一次updata方法 -->
<% JDBCUtils.updata(Integer.parseInt(JDBCUtils.selet().getCOUNTER_VALUE()));
System.out.println("++"+JDBCUtils.selet());
%>        

<h1>Maven + Spring MVC Web Project Example</h1>
<h2>Message : <%=JDBCUtils.selet().getCOUNTER_NAME()%></h2>       
<h2>COUNTER : <%= JDBCUtils.selet().getCOUNTER_VALUE()%></h2>  

</body></html>

User.java

package com.cqust;

public class User {       //存放数据
private String COUNTER_ID;
private String COUNTER_NAME;
private String COUNTER_VALUE;
@Override
public String toString() {
	return "User [COUNTER_ID=" + COUNTER_ID + ", COUNTER_NAME=" + COUNTER_NAME + ", COUNTER_VALUE=" + COUNTER_VALUE
			+ "]";
}
public String getCOUNTER_ID() {
	return COUNTER_ID;
}
public void setCOUNTER_ID(String cOUNTER_ID) {
	COUNTER_ID = cOUNTER_ID;
}
public String getCOUNTER_NAME() {
	return COUNTER_NAME;
}
public void setCOUNTER_NAME(String cOUNTER_NAME) {
	COUNTER_NAME = cOUNTER_NAME;
}
public String getCOUNTER_VALUE() {
	return COUNTER_VALUE;
}
public void setCOUNTER_VALUE(String cOUNTER_VALUE) {
	COUNTER_VALUE = cOUNTER_VALUE;
}

}

JDBCUtils.java

package JDBC.copy;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import com.cqust.User;

public class JDBCUtils {

	
	//建立程序与h2数据库的连接
	public static Connection getconnection() throws SQLException, ClassNotFoundException {

		// String url="jdbc:mysql://localhost:3306/test?characterEncoding=utf8";
		// String username="root";
		// String password="";
		// Class.forName("com.mysql.jdbc.Driver");  
		
		String url = "jdbc:h2:~/H2/test";
		String username = "sa";
		String password = "";
		Class.forName("org.h2.Driver");
//连接H2数据库
		Connection con = DriverManager.getConnection(url, username, password); //获取了连接
		System.out.println("hear+++++");
		return con;
	}
//updata是更新数据库数据方法,
	public static void updata(int s) {
		Statement stmt = null;     //
		Connection conn = null;

		try {

			conn = getconnection();
			System.out.println("hello");
			int p = s + 1;         //value数据加一
			String UpdateSql = "UPDATE COUNTERS SET COUNTER_VALUE=" + p + " WHERE COUNTER_ID=2"; //数据库语句
			int l = conn.createStatement().executeUpdate(UpdateSql);   //执行语句
		} catch (Exception e) {
			// TODO: handle exception
		} finally {
			try {
				if (stmt != null) {
					stmt.close();
					stmt = null;
				}
				if (conn != null) {
					conn.close();
					conn = null;
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
//查找数据
	public static User selet() {
		Statement stmt = null;
		Connection conn = null;

		try {
			// System.out.println("selet?");
			conn = getconnection();
			
			System.out.println(conn.toString());
			
			ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM COUNTERS where COUNTER_ID=2;");//执行的结果给rs
			
			ArrayList<User> us = new ArrayList<>();
			
			while (rs.next()) {     //
				User user = new User();
				user.setCOUNTER_ID(rs.getString("COUNTER_ID"));
				user.setCOUNTER_NAME(rs.getString("COUNTER_NAME"));
				user.setCOUNTER_VALUE(rs.getString("COUNTER_VALUE"));
				us.add(user);
				
				System.out.println(us.toString());
			}
			
			return us.get(0);
			
		} catch (Exception e) {
			return null;
			// TODO: handle exception
		} finally {
			try {
				if (stmt != null) {
					stmt.close();
					stmt = null;
				}
				if (conn != null) {
					conn.close();
					conn = null;
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}

	}
	//释放连接
	public static void release(ResultSet re, Statement sta, Connection con) {
		try {
			if (re != null) {
				re.close();
			}
			if (sta != null) {
				sta.close();
			}
			if (con != null) {
				con.close();
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
	}
}

windows端测试

浏览器后台端退出H2数据库的连接
然后run as a server得到结果。
在这里插入图片描述
我们现在再在后台连接到H2查看数据,可以看到数据一致。
在这里插入图片描述

二、 Web应用云部署

2.1 服务器环境配置

2.1.1 Java环境配置

使用X shell远程连接阿里云服务器,命令如下:

[C:\~]$ ssh Paige@47.106.80.46

第一步,使用FileZilla将JDK1.8上传到虚拟机,解压到 /usr/lib/jvm/ 目录下,然后在全局环境变量下添加 Java PATH路径,如下:

export export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64export
export JRE_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre
export PATH=$JAVA HOME/bin :$PATH

第二步,验证Java是否配置成功,如图
在这里插入图片描述

自此虚拟机Java环境配置成功。

2.1.2 Tomcat服务器配置

第一步,使用FileZilla将Tomcat安装包上传到虚拟机中,然后解压到用户目录下。

第二步,配置Tomcat的Java环境,转到如下目录

Paige@Norton:~$ cd apache-tomcat-9.0.44/bin

然后编辑startup.sh 文件,添加如下行:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:%{JAVA_HOME}/lib:%{JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export TOMCAT_HOME=/home/Paige/apache-tomcat-9.0.44

打开浏览器输入:47.106.80.46:8080 如下图:

在这里插入图片描述
自此Tomcat服务器部署成功。

2.2 部署应用

第一步将项目文件打包成 .War包,然后上传到阿里云服务器以下目录中:

/opt/tomcat/apache-tomcat-8.5.68/webapps

然后开启Tomcat服务器:
在这里插入图片描述
打开浏览器输入47.106.80.46:8080
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值