1. 程式人生 > 其它 >關於Ajax非同步提交登入及增刪改查小專案製作-登入

關於Ajax非同步提交登入及增刪改查小專案製作-登入

關於Ajax非同步提交登入及增刪改查小專案製作-登入

一、登入的完成

先導包jquery和MySql
//非同步提交
<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>       //在這裡用來支援$寫法
<script type="text/javascript">
$(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表單所以提交內容如下
//沒有使用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;
    }
}
人生永遠無法回頭,就連這平淡不驚的一幕,終有一日也會碎落滿地