980041382 发表于 2021-9-26 17:42

已经解决了 谢谢大佬们

本帖最后由 980041382 于 2021-9-26 18:04 编辑


今天学习JavaWeb使用Tomcat的时候 遇到了空指针异常 但是查不出来报错位置 Server log也并没有相关信息 求大佬指点迷津

980041382 发表于 2021-9-26 17:44

本帖最后由 980041382 于 2021-9-26 18:00 编辑

package cn.web.servlet;

import cn.service.UserService;
import cn.service.impl.UserServiceImpl;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet("/delSelectedServlet")
public class DelSelectedServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      this.doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      //1.获取所有id
      String[] ids = request.getParameterValues("uid");
      //2.调用Service删除
      UserService service = new UserServiceImpl();
      service.delSelectedUser(ids);

      //3.跳转查询所有Servlet
      response.sendRedirect(request.getContextPath() + "/userListServlet");
    }
}


这个是DelSelectedServlet的代码

Debug发现ids为null



17:59补一张图

Fliex 发表于 2021-9-26 17:44

本帖最后由 Fliex 于 2021-9-26 17:46 编辑

1、看一下UserServiceImpl 47行
2、方法入口处debug,一步一步调试。
UserService service = new UserServiceImpl();service 为null

980041382 发表于 2021-9-26 17:47

Fliex 发表于 2021-9-26 17:44
1、看一下UserServiceImpl 47行
2、方法入口处debug,一步一步调试。
UserService service = new UserSer ...

package cn.service.impl;

import cn.dao.UserDao;
import cn.dao.impl.UserDaoImpl;
import cn.domain.User;
import cn.service.UserService;

import java.util.List;

public class UserServiceImpl implements UserService {
    private UserDao dao = new UserDaoImpl();

    @Override
    public List<User> findAll() {
      //调用Dao完成查询
      return dao.findAll();
    }

    @Override
    public User login(User user) {
      return dao.findUserByUsernameAndPassword(user.getUsername(), user.getPassword());
    }

    @Override
    public void addUser(User user) {
      dao.add(user);
    }

    @Override
    public void deleteUser(String id) {
      dao.delete(Integer.parseInt(id));
    }

    @Override
    public User findUserById(String id) {
      return dao.findById(Integer.parseInt(id));
    }

    @Override
    public void updateUser(User user) {
      dao.update(user);
    }

    @Override
    public void delSelectedUser(String[] ids) {
      //1.遍历数组
      for (String id : ids) {
            //2.调用dao删除
            dao.delete(Integer.parseInt(id));
      }
    }
}



第47行就是一个增强for循环

Fliex 发表于 2021-9-26 17:51

980041382 发表于 2021-9-26 17:47
package cn.service.impl;

import cn.dao.UserDao;

入口处断点,看下ids传过来没有

980041382 发表于 2021-9-26 17:52

Fliex 发表于 2021-9-26 17:51
入口处断点,看下ids传过来没有

ids为null帖子主楼贴图了

jiangzeyi 发表于 2021-9-26 17:55

看下请求携带了 uid 这个东西没

980041382 发表于 2021-9-26 17:59

jiangzeyi 发表于 2021-9-26 17:55
看下请求携带了 uid 这个东西没

没有发现。。。

iyeoman 发表于 2021-9-26 19:06

恭喜进步

cxb2468 发表于 2021-9-26 19:21

for (String id : ids) {
            //2.调用dao删除
            dao.delete(Integer.parseInt(id)      string类型参数要的却是 integer       不转下类型?
页: [1] 2
查看完整版本: 已经解决了 谢谢大佬们