一篇超级详细的jsp+servlet+jdbc+mysql检验登录操作(IntelliJ IDEA)
生活随笔
收集整理的這篇文章主要介紹了
一篇超级详细的jsp+servlet+jdbc+mysql检验登录操作(IntelliJ IDEA)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
以下為工程目錄,可以提前建好:
第一步:首先在數(shù)據(jù)庫建好表:
該表為用于登錄的用戶信息表。
第二步:做好前端登錄的login.jsp頁面:
代碼如下:
第三步:集成JDBC環(huán)境
3.1 導(dǎo)入mysql的驅(qū)動添加到module中。
3.1.1 將下載好的mysql驅(qū)動復(fù)制粘貼到web/WEB-INF/lib中。
3.1.2 打開project Structure(Ctrl + Alt + Shift +s),點擊左側(cè)Modules,選擇你要添加的module,點擊右側(cè)+按鈕找到mysql的jar包,點擊ok完成。
3.2 創(chuàng)建jdbc.properties,存放在src下 , 注意 : 一定要是項目的src下,這樣才能被讀取到。
driverclass=com.mysql.jdbc.Driver # stuproject為數(shù)據(jù)庫的表名 url=jdbc:mysql://localhost/stuproject # 連接數(shù)據(jù)庫的賬號 name=root # 連接數(shù)據(jù)庫的密碼(安裝mysql的時候自己設(shè)的) password=1234563.3 創(chuàng)建用于獲取連接和關(guān)閉數(shù)據(jù)庫連接資源的工具類JDBCUtils.java,可以創(chuàng)建一個utils包專門用于存放工具類 , 該類中所有方法都為靜態(tài)方法 , 可以直接通過類名JDBCUtils調(diào)用
public class JDBCUtils {static String driverclass = null;static String url = null;static String name = null;static String password = null;static{try {Properties pros = new Properties();// 利用類加載器classLoader獲取src下的資源InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");pros.load(is);//讀取輸入流,也就是讀取我們在jdbc.properties下存放的各種連接數(shù)據(jù)庫的屬性//讀取連接數(shù)據(jù)庫的屬性,通過這些屬性才能連接到數(shù)據(jù)庫driverclass = pros.getProperty("driverclass");url = pros.getProperty("url");name = pros.getProperty("name");password = pros.getProperty("password");} catch (IOException e) {e.printStackTrace();}}/*** 該方法用于獲取數(shù)據(jù)庫連接* @return*/public static Connection getConn(){Connection conn = null;try {//1.利用反射注冊driverclassClass.forName(driverclass);//2.建立連接 參數(shù)一:協(xié)議 + 訪問的數(shù)據(jù)庫,參數(shù)二:用戶名,參數(shù)三: 密碼。conn = DriverManager.getConnection(url, name, password);} catch (Exception e) {e.printStackTrace();}return conn;}/*** 該方法用于關(guān)閉連接資源,不關(guān)閉就會浪費資源* @param conn*/public static void release(Connection conn,PreparedStatement ps){closeConn(conn);closePs(ps);}public static void release(Connection conn,PreparedStatement ps,ResultSet rs){closePs(ps);closeConn(conn);closeRs(rs);}public static void closeConn(Connection conn){try {if(conn != null){conn.close();}} catch (SQLException e) {e.printStackTrace();} finally {conn = null;}}public static void closePs(PreparedStatement ps){try {if(ps !=null){ps.close();}} catch (SQLException e) {e.printStackTrace();} finally {ps=null;}}public static void closeRs(ResultSet rs){try {if(rs !=null){rs.close();}} catch (SQLException e) {e.printStackTrace();} finally {rs=null;}}}第四步:搭建用于處理數(shù)據(jù)庫表的DAO(操作表)和DaoImpl(實現(xiàn)檢驗登錄的方法)。
4.1 UserDao接口(用于操作User表)
接口定義了一套標(biāo)準(zhǔn),沒有具體的實現(xiàn)。
public interface UserDao {/*** 檢驗登錄的方法*/boolean login(String username,String password); }4.2 UserDaoImpl實現(xiàn)類
該類實現(xiàn)了UserDao接口,用于完成檢驗登錄的方法。
public class UserDaoImpl implements UserDao {/*** 用于檢驗登錄的方法* @param username* @param password* @return*/@Overridepublic boolean login(String username, String password) {Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try {//1.獲取數(shù)據(jù)庫連接conn = JDBCUtils.getConn();//2.預(yù)編譯sql語句String sql = "select * from t_user where username=? and password=?";ps = conn.prepareStatement(sql);//3.填充占位符ps.setString(1,username);ps.setString(2,password);//4.執(zhí)行查詢語句rs = ps.executeQuery();//5.如果結(jié)果集有對象,則查詢到了,即返回true。若沒查到。則返回falsereturn rs.next();} catch (SQLException e) {e.printStackTrace();} finally {//6.關(guān)閉資源JDBCUtils.release(conn,ps,rs);}return false;} }第五步:完成用于跳轉(zhuǎn)的LoginServlet.java
public class LoginServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");//設(shè)置request的字符集response.setContentType("text/html;charset=utf-8");//設(shè)置response的字符集//1.獲取從前端頁面中傳過來的username和password值String userName = request.getParameter("username");String passWord = request.getParameter("password");//2.創(chuàng)建dao實現(xiàn)類的對象,調(diào)用檢驗登錄的方法login().UserDaoImpl userDao = new UserDaoImpl();//數(shù)據(jù)庫查到了即返回 true,沒查到即返回 falseboolean isSuccess = userDao.login(userName, passWord);if(isSuccess){//用于相應(yīng)給客戶,success為true --->登錄成功response.getWriter().write("登錄成功");}else{response.getWriter().write("登錄失敗");}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);} }第六步. 配置web.xml,這是最關(guān)鍵的一步
<servlet><servlet-name>MyServletName</servlet-name><! servlet-name隨意起,和下面的servlet-name對應(yīng) !><servlet-class>com.sms.servlet.LoginServlet</servlet-class> </servlet><! 這塊是LoginServlet類的全類名 !><servlet-mapping><servlet-name>MyServletName</servlet-name><! 和上面的servlet-name對應(yīng)!><url-pattern>/LoginServlet</url-pattern><! jsp表單發(fā)送的請求路徑,和jsp里form標(biāo)簽action屬性值一致 !> </servlet-mapping>最后一步,運行l(wèi)ogin.jsp,輸入數(shù)據(jù)庫中有的username和password,登錄成功后頁面會打印出登錄成功
總結(jié)
以上是生活随笔為你收集整理的一篇超级详细的jsp+servlet+jdbc+mysql检验登录操作(IntelliJ IDEA)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决iIntelliJ IDEA导入js
- 下一篇: linux cmake编译源码,linu