2020年10月

数据库连接警告

这几天写Web项目的时候,控制台总是输出这样一句话

Sat Oct 31 10:42:24 CST 2020 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

去Google翻译了一下,

Sat Oct 31 10:42:24 CST 2020警告:不建议在没有服务器身份验证的情况下建立SSL连接。 根据MySQL 5.5.45 +,5.6.26 +和5.7.6+的要求,如果未设置显式选项,则默认情况下必须建立SSL连接。 为了与不使用SSL的现有应用程序兼容,将verifyServerCertificate属性设置为’false’。 您需要通过设置useSSL = false显式禁用SSL,或者设置useSSL = true并提供信任库以进行服务器证书验证。

看了看,应该是要求设置userSSL,所以一般在数据库连接url末尾加上“useSSL=false”就可以了。

不过,如果使用JNDI方式连接,在context.xml里面修改就不能直接添加了

会出现报错“The reference to entity “useSSL” must end with the ‘;’ delimiter.”

仔细研究了一下,在这个xml文件中修改的话, &符号是需要需要转义的,所以改成&就可以了,也就是说改成

&useSSL=false"

就正确了,这样就不报错了。

 

 

附:HTML转义字符参考网站 https://tool.oschina.net/commons?type=2

DAO层SQL语法’ ‘错误

一般写DAO层的时候,总喜欢先去数据库管理软件里测试一下语句,然后复制过来直接用。

今天测试的时候,怎么都提示”Parameter index out of range”,仔细检查完其他问题,找不到错误。

比对了以前写的代码,才意识到,传值进去的是String类型,就不需要在SQL语句上再加’ ‘,了,去掉以后,就可以正常使用了。

 

Tomcat的发布路径

这学期刚开始入门JavaWeb,学的有点乱,一直没搞明白Tomcat的一些设置,今天来慢慢填坑。

首先是,Eclipse里的Tomcat设置,

在写JavaWeb项目前,都会要求简单配置一下Tomcat,可是,当项目运行起来,就不允许在修改了。

如果想修改的话,就需要先在Tomcat服务器上右键,从“Add and Removr” Remove所有项目,然后再选择clean,然后再双击,就又能够重新修改了。

然后是里面的一些设置。

其中Server Locations里,一般都选择第二个选项,下面分别是“Tomcat服务器的路径”和“Tomcat项目发布路径”。

Deploy path就是发布路径,这个一定要设置好,一般推荐写到tomcat里的webapps下,其他路径也可以吗,不过一定要好找。

我当时就因为这个,耽误了学习。当时是学习图片上传的操作,因为当时还不懂这个发布路径,上传图片后,回到原来的项目目录里面找,怎么也找不到上传的图片,后来才意识到,是发布路径设置的不好(Deploy path设置的是默认的wtpwebapps),所以看不到实际的效果。

发布路径相当于项目成品后的输出路径,后期的浏览都是看到的是发布路径里的项目,不是原项目目录。所以这点要注意。

Servlet中doGet/doPost想用session怎么办?

今天开始,项目的控制层(Controller)要转为使用Servlet来操作了,可是在将原来的JSP中的代码拷贝过来后,发现session没法用了,便想办法解决。

在查了好久后,终于找到一个既简单又好用的解决方案就是将

session.setAttribute(name, value);

改为

request.getSession().setAttribute(name,value);

就可以了,超级简单好用。

或者说,为了不一一更改,可以直接创建一个session的对象,对象名和“session”一样就可以了

HttpSession session=request.getSession()