求大神帮助解决小问题,一直无法调用到DAO层的login方法

问题描述:

package com.tnt.jsp;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.fasterxml.jackson.databind.ObjectMapper;

import entity.Users;
import Dao.UserDao;

/**

  • Servlet implementation class LoginServlet
    */
    public class LoginJsonServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**

    • @see HttpServlet#HttpServlet() */ public LoginJsonServlet() { super(); // TODO Auto-generated constructor stub }

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
    •  response)
      

      */
      protected void doGet(HttpServletRequest request,
      HttpServletResponse response) throws ServletException, IOException {
      request.setCharacterEncoding("UTF-8");
      // response.setContentType("Textcml;charset=UTF-8");
      String uname = request.getParameter("uname");
      String upass = request.getParameter("upass");
      // PrintWriter pw = response.getWriter();

      Users condition = new Users();
      condition.setUname(uname);
      condition.setUpass(upass);

      UserDao userDao = new UserDao();
      Users user = userDao.login(condition)就是这里一直无法调用????????

      PrintWriter out = response.getWriter();
      if (user != null) {//生成json字符串2
      ObjectMapper mapper = new ObjectMapper();
      String json = mapper.writeValueAsString(user);
      out.write(json);
      out.flush();
      out.close();
      }

      // 得到session对象
      // 如果传false,当前session对象就返回session对象,如果不存在就返回新创建的对象
      HttpSession session = request.getSession();

      if (user != null) {
      session.setAttribute("USER", user);
      request.setAttribute("USERNAME", uname);
      //请求转发
      request.getRequestDispatcher("/success.jsp ").forward(request,response);
      // 重定向
      response.sendRedirect("success.html");
      request.getRequestDispatcher("/BloggersSearvlet").forward(request,
      response);
      System.out.println("login");

       response.sendRedirect("BloggersSearvlet");
      

      // pw.println(uname + "登陆成功!");
      } else {
      // pw.println(uname + "登录失败");
      request.getRequestDispatcher("/fail.jsp").forward(request,response);
      request.getRequestDispatcher("/fail.jsp")
      .forward(request, response);
      }

    }

    /**

    • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
    • response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); doGet(request, response); }

}

DAO类
package Dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.concurrent.locks.Condition;

import org.apache.tomcat.jni.User;

import entity.Users;

public class UserDao {
public Users login(User condition)

{
    Connection connection = ConnectionManager.getConnection();
    Statement stmt = null;
    Users user = null;
    String sql = "select  userid,username,password from tbl_user where username='"
            + user.getUname()
            + "' and password ='"
            + user.getUpass()
            + "'";

    ResultSet rs = null;
    try {
        stmt = connection.createStatement();
        rs = stmt.executeQuery(sql);
        while (rs.next()) {
            user = new Users();
            int userid = rs.getInt("USERID");
            String uname = rs.getString("UNAME");
            String upass = rs.getString("UPASS");
            int age = rs.getInt("AGE");
            user.setUserid(userid);
            user.setUname(uname);
            user.setUpass(upass);
            user.setAge(age);

        }
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        ConnectionManager.closeResultSet(rs);
        ConnectionManager.closeStatement(stmt);
        ConnectionManager.closeConnection(connection);
    }
    return user;

}

}

我看出来了:

 Users condition = new Users();
condition.setUname(uname);
condition.setUpass(upass);
UserDao userDao = new UserDao();
Users user = userDao.login(condition)就是这里一直无法调用????????

这里的userDao.login(condition);你的condition类型时Users,而你的dao层里面login方法的参数:是import org.apache.tomcat.jni.User;

 import org.apache.tomcat.jni.User;
import entity.Users;
public class UserDao {
public Users login(User condition)

类型出错了,把你login方法里的User改成Users就可以了

没看出来问题。程序报什么错。 你先调试一下, 看是什么问题啊。

dao里面: Users user = null;这里错了,应该是要等于public Users login(User condition)传递进来的值吧。
如果不是的话,还是像楼上说的一样,调式下看看,问题出在哪。

login(User condition)改成login(Users condition)