网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
解决方案:
把@WebFilter(“/user/info”)改成,@WebServlet(“/user/info”)
3.启动过滤器异常—init方法
报错信息:
org.apache.catalina.core.StandardContext.filterStart 启动过滤器异常[com.tianju.filter.LoginAuthorServlet]
问题描述:
配置了一个过滤器,过滤器也实现了doFilter方法,但是项目就是启动不起来,过滤器启动异常,导致项目启动不起来,报错;
原因:
原因是tomcat8.5的过滤器需要实现init方法,如果不实现,就会报错,tomcat高版本才支持不实现;
解决方法:
实现init方法:
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("DemoFilter init");
}
4.过滤器不可用异常—写成了@WebServlet
报错信息:写成了@WebServlet @WebFilter(“/*”)
Servlet[com.tianju.filter.CharacterEncodingFilter]当前不可用
5.无报错—过滤器没有放行
如果忘记放行,项目可以启动,但所有资源都不可访问
6.静态方法DBUtils报错的几种情况
DBUtils中的静态方法错误,导致项目启动失败:
报错信息:
15-Jun-2023 12:22:01.865 信息 [localhost-startStop-2] org.apache.catalina.core.StandardWrapper.unload 正在等待为Servlet[com.tianju.servlet.user.LoginService]释放[1]实例
15-Jun-2023 12:22:02.184 严重 [Druid-ConnectionPool-Create-88061993] com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl.error create connection SQLException, url: jdbc:mysql://127.0.0.1:3306/javaweb?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true, errorCode 1045, state 28000
java.sql.SQLException: Access denied for user ‘root’@‘localhost’ (using password: YES)
项目能够启动起来,但是单击登陆后,前端没有反应,后端一直报错,不断刷新;
报错原因:
Access denied for user ‘root’@‘localhost’ (using password: YES)
解决方案:
密码要输入正确:
// TODO:静态方法错误,导致项目启动失败
String password = "123";
另一种情况:
报错信息:
java.lang.NoClassDefFoundError: Could not initialize class com.tianju.util.DBUtils
报错信息:
严重 [Druid-ConnectionPool-Create-1816424755] com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl.error create connection SQLException, url: jdbc:mysql:😕/127.000.0.1:3306/javaweb?useSSL!!!=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true, errorCode 0, state null
java.sql.SQLException: connect error, url jdbc:mysql:😕/127.000.0.1:3306/javaweb?useSSL!!!=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true, driverClass com.mysql.cj.jdbc.Driver
Vue+Axios遇到的bug汇总
1.导包失败net:ERR ABORTED 404
报错信息:
GET http://localhost:8080/bootstrap/css/bootstrap.css net:ERR ABORTED 404
2.未定义错误msg is not defined,data写成date
报错信息:ReferenceError:msg is not defined
另一种情况,不太好找:
3.之前的form表单没有删
导致发送两次请求
4.没有加this,报未定义异常imgbtn is not defined
Uncaught (in promise) ReferenceError: imgbtn is not defined
5.post请求没加上下文,POST请求404,Uncaught (in promise)
报错信息:
http://localhost:8080/comUser/register/vue 404
Uncaught (in promise)
{message:‘Request failed with status code 404’,name:‘AxiosError’,
6.let app = new Vue没有加new
报错信息:
vue.min-v2.5.16.js:6 Uncaught TypeError: Cannot read properties of undefined (reading ‘_init’)
7.一个没有报错信息的bug–应该写在created里
8.一个报错定位不清楚的bug
报错信息:
Uncaught TypeError: e.bind is not a function
9.一个一堆人找了半天的bug:value写成vlaue
同上,不太好找的bug
10.属性里面写了插值表达式【困扰】
问题描述:
前端没有list页面数据,但是前端拿到了后端的响应数据,而且前端没有报错,原因是属性里面写了插值表达式
<%-- TODO:属性里面不能写插值表达式,也不报错--%>
<button @click="remove({{opus.id}})" class="btn btn-warning btn-sm">删除</button>
解决方案:不要加插值表达式
<button @click="remove(opus.id)" class="btn btn-danger btn-sm">删除</button>
修改后果然出现了
JSP使用相关报错
1.后端传给jsp的数据,前端jsp不显示
问题描述:
后端传给jsp的数据,前端jsp没有显示出来,原因是官方生成的web.xml文件版本低,很多功能不支持,需要更换成下面这种
web.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app\_4\_0.xsd"
version="4.0">
</web-app>
2.jsp的包没有导,用foreach方法的时候报错【困扰】
报错信息:
javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/LoopTag
问题描述:
在jsp文件中,如果注释掉foreach部分的代码,前端jsp文件就能正常进入,也能显示从后端拿到的信息;
但是如果加上foreach部分的代码,就报错,后台的错误指向了servlet的转发部分;但其实是能进到这里的,所有这个问题查了好久,以为是req的问题,后来以为是foreach语法写错的问题;
最后突然想到,可能是xml包没导,最后补充了jsp相关的包,问题解决。
req.getRequestDispatcher("/news/list.jsp").forward(req, resp);
jsp相关的包:
<!-- jsp导包-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<!-- 加provided-->
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
3.jsp的forEach方法报错
org.apache.jasper.JasperException: 在 [57] 行处理 [/news/list.jsp] 时发生异常
语法错误,多打印了一个h
4.jsp用foreach的时候,没有生成首行一段话
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
问题描述:
前端jsp能拿到后端发来的数据,但是没法进入forEcah方法中,不生效;
session报错
1.session不能转换成String类型
报错信息:
java.lang.ClassCastException: org.apache.catalina.session.StandardSessionFacade cannot be cast to java.lang.String
问题描述:
保存到session的时候,不小心把session存进了session里,然后拿的时候用(String)类型转换
存的时候:
// 验证码存到session空间中
HttpSession session = req.getSession();
session.setAttribute("yzm", session);
取的时候
// +++++判断验证码是否正确
HttpSession session = req.getSession();
// 从session中获取验证码
String yzm = (String)session.getAttribute("yzm");
解决方法:
应该保存验证码的4位数字
servlet业务流程错误
1.在servlet的if处理流程中,没有加return
问题描述:
如果在servlet中,需要if处理的业务流程,没有加return,通常会引起其他错误,因为没有return,程序会继续往下执行;如下图的例子,这里用户名密码输入错误,没有加return,导致即使非法用户也能登陆进入系统。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
会继续往下执行;如下图的例子,这里用户名密码输入错误,没有加return,导致即使非法用户也能登陆进入系统。
[外链图片转存中…(img-sUz0ROEz-1715791285937)]
[外链图片转存中…(img-Jq7986hD-1715791285938)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!