简化的是登录逻辑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); } }