这里安装的是java14。其他版本可以用yum search openjdk查询。
//yum自动安装,配置jdk,很舒服。
yum install -y java-latest-openjdk-devel
在java-s目录下
javac -d xxx/bin xxx/src/com/test/Hello.java
-d表示编译之后的.class文件存放位置
后面接.java文件
java -cp xxx/bin com.test.Hello
-cp表示类路径,也就是.class文件存在的位置,注意是com的父目录。
后面接全限定类名(不用加.java或者.class,不然报错)
注:由于利用yum安装tomcat会覆盖之前的jdk版本,所以采用手动安装。
踩坑效果如下 :
我用了之后又把tomcat和java卸载,重新安装,太麻烦了
#利用yum安装
yum install -y tomcat
#再安装两个插件包
yum install tomcat-webapps tomcat-admin-webapps
这里安装的是tomcat9,需要其他版本可以去tomcat官网
#利用wget
wget https://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.34/bin/apache-tomcat-9.0.34.tar.gz
#移动文件
mv apache-tomcat-9.0.34 /usr/local
可以查看如下两个链接
如何查看JAVA_HOME
环境变量介绍
我这里的JAVA_HOME是
/usr/lib/jvm/java-14-openjdk-14.0.0.36-3.rolling.el7.x86_64
把它加入到环境变量中
echo "JAVA_HOME:/usr/lib/jvm/java-14-openjdk-14.0.0.36-3.rolling.el7.x86_64" >> /etc/environment
#使文件生效
source /etc/environment
#可利用echo $JAVA_HOME查看
echo $JAVA_HOME
同理,添加TOMCAT_HOME和CATALINA_HOME
echo "TOMCAT_HOME:/usr/local/apache-tomcat-9.0.34" >> /etc/environment
echo "CATALINA_HOME:/usr/local/apache-tomcat-9.0.34" >> /etc/environment
可以如下链接
tomcat启动太慢问题
现象:./startup tomcat的8005端口很慢才起来,如果这个端口不起来,会无法访问tomcat8080端口,而且也无法shutdown
分析:查看$TOMCAT_HOME/los/catalina文件,可以看到tomcat计算随机数的时候阻塞了
#解决:用find 找到java.security文件
find / -name java.security
vim /usr/lib/jvm/java-14-openjdk-14.0.0.36-3.rolling.el7.x86_64/conf/security/java.security
#修改
securerandom.source=file:/dev/./urandom
#强制关闭tomcat
killall java
#重新启动tomcat即可
create table book(
book_id int auto_increment,
title varchar(20),
author varchar(20),
publisher varchar(20),
price int,
primary key (book_id)
);
【Navicat报错】2003 - Can’t connect to MySQL server on … (10061 “Unknown error”)
后面,我尝试在mysql服务器上直接创建表,但是还是报错
【mysql报错】ERROR 2013 (HY000): Lost connection to MySQL server during query
这个错误,查看日志文件得知,是由于之前删除了ibdata和ib_logfile导致数据库数据和日志的不一致性所导致的。尝试过各种办法,但最终放弃。
选择重新安装mysql。
可以先备份数据库的记录。
删除datadir:/data/mysql目录
rm -rf /data/mysql
mkdir -p /data/mysql
cd /usr/local/mysql/bin
#重新初始化mysql
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
接着就正常了,表也可以正常创建了
如下图,蓝色的为目录
book为项目目录:
jsp存放.jsp文件
src存放.java源文件。源码可以不用放上tomcat,只需要放.class文件就好了
index.html为普通的页面
WEB-INF存放web项目私有属性,外部不可访问
classes存放.java文件编译之后的.class文件
lib存放项目需要用到的第三方包。这里我放了servlet-api和mysql-driver
web.xml为web项目配置文件
cd $TOMCAT_HOME/webapps/book
编译.java,并放到classes文件夹中
javac -cp WEB-INF/lib/servlet-api.jar -d WEB-INF/classes src/com/beans/BookBean.java src/com/beans/BookDAO.java src/com/control/BookInsertServlet.java src/com/control/BookQueryServlet.java src/com/util/JdbcConnectionUtil.java
ps:部分代码见附录
编译过后记得需要重新启动tomcat
之后在浏览器就可以访问了
ip:8080/book/xxxx
如果需要debug,可以查看日志文件
$TOMCAT_HOME/logs/catalina.out该文件相当于保存了控制台输出
jsp文件不需要手动编译,在浏览器访问的时候,由容器生成name_jsp.java文件,再生成name_jsp.class文件,存放在
$TOMCAT_HOME/work/Catalina/localhost/项目名/org/apache/jsp/项目目录/
文件夹下
nginx反向代理1
nginx反向代理2
location ~\.jsp$ {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8080/book/jsp$request_uri;
}
利用ntpdate
yum install -y ntpdate
ntp常用服务器
中国国家授时中心:210.72.145.44
NTP服务器(上海) :ntp.api.bz
美国:time.nist.gov
复旦:ntp.fudan.edu.cn
微软公司授时主机(美国) :time.windows.com
台警大授时中心(台湾):asia.pool.ntp.org
例如:
ntpdate -u ntp.api.bz
ntpdate -u 210.72.145.44
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="com.beans.BookBean" %>
<%@ page import="com.beans.BookDAO" %>
<html>
<body>
<p>这个是用tomcat+jsp实现的页面</p>
<table width=\"500\" border=\"1\">
<tr>
<th width=\"100\">书号</th>
<th width=\"100\">书名</th>
<th width=\"100\">作者</th>
<th width=\"100\">出版社</th>
<th width=\"100\">价格</th>
</tr>
<%
BookBean[] books = new BookDAO().findAll();
for(BookBean book:books){
if(book == null){
break;
}
out.println(""+""+book.getBookid()+" ");
out.println(""+book.getTitle()+" ");
out.println(""+book.getAuthor()+" ");
out.println(""+book.getPublisher()+" ");
out.println(""+book.getPrice()+" ");
out.println(" ");
}
%>
</body>
</html>
package com.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JdbcConnectionUtil {
public static Connection getConnection() {
String driver = "com.mysql.cj.jdbc.Driver";
String url = "jdbc:mysql://ip:3306/database?serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true";
String username = "root";
String password = "root";
Connection conn = null;
try {
Class.forName(driver); //classLoader,加载对应驱动
System.out.println("load driver success!");
conn = (Connection) DriverManager.getConnection(url, username, password);
System.out.println("get connection success!");
} catch (ClassNotFoundException e) {
e.toString();
e.printStackTrace();
} catch (SQLException e) {
e.toString();
e.printStackTrace();
}
if(conn==null) {
System.out.println("get connection fail!");
}
return conn;
}
}
package com.beans;
import java.io.*;
public class BookBean implements Serializable {
private static final long serialVersionUID = 1L;
private Integer bookid = null;
private String title = null;
private String author = null;
private String publisher = null;
private Double price = null;
/*省略构造方法*/
/*省略getter、setter*/
}
package com.beans;
import java.sql.*;
import com.beans.BookBean;
import com.util.JdbcConnectionUtil;
public class BookDAO {
public BookBean[] findAll() {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rst = null;
//数组大小可以设置,我这里的记录不超过100条
BookBean[] books = new BookBean[100];
BookBean book = null;
try {
conn = JdbcConnectionUtil.getConnection();
pstmt = conn.prepareStatement("SELECT * FROM book");
System.out.println(pstmt);
rst = pstmt.executeQuery();
int count = 0;
while(rst.next()) {
book = new BookBean();
book.setBookid(rst.getInt("book_id"));
book.setTitle(rst.getString("title"));
book.setAuthor(rst.getString("author"));
book.setPublisher(rst.getString("publisher"));
book.setPrice(rst.getDouble("price"));
books[count++] = book;
}
conn.close();
return books;
} catch (SQLException se) {
System.out.println(se.toString());
return null;
}
}
}