Request--BeanUtils工具类

简化的是登录逻辑2,3

package cn.itcast.web.servlet;

import cn.itcast.dao.UserDao;
import cn.itcast.domain.User;
import org.apache.commons.beanutils.BeanUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;

/**
 * @author 旗木五五开
 * @create 2020-03-03 17:43
 */
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        1.设置编码(防止乱码)
        req.setCharacterEncoding("utf-8");

/*
//        2.获取请求参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");
//        3.封装user对象
        User loginuser = new User();
        loginuser.setUsername(username);
        loginuser.setPassword(password);
*/


// 2.获取所有请求参数 Map<String, String[]> map = req.getParameterMap(); // 3.创建user对象,空的 User loginuser = new User(); // 3.2使用BeanUtils封装 try { BeanUtils.populate(loginuser,map); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } // 4.调用UserDao的login方法,匹配数据库里的数据 UserDao dao = new UserDao(); User user = dao.login(loginuser); // 5.判断user if (user == null) { // 登录失败,跳转到failServlet req.getRequestDispatcher("/failServlet").forward(req, resp); } else { // 登录成功 // 1.存储数据,起名user,值就是user这个对象 req.setAttribute("user", user); // 2.转发 req.getRequestDispatcher("/successServlet").forward(req, resp); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); } }

 BeanUtils用于封装JavaBean的

JavaBean:标准的Java类

JavaBean的要求

1.类必须被public修饰

2.必须提供空参的构造器

3.成员变量必须使用private修饰

4.提供公共的setter和getter方法

JavaBean:功能

对应数据库的表,封装数据

概念:

成员变量:方法外的变量

属性:setter和getter方法截取后的产物

       第一个截取动作去除get或者set,    第二步首字母小写

这时候属性大多数就合成员变量名称一样,也可以不一样。

这个方法只不过操作的是成员变量的值

验证

package cn.itcast.domain;

/**
 * @author 旗木五五开
 * @create 2020-03-01 15:22
 * 用户的实体类
 */
public class User {
    private int id;
    private String username;
    private String password;
    private String gender;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", gender='" + gender + '\'' +
                '}';
    }
}
扫描二维码关注公众号,回复: 9556458 查看本文章

方法:

1.setProperty()设置属性值

package cn.itcast.test;

import cn.itcast.domain.User;
import org.apache.commons.beanutils.BeanUtils;
import org.junit.Test;

import java.lang.reflect.InvocationTargetException;

/**
 * @author 旗木五五开
 * @create 2020-03-03 19:03
 */
public class BeanUtilsTest {
    @Test
    public void test(){
        User user =new User();
        try {
            BeanUtils.setProperty(user,"username","zhangsan");
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        System.out.println(user);
    }
}

2.getProperty()获取属性值

3.populate()封装属性值

猜你喜欢

转载自www.cnblogs.com/rijiyuelei/p/12403871.html