關於Ajax非同步提交登入及增刪改查小專案製作-登入
阿新 • • 發佈:2021-07-14
關於Ajax非同步提交登入及增刪改查小專案製作-登入
一、登入的完成
先導包jquery和MySql
//非同步提交
<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script> //在這裡用來支援$寫法 <script type="text/javascript">非同步提交不用from表單所以提交內容如下
$(function(){
$("#bt").click(function () {
//點選id為bt的按鈕執行以下方法 $.ajax({ type:"post", //提交方式 url:"login.do", //提交地址 這裡配置提交到servlet需要web.xml看下文 data:{"username":$("#username").val(), //獲取username的值 "password":$("#password").val()}, //提交內容 success:function(msg){ alert(msg); } //成功返回執行方法 }) }) })</script>
//沒有使用from表單,所以這裡用betton.id執行相應方法
使用者名稱:<input type="text" id="username"><br>
祕密:<input type="password" id="password"><br>
<input type="button" id="bt" value="登入">
這裡xml得配置
<!-- 登入 --> <servlet> <servlet-name>login</servlet-name> <servlet-class>Servlet.UserServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>login</servlet-name> <url-pattern>/login.do</url-pattern> </servlet-mapping> //select連結後臺,select-mapping只負責前臺資料,用servlet-name搭建前後臺數據橋樑
控制層Servlet
1 protected void doPost(HttpServletRequest req, HttpServletResponse resp) 2 throws ServletException, IOException { 3 //這裡就是用來支援中文 4 req.setCharacterEncoding("utf-8"); 5 resp.setCharacterEncoding("utf-8"); 6 7 8 9 String username=req.getParameter("username"); 10 String password=req.getParameter("password"); 11 12 UserService us=new UserService(); 13 14 try { 15 us.login(username,password); 16 resp.getWriter().write("登入成功!"); 17 } catch (Exception e) { 18 // TODO Auto-generated catch block 19 //e.printStackTrace(); 20 resp.getWriter().write(e.getMessage()); 21 } 22 }
服務層service
public void login(String username, String password) throws Exception { UserDao ud=new UserDao() ; //連結Dao user user = ud.login(username,password); //接收Dao返回內容 這裡得建立user實體類 if (user.getUsername()==null &&user.getPassword()==null) { throw new Exception("登陸失敗!"); } }
資料持久層Dao
老樣子(先寫連結方法,和設定會用到的全域性變數)Connection conn; Statement stem; ResultSet rs; public void lianjie() { try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bj", "root", "123456"); } catch (Exception e) {e.printStackTrace();} } public user login(String username, String password) throws Exception { this.lianjie(); stem = conn.createStatement(); rs = stem.executeQuery("select * from user where username='"+username+"' and password='"+password+"'"); user user = new user(); while (rs.next()) { user.setUsername(rs.getString("username"));//從資料庫內容rs,對應屬性賦值實體類 user.setPassword(rs.getString("password")); } //ResultSet結果集有一個索引指標,最初這個指標是指向第一條記錄的前一個位置,也就是沒有指向任何內容,使用aaa.next()方法就會使指標往後移動指向下一個記錄,所以一定要先執行一次next()函式才會讓指標指向第一條記錄。正因為如此,直接【result=rs.getInt("courseId");】這樣是沒用的。 rs.close(); //關閉 conn.close(); return user; } }人生永遠無法回頭,就連這平淡不驚的一幕,終有一日也會碎落滿地