ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] – Servlet.service() –调试发现HttpSession session无法读取数据
该开始一直按错误去进行查询
![]()
看到网上的主要解决方法:
1.注入的数据类型加入注解@Autowired,
2.service层添加注解@Service
3.在controller层,添加注解@RestController 而不是 @Controller
4.并在JSON数据前加上@RequestBody
5.spring-boot包冲突,再pom.xml文件中删除这个包
org.springframework.boot
spring-boot-starter-web
compile
针对后面抛出的异常java.lang.NullPointerException
出现的原因就是当一个对象的值为空时,你没有判断为空的情况
解决方式即可以优先使用
String.valueOf()方法代替toString()
当程序代码需要对象的字符串表示形式时,应该避免使用该对象的toString方法。如果你的对象的引用等于null,NullPointerException则会抛出,使用静态String.valueOf方法,该方法不会抛出任何异常并打印”null”
亲测有用,但是并没有解决我们下面的问题。就是存了两个数据,但是读出的只有一个数据。
在以上这些方式检查过之后,发现并没有改变现有的情况。所以开始一步一步调试。发现如下结果:
![ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() --调试发现HttpSession session无法读取数据](/img/c2/0de5e23173754d609f5fa1691d44e0f7.png)
这里的存储阶段是没有问题的,存储了两个参数
![ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() --调试发现HttpSession session无法读取数据](/img/98/aa35ab39241243e0bb6554f66843cf2d.png)
这里日志语句给出map的大小为1,这里是不应该的,因为前面我在session设置时是两个值。
![ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() --调试发现HttpSession session无法读取数据](/img/97/416150d5c5d743a4bce40b15b9ac2696.png)
这里调试到这一步 ,就突然跳转到下面了
![ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() --调试发现HttpSession session无法读取数据](/img/f9/8d26fee7ce794ff69620c626d034d467.png)
此时就换了查找思路:去看了
session.setAttribute()和session.getAttribute()的用法。发现也有很多这种情况出现。所以开始针对这样的问题进行修改
尝试1:、如果存在取值问题,取不到session中的值,可能是存值的地方和取值的地方引入的HttpServletRequest不一致。就会出现拿不到值的情况!
但是我们这里存储的位置都是
HttpSession
尝试都修改成HttpServletRequest
未解决!!!
思路三:发现两次的session地址和存值都是正确的,但是map读取时,只读出了一个值
![ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() --调试发现HttpSession session无法读取数据](/img/d7/433e60374b1446fab37aaf5375466f14.png)
![ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() --调试发现HttpSession session无法读取数据](/img/70/8b7ddcb76a484efcb4d17c55b0b0de10.png)
![ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() --调试发现HttpSession session无法读取数据](/img/3d/f2472ea5fd8448c7aba1007b4bf4ac47.png)
所以开始查询session中为什么map会只读取到一个值??对比了源代码
![ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() --调试发现HttpSession session无法读取数据](/img/d6/a728756f1c92421ca9f9dc6598ba5012.png)
![ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() --调试发现HttpSession session无法读取数据](/img/bf/0a96298e8f3e47679c47301e3d2de3f8.png)
修改原文件格式之后,成功获取到map的两个值。
总结:刚开始是按照报错开始查询解决方式。但都没有解决我的问题。
然后开始对异常类型,自己所遇到的问题描述,进行了一系列查询。过程如上,也是没有效果。
最后实在是不行了 ,但是从一步一步的调试也大概知道问题是出在了,map无法取出页面上输入的第二个值。所以就开始比对自己所配置的login.html文件,发现此处的loginApi所注入的方式不同。
还是关键:解决问题的操作并不重要,解决问题的这个思路才是最重要的。
PS:虽然解决了这个问题但是为什么就成功了 还是不知道。有没有大佬可以解答一下,两种表达方式有什么区别呢???最开始的问题也是,map中只有一个页面上提交的phone,但是没有另一个值。修改成第二个格式后,客户端提交的两个值都显示了。。
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/321012f4a0.html
