Jsp+Servlet實(shí)現(xiàn)簡(jiǎn)單登錄注冊(cè)查詢
本文實(shí)例為大家分享了Jsp+Servlet實(shí)現(xiàn)簡(jiǎn)單登錄注冊(cè)查詢的具體代碼,供大家參考,具體內(nèi)容如下
1、注冊(cè)功能:
制作一個(gè)注冊(cè)頁(yè)面
用戶輸入:
用戶名
密碼
年齡
注冊(cè)成功:——>跳轉(zhuǎn)至登錄頁(yè)面進(jìn)行登錄
注冊(cè)失?。骸?gt;文字或其他形式的提示皆可
2、簡(jiǎn)易查詢:
制作一個(gè)查詢頁(yè)面
輸入用戶名
顯示該用戶的用戶名、密碼、年齡
演示
1.啟動(dòng)進(jìn)入登陸頁(yè)面
2.點(diǎn)擊注冊(cè),進(jìn)入注冊(cè)頁(yè)面,成功跳轉(zhuǎn)到登錄頁(yè)面
失敗則提示
回到登錄頁(yè)面,登錄成功進(jìn)入查詢頁(yè)面
登錄失敗顯示提示信息
輸入用戶名->顯示該用戶的用戶名、密碼、年齡
代碼
dao
public class UserDao { private Connection conn = null; private PreparedStatement ps=null; private int result=0; private ResultSet rs=null; //用戶注冊(cè) public int register(User user){ String sql="insert into users(name,password,age) value (?,?,?)"; try { //獲取數(shù)據(jù)庫(kù)連接對(duì)象 conn= JDBCUtil.getConnection(); //獲取數(shù)據(jù)庫(kù)操作對(duì)象 ps=conn.prepareStatement(sql); ps.setString(1,user.getName()); ps.setString(2,user.getPassword()); ps.setInt(3,user.getAge()); //執(zhí)行sql result=ps.executeUpdate(); } catch (Exception e) { e.printStackTrace(); }finally { JDBCUtil.close(null,ps,conn); } return result; } //登錄驗(yàn)證用戶信息 public int login(String userName,String password){ String sql ="select count(*) from users where name=? and password=?"; try { conn=JDBCUtil.getConnection(); ps=conn.prepareStatement(sql); ps.setString(1,userName); ps.setString(2,password); rs=ps.executeQuery(); while (rs.next()){ result=rs.getInt("count(*)"); } } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtil.close(rs,ps,conn); } return result; } //根據(jù)用戶名 顯示用戶名、密碼、年齡 public User findByName(String userName){ String sql="select name,password,age from users where name=?"; User user = null; try { conn=JDBCUtil.getConnection(); ps=conn.prepareStatement(sql); ps.setString(1,userName); rs=ps.executeQuery(); while (rs.next()){ String name = rs.getString("name"); String password = rs.getString("password"); int age = rs.getInt("age"); user = new User(name,password,age); } } catch (Exception e) { e.printStackTrace(); }finally { JDBCUtil.close(null,ps,conn); } return user; } }
entity 實(shí)體類
public class User { private int id; private String name; private String password; private int age; //set... //get... //constructor... }
service
public class UserServiceImpl implements UserService { UserDao userDao = new UserDao(); // 注冊(cè) @Override public int register(User user) { return userDao.register(user); } // 登陸 @Override public int login(String userName, String password) { return userDao.login(userName,password); } // 根據(jù)用戶名查找信息 @Override public User findByName(String userName) { return userDao.findByName(userName); } }
servlet
// FindByNameServlet public class FindByNameServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); UserService userService = new UserServiceImpl(); User user = userService.findByName(name); //將查詢結(jié)果放入request作用域 request.setAttribute("userInfo",user); request.getRequestDispatcher("/jsp/index.jsp").forward(request,response); } } // LoginServlet public class LoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1 獲取 String userName = request.getParameter("userName"); String password = request.getParameter("password"); //2 service調(diào)用dao對(duì)數(shù)據(jù)庫(kù)操作 UserService userService = new UserServiceImpl(); int result = userService.login(userName, password); //3 成功跳轉(zhuǎn)到查詢頁(yè)面,失敗跳轉(zhuǎn)到失敗頁(yè)面 if (result>0){ response.sendRedirect("/jsp/index.jsp"); }else{ response.sendRedirect("/login_error.html"); } } } // RegisterServlet public class RegisterServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { UserService userService = new UserServiceImpl(); User user = null; int result = 0; //1【調(diào)用請(qǐng)求對(duì)象】讀取【請(qǐng)求頭】參數(shù)信息,得到用戶注冊(cè)信息 String userName, password, age; userName = request.getParameter("userName"); password = request.getParameter("password"); age = request.getParameter("age"); user = new User(userName, password, Integer.valueOf(age)); //2 調(diào)用userService——>userDao // 先查詢用戶是否存在 User byName = userService.findByName(userName); if (byName!=null){ request.setAttribute("info","用戶已存在!"); request.getRequestDispatcher("/jsp/register.jsp").forward(request,response); } // 注冊(cè) result = userService.register(user); //3 設(shè)置編碼格式,防止亂碼 response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); //注冊(cè)成功:——>跳轉(zhuǎn)至登錄頁(yè)面進(jìn)行登錄 //注冊(cè)失?。骸?gt;注冊(cè)頁(yè)面提示:注冊(cè)失敗 if (result == 1) { response.sendRedirect("/login.html"); } else { request.setAttribute("info","注冊(cè)失??!"); request.getRequestDispatcher("/jsp/register.jsp").forward(request,response); } } }
JDBCUtil
public class JDBCUtil { private JDBCUtil(){} //靜態(tài)代碼塊在類加載時(shí)執(zhí)行,并且執(zhí)行一次。 static{ try { Class.forName("com.mysql.cj.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } //獲取數(shù)據(jù)庫(kù)連接對(duì)象 public static Connection getConnection() throws Exception{ String url="jdbc:mysql://127.0.0.1:3306/zy?&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"; String user="root"; String password="rootroot"; return DriverManager.getConnection(url,user,password); } /** *關(guān)閉資源 * @param conn 連接對(duì)象 * @param ps 數(shù)據(jù)庫(kù)操作對(duì)象 * @param rs 結(jié)果集 */ public static void close(ResultSet rs, Statement ps, Connection conn){ if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (ps != null) { try { ps.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
index.jsp
<%@ page import="entity.User" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>查詢頁(yè)面</title> </head> <body> <div align="center"> <h2/>輸入用戶名,查詢信息 <form action="/findByName" method="get"> <input type="text" name="name" id="name"> <input type="submit" value="查詢"> </form> <% User userInfo = (User) request.getAttribute("userInfo"); %> <% if (userInfo != null) { %> <table border="3"> <tr> <th>用戶名</th> <th>密碼</th> <th>年齡</th> </tr> <tr> <td> <%=userInfo.getName()%> </td> <td> <%=userInfo.getPassword()%> </td> <td> <%=userInfo.getAge()%> </td> </tr> </table> <% } %> </div> </body> </html>
register.jsp
<%@ page import="com.mysql.cj.util.StringUtils" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <br> <br> <% String info =(String) request.getAttribute("info"); %> <% if (!StringUtils.isNullOrEmpty(info)){ %> <h1 style="color: red;text-align: center" ><%=info%></h1> <% } %> <div align="center"> <form action="/register" method="post"> <table border="2"> <tr> <th>用戶名</th> <td><input type="text" name="userName"/></td> </tr> <tr> <th>密碼</th> <td><input type="password" name="password"/></td> </tr> <tr> <th>年齡</th> <td><input type="text" name="age"/></td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" value="注冊(cè)"/> <input type="reset" value="清空"/> </td> </tr> </table> </form> </div> </body> </html>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>servlet.LoginServlet</servlet-class> </servlet> <servlet> <servlet-name>RegisterServlet</servlet-name> <servlet-class>servlet.RegisterServlet</servlet-class> </servlet> <servlet> <servlet-name>FindByNameServlet</servlet-name> <servlet-class>servlet.FindByNameServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>RegisterServlet</servlet-name> <url-pattern>/register</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>FindByNameServlet</servlet-name> <url-pattern>/findByName</url-pattern> </servlet-mapping> <!--設(shè)置默認(rèn)歡迎文件規(guī)則--> <welcome-file-list> <welcome-file>login.html</welcome-file> <!--servlet 作為默認(rèn)歡迎文件 ‘/'需要去掉--> </welcome-file-list> </web-app>
login.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>登陸界面</title> </head> <body> <div align="center"> <font size="10px" color="#00008b">用戶登錄</font> <form action="/login" method="post"> <table border="2"> <tr> <th>用戶名</th> <td><input type="text" name="userName"/></td> </tr> <tr> <th>密碼</th> <td><input type="password" name="password"/></td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" value="登錄"/> <input type="reset" /> </td> </tr> </table> </form> <a href="/jsp/register.jsp" style="text-align: left">立即注冊(cè)</a> </div> </body> </html>
login_error.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>登錄驗(yàn)證</title> </head> <body> <div align="center"> <font size="10px" color="#00008b">用戶登錄</font><br> <font size="5px" color="red">登錄信息不存在,請(qǐng)重新登陸?。?!</font> <form action="/login" method="post"> <table border="2"> <tr> <th>用戶名</th> <td><input type="text" name="userName" /></td> </tr> <tr> <th>密碼</th> <td><input type="password" name="password" /></td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" value="登錄"/> <input type="reset"> </td> </tr> </table> </form> <a href="/jsp/register.jsp" style="text-align: left">立即注冊(cè)</a> </div> </body> </html>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JSP獲取服務(wù)器時(shí)間以倒計(jì)時(shí)的形式在頁(yè)面顯示
通過(guò)jsp獲取服務(wù)器時(shí)間在頁(yè)面以倒計(jì)時(shí)的形式顯示,具體實(shí)現(xiàn)代碼如下,感興趣的朋友可以參考下2013-08-08從textarea中獲取數(shù)據(jù)之后按原樣顯示實(shí)現(xiàn)代碼
從textarea中獲取數(shù)據(jù),按原樣顯示在某些特殊的情況下還是比較使實(shí)用的,下面為大家分享下實(shí)現(xiàn)代碼,感興趣的朋友可以參考下,希望對(duì)你有所幫助2013-04-04Jsp如何實(shí)現(xiàn)網(wǎng)頁(yè)的重定向
Jsp如何實(shí)現(xiàn)網(wǎng)頁(yè)的重定向...2006-10-10jsp中 ajax的get請(qǐng)求的中文亂碼問(wèn)題的解決方法
這篇文章介紹了jsp中ajax的get請(qǐng)求的中文亂碼問(wèn)題的解決方法,有需要的朋友可以參考一下2013-10-10struts2的select標(biāo)簽用法實(shí)例分析
這篇文章主要介紹了struts2的select標(biāo)簽用法,較為詳細(xì)的分析了Struts2中select標(biāo)簽的功能、定義及使用技巧,需要的朋友可以參考下2015-09-09JSP使用JDBC連接MYSQL數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了JSP使用JDBC連接MYSQL數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了JDBC的下載,注冊(cè)及具體使用技巧,需要的朋友可以參考下2015-12-12JSP中的編譯指令和動(dòng)作指令的兩點(diǎn)區(qū)別
編譯指令是通知Servlet引擎的處理消息,而動(dòng)作指令只是運(yùn)行時(shí)的腳本動(dòng)作,相信請(qǐng)看下文2014-07-07