weixin_45137110 2021-02-11 00:10 采纳率: 50%
浏览 109
已采纳

控制台可以打印出从数据库查询到的记录,但是从页面获取参数时显示查询不到记录

练习的JavaWeb小案例。用的是JdbcTemplate.

这是servlet:

@WebServlet("/loginServlet")
public class loginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        //接收参数并封装对象
        Map<String, String[]> parameterMap = request.getParameterMap();
        Admin loginadmin = new Admin();
        String verifycode = request.getParameter("verifycode");
        try {
            BeanUtils.populate(loginadmin,parameterMap);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        //判断验证码
        HttpSession session = request.getSession();
        String checkcode_server = (String) session.getAttribute("CHECKCODE_SERVER");
        if (checkcode_server.equalsIgnoreCase(verifycode)){
            //验证码正确
            //调用service层
            AdminLoginService adminLoginService = new AdminLoginServiceImpl();
            Admin admin_log = adminLoginService.login(loginadmin);
            if (admin_log != null){
                //登录成功
                response.sendRedirect("/index.jsp");
            }
            else {
                //登录失败
                request.setAttribute("login_error","用户名或密码错误");
                request.getRequestDispatcher("/login.jsp").forward(request,response);
            }
        }else {
            //验证码错误
            request.setAttribute("cc_error","验证码错误");
            request.getRequestDispatcher("/login.jsp").forward(request,response);
        }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

这是Dao层:

public class AdminLoginDaoImpl implements AdminLoginDao {
    JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource());
    @Override
    public Admin login(Admin loginAdmin) {
        //查询管理员数据库
       try{
           String sql = "select * from t_admin where admin_name = ? and admin_password = ?";
           Admin admin = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Admin>(Admin.class), loginAdmin.getAdmin_name(), loginAdmin.getAdmin_password());
           return admin;
       }catch (Exception e){
           e.printStackTrace();
           return null;
       }

    }
}

单元测试显示可以查询到数据:

public class test {
    @Test
    public void testAdminLogin(){
        Admin admin = new Admin();
        admin.setAdmin_name("admin");
        admin.setAdmin_password("123456");
        AdminLoginService adminLoginService = new AdminLoginServiceImpl();
        Admin admin1 = adminLoginService.login(admin);
        System.out.println(admin1);
    }



"test.test,testAdminLogin
二月 11, 2021 12:04:36 上午 com.alibaba.druid.pool.DruidDataSource info
信息: {dataSource-1} inited
Admin{id=1, admin_name='admin', admin_password='123456'}

Process finished with exit code 0

报错信息:

  • 写回答

1条回答 默认 最新

  • 邓国强-cd 2021-02-19 15:55
    关注

    BeanUtils.populate(loginadmin,parameterMap); 写反了,BeanUtils一般src为第一个参数,因该写成BeanUtils.populate(parameterMap,loginadmin);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算