IDEA+DataSource+Tomcat 配置中遇到的问题JasperException、NameNotFoundException、.SQLException

一开始常规配置操作
在这里插入图片描述
contaxt内容配置文件抄的书
在这里插入图片描述
开始报:

javax.naming.NameNotFoundException: Name [jdbc/myDataSource] 
is not bound in this Context. Unable to find [jdbc].

搜索发现有人说是因为mysql8.0以上版本驱动类的包结构变了的缘故,然后我将drverClassName改成
com.mysql.cj.jdbc.Driver
无效(事实上如果其他配置没错,就算com.mysql.jdbc.Driver也可以使用的,只是会报一条Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class iscom.mysql.cj.jdbc.Driver’. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
继续面向百度,结果是原来是因为没有配置web.xml的资源引用:

  <resource-ref>
        <res-ref-name>jdbc/myDataSource</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

好的这个问题解决了(如果context中的url写错了也会报这个错误别问我咋知道的)。
然后又出现了一个新错误也算不上错误就是会报很多的

org.apache.jasper.servlet.TldScanner.scanJars 
至少有一个JAR被扫描用于TLD但尚未包含TLD。 

看起来有点烦,然后俺参考了
解决以上jar包信息…的方法

解决了,可是还是连不上,又开始报这个错误了

java.sql.SQLException: Cannot create JDBC 
driver of class '' for connect URL 'null'

第一次是Resource拼错了,第二次url 写漏了…(我怕是有点痴…)
不过当时没有察觉,以为是mysql的版本与连接驱动jar包版本有冲突*(这当然是不会的,jar包版本比本机高,按理说是能向下兼容的)* ,我便下了本机的mysql对应版本,可是奇怪的事情又发生了,我替换了jar包后,jstl包没法用了,在IDEA上能够解析到对应内容,配置到tomcat上后就是会报

org.apache.jasper.JasperException: 
无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]。

我太难了,我以为是jar包版本冲突了,便把mysql的驱动包换回去了,可是还是没有解决。
这时我深深的感觉到了手动导包的繁琐之处,便开始学maven
为了更快的下载jar包强烈建议将镜像源设置为阿里云镜像。
配置方式修改maven文件夹下的conf中的setting.xml在mirrors标签中加入

 <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>

不过不幸的是至今这个问题依然没有解决,俺只是将jtsl包下的.tld文件全部存入web-inf文件夹下,暂时解决(如果有更优雅的解决方式,还劳大佬告知,谢谢)
解决了以上问题,然后又遇到了…
在这里插入图片描述
我密码当然是输入对的,这么蠢的问题我还是不会犯(犯得问题更蠢),有人说是因为8.0之后密码加密方式由mysql_native_password变为了 caching_sha2_password ,或许会有些兼容性问题,俺按照修改加密方式改了,没用,后来发现…是因为username写成了user
之后又报了一个时区的错误

java.sql.SQLException:
 Cannot create PoolableConnectionFactory
  (The server time zone value '?й???????' is unrecognized or represents more than one time zone. 
 You must configure either the server or JDBC driver
  (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.)

这个解决办法就比较常规了
将url设置为,设定时区为UTC

url="jdbc:mysql://localhost:3306/test?serverTimezone=UTC"

或者mysql中修改时区

发布了18 篇原创文章 · 获赞 1 · 访问量 263

猜你喜欢

转载自blog.csdn.net/qq_38732834/article/details/105400411