Laughing girl2021 2022-01-12 15:32 采纳率: 100%
浏览 28
已结题

servlet中参数报错,请问是为什么?逻辑没问题呀!

img


img

//用户servlet代码
@WebServlet(name = "UserServlet",urlPatterns = "/user")      
public class UserServlet extends BaseServlet {

    public void login(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String name = request.getParameter("name");
        String password = request.getParameter("password");

        UserService userService=new UserService();
        User user=null;
        try {
            //调用service中登录方法
            user = userService.login(name, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        if (user!=null){
            //登录成功后我们再获取是否保存密码的信息,如果失败了保存密码就没有意义了
            String remember = request.getParameter("remember");
            if (remember!=null&&remember.equals("yes")){
                // 将用户名和密码加入到cookie中
                Cookie nameCookie = new Cookie("name", name);
                Cookie passwordCookie = new Cookie("password", password);
                //设置cookie的有效期 防止销毁
                nameCookie.setMaxAge(60*10);
                passwordCookie.setMaxAge(60*10);
                //将cookie发送给客户端保存
                response.addCookie(nameCookie);
                response.addCookie(passwordCookie);

            }
            //登录成功跳转生鲜种类列表界面
            response.sendRedirect(request.getContextPath()+"/category?method=getCategoryList");
        }else {
            //登录失败提示
            response.setContentType("text/html;charset=utf-8");
            response.getWriter().write("用户登录失败");

        }

    }
    public void register(HttpServletRequest request, HttpServletResponse response) throws IOException {

        try {
            Map<String, String[]> parameterMap = request.getParameterMap();     //通过map获得对应的jsp页面所有参数
            User user=new User();
            BeanUtils.populate(user,parameterMap);

            UserService userService=new UserService();
            boolean register = userService.register(user.getName(),user.getPassword(),user.getEmail());
            if (register) {
                response.sendRedirect(request.getContextPath()+"/login.jsp");
            }else {
                response.setContentType("text/html;charset=utf-8");
                response.getWriter().write("注册失败");
            }
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
    }

}
//用户界面的业务代码
public class UserService {

    public boolean register(User user){

        boolean register = false;
        UserDao UserDao = new UserDao();
        //判断注册的用户是否存在
        boolean checkUser = UserDao.checkUser(user.getName());
        //如果用户名不存在就将注册的信息添加到数据库
        if(checkUser){
            register = UserDao.register(user.getName(),user.getPassword(), user.getEmail());
        }
        return register;
    }

    public User login(String name, String password) throws SQLException {
        UserDao userDao = new UserDao();
        User user = userDao.login(name,password);
        return user;
    }
}
//用户界面数据库操作代码
public class UserDao {

    public boolean checkUser(String name){

        try {
            //数据库链接(匹配src文件夹下的c3p0-config.xml文件,这是固定程式)
            ComboPooledDataSource dataSource = new ComboPooledDataSource();
            QueryRunner queryRunner = new QueryRunner(dataSource);
            //传入参数,通过sql语句进入数据库看是否有此参数,如果有则将查询的值赋予user,如果没有则usernull
            String sql="select name from user where name=?";
            User usere = queryRunner.query(sql,new BeanHandler<User>(User.class),name);
            //如果user为空,说明这个用户名没有被注册过
            if(usere==null){
                return true;
            }else{
                return false;
            }
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }

    public boolean register(User user) {

        //如果用户名不存在就将注册的信息添加到数据库
        try {
            //数据库链接(匹配src文件夹下的c3p0-config.xml文件,这是固定程式)
            ComboPooledDataSource dataSource = new ComboPooledDataSource();
            QueryRunner queryRunner = new QueryRunner(dataSource);
            //传入参数,通过sql语句进入数据库添加参数,如果添加成功,则row>0;
            String sql="insert into user value (null,?,?,?)";
            int row = queryRunner.update(sql,user.getName(),user.getPassword(),user.getEmail());
            //如果row>0,说明添加成功
            if(row>0){
                return true;
            }else{
                return false;
            }
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }

    public User login(String name,String password) throws SQLException {

        //数据库链接(匹配src文件夹下的c3p0-config.xml文件,这是固定程式)
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        QueryRunner queryRunner = new QueryRunner(dataSource);

        String sql="select * from user where name=? and password=?";
        User user = queryRunner.query(sql,new BeanHandler<User>(User.class),name,password);
        return user;
    }
}

  • 写回答

3条回答 默认 最新

  • wyz0923 2022-01-12 15:40
    关注

    img

    你的注册方法定义接受参数是User 你传的参数不对,定义接收的参数跟你实际传递的参数不一致

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月21日
  • 已采纳回答 1月13日
  • 创建了问题 1月12日

悬赏问题

  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R
  • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法
  • ¥15 八路抢答器设计出现故障
  • ¥15 opencv 无法读取视频
  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))
  • ¥20 5037端口被adb自己占了
  • ¥15 python:excel数据写入多个对应word文档