常见问题J2EE

异常

java.lang.IllegalStateException: 提交响应后无法转发

重复/多次响应

Java ConcurrentModificationException

描述链接(博客园)
使用迭代器迭代ArrayList等容器的同时删除元素会发生的操作
解决办法:
1.使用迭代器自带的remove()方法来删除(单线程情况)

  1. while(iterator.hasNext()){
  2. Integer integer = iterator.next();
  3. if(integer==2)
  4. list.remove(integer);
  5. }

2.使用线程安全的容器来进行操作/添加锁死机制
3.如果是只删除一个元素的话,将元素删除从迭代中脱离出来

  1. public synchronized void removeFood(String foodName){
  2. int temp=0;
  3. for(Food cur:foods){
  4. if(foodName.equals(cur.getName())){
  5. if(cur.getNum()>1){
  6. cur.setNum(cur.getNum()-1);
  7. return;
  8. }else{
  9. break;
  10. //定位完成之后可以直接退出
  11. }
  12. }
  13. temp++;
  14. }
  15. foods.remove(foods.get(temp));
  16. //不能在迭代器的遍历中直接删除,要不在外面删除,要不使用itr自带的删除(显式迭代器的情况下)
  17. }

HTTP状态 405 - 方法不允许

错误提示

image.png

错误原因

servlet的service()方法的俩参数的顺序错了,应该是先request再response.

问题

JavaBean方面

见JavaBean工具类

JSP/Servlet部分类飘红

首先手动导入”Jakarta”包中的类
在确认Jakarta中没有预定的包时,使用Maven进行导入.

Jakarta无session对象可供使用

(无直接解决方法)
在servlet内部使用全局变量进行存储
JSP与Servlet内部使用HttpSession进行的定义,不是重新定义一个session,而是新获取一个session
获取!=创建
Session一直在那里,只不过在新的界面需要一个HttpSession声明作为容器来引用,数据都一样的.

路径的填写问题

1.最开始加不加’/‘没有区别

.xml

记录servlet中,必须使用静态引入,即加”/“作为开头

.sendRedirect()

重定向方法中开头不能加”/“
目前还不知为啥

软件包名的命名问题

javaBean的包名不区分大小写
文件夹的命名也一样

classes内部的代码不更新

检查项目结构中的输出路径