我们在使用idea编写javaweb时难免会使用到MySQL(数据库)里的数据来使得页面“动”起来,但我们使用Java连接MySQL时经常会有一个类我们需要使用,这个类就是:
Class.forName("com.mysql.jdbc.Driver")
但是在使用tomcat服务器加载jsp文件时极有可能出现HTTP Status 500 – Internal Server Error的问题,500问题中又有三个问题,分别是时区,密码错误和无法识别MySQL的jar包,以下就是我对这三个问题的决解方案,若有错误请告知:
1 时区
第一个是时区问题,因为数据库里面都是以时间戳来存储的,所以有时本地时区会和服务器时区冲突。下图代码为错误提示:
javax.servlet.ServletException: java.sql.SQLException:The server time zone value ' й ʱ ' isunrecognized or represents more than one time zone. You must configure eitherthe server or JDBC driver (via the serverTimezone configuration property) touse a more specifc time zone value if you want to utilize time zone support.
这个问题比较好解决,主要是mysql连接出现服务器时区有问题,这时我们采用程序生成UTC时间就可以解决这一问题,代码如下:
jdbc:mysql://localhost:3306/sctu_javaweb_2018?serverTimezone=UTC
(在连接后加一句utc就可以解决时区问题,UTC是通用时区)
这样时区的问题就可以解决了。
2 密码
第二个问题就是密码问题了,有时候我们密码记错了极有可能导致我们无法访问mysql数据库,所以我们要记住我们的密码哟。
错误的代码如下,如果出现以下代码,你就只需要把你的登陆密码改一改就可以了。
javax.servlet.ServletException: java.sql.SQLException:Access denied for user 'root'@'localhost' (using password: YES)
3 Class NoFound
第三个问题就是前文提到我们所需的类tomcat无法识别,无法识别的原因是你的依赖没有建好,所以系统无法识别,这个错误的代码如下:
javax.servlet.ServletException:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:667)
org.apache.jsp.index_jsp._jspService(index_jsp.java:255)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:444)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
所以决解这个问题,就需要我们建好依赖,再在tomcat中重新添加这个项目,这样一般就可以识别mysql这个类了,具体操作如下:
在modules(项目模块)中选中你的项目(没有就自己加一个或就选择根目录),在右侧选择Dependencies(依赖),然后点击右侧的“+”号:
选择第一个将JARs加入你的项目,建立好项目依赖,然后在右侧选择
Artifacts:
点击“+”号添加项目的部署包,注意选择是exploded的war包,接下来需要在output layout(输出结构)中注意WEB-INF下的lib要有项目部署的jar,由于我们决解的数据库的问题,所以我们需要MySQL的jar包,如果有,那我们的项目依赖就建好了,tomcat就可以找到(识别)MySQL的com.mysql.jdbc.Driver。接下来配置一哈tomcat就好了,如果配置了就重新配置哈,配置详见图解:
点击如图所示小三角,接着点击Edit Configurations-->绿色加号-->如果列表里没有则-->点击33 items more irrelevant这一项后继续寻找
在右侧配置,注意配置画红线的两处:第一处是tomcat的目录地址,第二处是Java JRE地址。
再在Deployment中添加你的项目:
保存修改就可以运行了,大致可以解决tomcat无法找到jdbc。
有朋友推荐说无法识别就把tomcat加入系统环境中就可以了,这种方法没有实验过,不知可否能行,你们也许可以去试一试。
注:本文系四川旅游学院16级信息管理与信息系统专业胡干航投稿。