生活随笔
收集整理的這篇文章主要介紹了
登录案例_BeanUtils基本使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
* 開發步驟
?? ?1. 創建項目,導入html頁面,配置文件,jar包
?? ?2. 創建數據庫環境
?? ??? ?CREATE DATABASE test;
?? ??? ?USE test;
CREATE TABLE `USER` (`id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(255) DEFAULT NULL,`password` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into user values(null,'superbaby','123456');
package com.learn.domain;/*** 用戶的實體類*/
public class User {private int id;private String username;private String password;private String gender;public void setHehe(String gender){this.gender = gender;}public String getHehe(){return 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;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", gender='" + gender + '\'' +'}';}
}
package com.learn.util;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource;
import javax.xml.crypto.Data;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;/*** JDBC工具類 使用Durid連接池*/
public class JDBCUtils {private static DataSource ds ;static {try {//1.加載配置文件Properties pro = new Properties();//使用ClassLoader加載配置文件,獲取字節輸入流InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");pro.load(is);//2.初始化連接池對象ds = DruidDataSourceFactory.createDataSource(pro);} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}/*** 獲取連接池對象*/public static DataSource getDataSource(){return ds;}/*** 獲取連接Connection對象*/public static Connection getConnection() throws SQLException {return ds.getConnection();}
}
package com.learn.dao;import com.learn.domain.User;
import com.learn.util.JDBCUtils;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;/*** 操作數據庫中User表的類*/
public class UserDao {//聲明JDBCTemplate對象共用private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());/*** 登錄方法* @param loginUser 只有用戶名和密碼* @return user包含用戶全部數據,沒有查詢到,返回null*/public User login(User loginUser){try {//1.編寫sqlString sql = "select * from user where username = ? and password = ?";//2.調用query方法User user = template.queryForObject(sql,new BeanPropertyRowMapper<User>(User.class),loginUser.getUsername(), loginUser.getPassword());return user;} catch (DataAccessException e) {e.printStackTrace();//記錄日志return null;}}
}
package com.learn.test;import com.learn.dao.UserDao;
import com.learn.domain.User;
import org.junit.Test;public class UserDaoTest {@Testpublic void testLogin(){User loginuser = new User();loginuser.setUsername("superbaby");loginuser.setPassword("123111");UserDao dao = new UserDao();User user = dao.login(loginuser);System.out.println(user);}
}
package com.learn.web.servlet;import com.learn.dao.UserDao;
import com.learn.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;@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {@Overrideprotected 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.判斷userif(user == null){//登錄失敗req.getRequestDispatcher("/failServlet").forward(req,resp);}else{//登錄成功//存儲數據req.setAttribute("user",user);//轉發req.getRequestDispatcher("/successServlet").forward(req,resp);}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {this.doGet(req,resp);}
}
package com.learn.web.servlet;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;@WebServlet("/failServlet")
public class FailServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//給頁面寫一句話//設置編碼response.setContentType("text/html;charset=utf-8");//輸出response.getWriter().write("登錄失敗,用戶名或密碼錯誤");}protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request,response);}
}
package com.learn.web.servlet;import com.learn.domain.User;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;@WebServlet("/successServlet")
public class SuccessServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//獲取request域中共享的user對象User user = (User) request.getAttribute("user");if(user != null){//給頁面寫一句話//設置編碼response.setContentType("text/html;charset=utf-8");//輸出response.getWriter().write("登錄成功!"+user.getUsername()+",歡迎您");}}protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request,response);}
}
package com.learn.test;import com.learn.domain.User;
import org.apache.commons.beanutils.BeanUtils;
import org.junit.Test;import java.lang.reflect.InvocationTargetException;public class BeanUtilsTest {@Testpublic void test(){User user = new User();try {BeanUtils.setProperty(user,"hehe","male");System.out.println(user);String gender = BeanUtils.getProperty(user, "hehe");System.out.println(gender);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();}}
}
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///test
username=root
password=123456
initialSize=5
maxActive=10
maxWait=3000
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><form action="/day14_test/loginServlet" method="post">用戶名:<input type="text" name="username"> <br>密碼:<input type="password" name="password"><br><input type="submit" value="登錄"></form>
</body>
</html>
8. login.html中form表單的action路徑的寫法
?? ?* 虛擬目錄+Servlet的資源路徑
9. BeanUtils工具類,簡化數據封裝
?? ?* 用于封裝JavaBean的
?? ?1. JavaBean:標準的Java類
?? ??? ?1. 要求:
?? ??? ??? ?1. 類必須被public修飾
?? ??? ??? ?2. 必須提供空參的構造器
?? ??? ??? ?3. 成員變量必須使用private修飾
?? ??? ??? ?4. 提供公共setter和getter方法
?? ??? ?2. 功能:封裝數據
2. 概念:
?? ?成員變量:
?? ?屬性:setter和getter方法截取后的產物
?? ??? ?例如:getUsername() --> Username--> username
?
3. 方法:
?? ?1. setProperty()
?? ?2. getProperty()
?? ?3. populate(Object obj , Map map):將map集合的鍵值對信息,封裝到對應的JavaBean對象中
?
總結
以上是生活随笔為你收集整理的登录案例_BeanUtils基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。