JavaWeb 增刪改查功能

1.今天來寫一個簡單的增刪改查功能,這個項目還是接著在昨天寫的 --JavaWeb實現簡單登錄注冊-- 來寫的。

登錄成功進來后對學生信息的增刪改查

2.項目文件為:

 

 

3.好了,直接貼上今天新寫的代碼,昨天的代碼就不重復貼了。

src文件下的代碼:

 controller:

 1 package com.maike.controller;
 2 
 3 import java.io.IOException;
 4 import java.util.List;
 5 
 6 import javax.servlet.ServletException;
 7 import javax.servlet.annotation.WebServlet;
 8 import javax.servlet.http.HttpServlet;
 9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11 
12 import com.maike.model.Student;
13 import com.maike.model.StudentDto;
14 import com.maike.service.UserService;
15 import com.maike.service.UserServiceImpl;
16 
17 /**
18  * Servlet implementation class AddStuServlet
19  */
20 @WebServlet("/AddStuServlet")
21 public class AddStuServlet extends HttpServlet {
22     UserService userService = new UserServiceImpl();
23     private static final long serialVersionUID = 1L;
24        
25     /**
26      * @see HttpServlet#HttpServlet()
27      */
28     public AddStuServlet() {
29         super();
30         // TODO Auto-generated constructor stub
31     }
32 
33     /**
34      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
35      */
36     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
37         // TODO Auto-generated method stub
38         response.getWriter().append("Served at: ").append(request.getContextPath());
39     }
40 
41     /**
42      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
43      */
44     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
45         // TODO Auto-generated method stub
46         String stuName = request.getParameter("stuName");
47         String stuSex = request.getParameter("stuSex");
48         String stuAge = request.getParameter("stuAge");
49         String stuClass = request.getParameter("stuClass");
50         
51         StudentDto studentDto = new StudentDto();
52         studentDto.setStuName(stuName);
53         studentDto.setStuSex(stuSex);
54         studentDto.setStuAge(stuAge);
55         studentDto.setStuClass(stuClass);
56         
57         int k = userService.addStu(studentDto);
58         if(k > 0) {
59             List<Student> list = userService.seleStuAll();
60             request.setAttribute("stuList", list);
61             request.getRequestDispatcher("showStu.jsp").forward(request, response);
62         }else {
63             response.getWriter().append("添加失敗").append(request.getContextPath());
64             request.getRequestDispatcher("addStu.jsp").forward(request, response);
65         }
66     }
67 
68 }
AddStuServlet
 1 package com.maike.controller;
 2 
 3 import java.io.IOException;
 4 import java.util.List;
 5 
 6 import javax.servlet.ServletException;
 7 import javax.servlet.annotation.WebServlet;
 8 import javax.servlet.http.HttpServlet;
 9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11 
12 import com.maike.model.Student;
13 import com.maike.service.UserService;
14 import com.maike.service.UserServiceImpl;
15 
16 /**
17  * Servlet implementation class DeleteStuServlet
18  */
19 @WebServlet("/DeleteStuServlet")
20 public class DeleteStuServlet extends HttpServlet {
21     UserService userService = new UserServiceImpl();
22     private static final long serialVersionUID = 1L;
23        
24     /**
25      * @see HttpServlet#HttpServlet()
26      */
27     public DeleteStuServlet() {
28         super();
29         // TODO Auto-generated constructor stub
30     }
31 
32     /**
33      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
34      */
35     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
36         // TODO Auto-generated method stub
37         String stuName = request.getParameter("stuName");
38         int  k = userService.deleteStu(stuName);
39         List<Student> list = userService.seleStuAll();
40         request.setAttribute("stuList", list);
41         request.getRequestDispatcher("showStu.jsp").forward(request, response);
42     }
43 
44     /**
45      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
46      */
47     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
48         // TODO Auto-generated method stub
49         doGet(request, response);
50     }
51 
52 }
DeleteStuServlet
 1 package com.maike.controller;
 2 
 3 import java.io.IOException;
 4 import javax.servlet.ServletException;
 5 import javax.servlet.annotation.WebServlet;
 6 import javax.servlet.http.HttpServlet;
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 
10 /**
11  * Servlet implementation class ToAddStuServlet
12  */
13 @WebServlet("/ToAddStuServlet")
14 public class ToAddStuServlet extends HttpServlet {
15     private static final long serialVersionUID = 1L;
16        
17     /**
18      * @see HttpServlet#HttpServlet()
19      */
20     public ToAddStuServlet() {
21         super();
22         // TODO Auto-generated constructor stub
23     }
24 
25     /**
26      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
27      */
28     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
29         // TODO Auto-generated method stub
30         request.getRequestDispatcher("addStu.jsp").forward(request, response);
31         
32     }
33 
34     /**
35      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
36      */
37     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
38         // TODO Auto-generated method stub
39         doGet(request, response);
40     }
41 
42 }
ToAddStuServlet
 1 package com.maike.controller;
 2 
 3 import java.io.IOException;
 4 import javax.servlet.ServletException;
 5 import javax.servlet.annotation.WebServlet;
 6 import javax.servlet.http.HttpServlet;
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 
10 import com.maike.model.Student;
11 import com.maike.service.UserService;
12 import com.maike.service.UserServiceImpl;
13 
14 /**
15  * Servlet implementation class ToUpdateStuServlet
16  */
17 @WebServlet("/ToUpdateStuServlet")
18 public class ToUpdateStuServlet extends HttpServlet {
19     UserService userService = new UserServiceImpl();
20     private static final long serialVersionUID = 1L;
21        
22     /**
23      * @see HttpServlet#HttpServlet()
24      */
25     public ToUpdateStuServlet() {
26         super();
27         // TODO Auto-generated constructor stub
28     }
29 
30     /**
31      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
32      */
33     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
34         // TODO Auto-generated method stub
35         String stuName = request.getParameter("stuName");
36         Student student = userService.getStuByName(stuName);
37         request.setAttribute("student", student);
38         request.getRequestDispatcher("updateStu.jsp").forward(request, response);
39     }
40 
41     /**
42      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
43      */
44     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
45         // TODO Auto-generated method stub
46         doGet(request, response);
47     }
48 
49 }
ToUpdateStuServlet
 1 package com.maike.controller;
 2 
 3 import java.io.IOException;
 4 import java.util.List;
 5 
 6 import javax.servlet.ServletException;
 7 import javax.servlet.annotation.WebServlet;
 8 import javax.servlet.http.HttpServlet;
 9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11 
12 import com.maike.model.Student;
13 import com.maike.service.UserService;
14 import com.maike.service.UserServiceImpl;
15 
16 /**
17  * Servlet implementation class UpdateStuServlet
18  */
19 @WebServlet("/UpdateStuServlet")
20 public class UpdateStuServlet extends HttpServlet {
21     UserService userService = new UserServiceImpl();
22     private static final long serialVersionUID = 1L;
23        
24     /**
25      * @see HttpServlet#HttpServlet()
26      */
27     public UpdateStuServlet() {
28         super();
29         // TODO Auto-generated constructor stub
30     }
31 
32     /**
33      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
34      */
35     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
36         // TODO Auto-generated method stub
37         response.getWriter().append("Served at: ").append(request.getContextPath());
38     }
39 
40     /**
41      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
42      */
43     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
44         // TODO Auto-generated method stub
45         request.setCharacterEncoding("utf-8");
46         String stuName = request.getParameter("stuName");
47         String stuSex = request.getParameter("stuSex");
48         String stuClass = request.getParameter("stuClass");
49         Student student = new Student();
50         student.setStuName(stuName);
51         student.setStuSex(stuSex);
52         student.setStuClass(stuClass);
53         int k = userService.updateStu(student);
54         List<Student> list = userService.seleStuAll();
55         request.setAttribute("stuList", list);
56         request.getRequestDispatcher("showStu.jsp").forward(request, response);
57     }
58 
59 }
UpdateStuServlet

dao:

 1 package com.maike.dao;
 2 
 3 import java.util.List;
 4 
 5 import com.maike.model.Student;
 6 
 7 public interface StudentDao {
 8     
 9     List<Student> selectAll();
10     Student selectByName(String stuName);
11     int insert(Student student);
12     int update(Student student);
13     int delete(String stuName);
14 
15 }
StudentDao
  1 package com.maike.dao;
  2 
  3 import java.sql.Connection;
  4 import java.sql.PreparedStatement;
  5 import java.sql.ResultSet;
  6 import java.sql.SQLException;
  7 import java.util.ArrayList;
  8 import java.util.List;
  9 
 10 import com.maike.model.Student;
 11 import com.maike.util.ConnectionUtil;
 12 
 13 public class StudentDaoImpl implements StudentDao {
 14     Student student;
 15     Connection con = null;
 16     PreparedStatement pt = null;
 17     ResultSet rs = null;
 18     String sql;
 19 
 20     /**
 21      * 查詢所有學生
 22      */
 23     @Override
 24     public List<Student> selectAll() {
 25         // TODO Auto-generated method stub
 26         List<Student> list = new ArrayList<Student>();
 27         sql = "select * from student";
 28         try {
 29             con = ConnectionUtil.getConnection();
 30             pt = con.prepareStatement(sql);
 31             rs = pt.executeQuery();
 32             
 33             while(rs.next()) {
 34                 student = new Student();
 35                 student.setStuId(rs.getInt("stu_id"));
 36                 student.setStuName(rs.getString("stu_name"));
 37                 student.setStuSex(rs.getString("stu_sex"));
 38                 student.setStuAge(rs.getInt("stu_age"));
 39                 student.setStuClass(rs.getString("stu_class"));
 40                 
 41                 list.add(student);
 42             }
 43         } catch (SQLException e) {
 44             // TODO Auto-generated catch block
 45             e.printStackTrace();
 46         }finally {
 47             ConnectionUtil.closeRe(con, pt, rs);
 48         }
 49         return list;
 50     }
 51 
 52     /**
 53      * 通過名字查詢學生
 54      */
 55     @Override
 56     public Student selectByName(String stuName) {
 57         // TODO Auto-generated method stub
 58         sql = "select * from student where stu_name = ?";
 59         try {
 60             con = ConnectionUtil.getConnection();
 61             pt = con.prepareStatement(sql);
 62             pt.setString(1, stuName);
 63             rs = pt.executeQuery();
 64             
 65             while(rs.next()) {
 66                 student = new Student();
 67                 student.setStuId(rs.getInt("stu_id"));
 68                 student.setStuName(rs.getString("stu_name"));
 69                 student.setStuSex(rs.getString("stu_sex"));
 70                 student.setStuAge(rs.getInt("stu_age"));
 71                 student.setStuClass(rs.getString("stu_class"));
 72             }
 73         } catch (SQLException e) {
 74             // TODO Auto-generated catch block
 75             e.printStackTrace();
 76         }finally {
 77             ConnectionUtil.closeRe(con, pt, rs);
 78         }
 79         return student;
 80     }
 81 
 82     /**
 83      * 添加學生
 84      */
 85     @Override
 86     public int insert(Student student) {
 87         // TODO Auto-generated method stub
 88         int k = 0;
 89         sql = "insert into student values(null,?,?,?,?)";
 90         try {
 91             con = ConnectionUtil.getConnection();
 92             pt = con.prepareStatement(sql);
 93             pt.setString(1, student.getStuName());
 94             pt.setString(2, student.getStuSex());
 95             pt.setInt(3, student.getStuAge());
 96             pt.setString(4, student.getStuClass());
 97             
 98             k = pt.executeUpdate();
 99         } catch (SQLException e) {
100             // TODO Auto-generated catch block
101             e.printStackTrace();
102         }finally {
103             ConnectionUtil.closeRe(con, pt);
104         }
105         return k;
106     }
107 
108     /**
109      * 更新學生
110      */
111     @Override
112     public int update(Student student) {
113         // TODO Auto-generated method stub
114         int k = 0;
115         sql = "update student set stu_sex = ? ,stu_class = ? where stu_name = ?";
116         try {
117             con = ConnectionUtil.getConnection();
118             pt = con.prepareStatement(sql);
119             pt.setString(1, student.getStuSex());
120             pt.setString(2, student.getStuClass());
121             pt.setString(3, student.getStuName());
122             
123             k = pt.executeUpdate();
124         } catch (SQLException e) {
125             // TODO Auto-generated catch block
126             e.printStackTrace();
127         }finally {
128             ConnectionUtil.closeRe(con, pt);
129         }
130         return k;
131     }
132 
133     /**
134      * 通過名字刪除學生
135      */
136     @Override
137     public int delete(String stuName) {
138         // TODO Auto-generated method stub
139         int k = 0;
140         sql = "delete from student where stu_name = ?";
141         try {
142             con = ConnectionUtil.getConnection();
143             pt = con.prepareStatement(sql);
144             pt.setString(1, stuName);
145             
146             k = pt.executeUpdate();
147         } catch (SQLException e) {
148             // TODO Auto-generated catch block
149             e.printStackTrace();
150         }finally {
151             ConnectionUtil.closeRe(con, pt);
152         }
153         return k;
154     }
155 
156 }
StudentDaoImpl

model:

 1 package com.maike.model;
 2 
 3 public class Student {
 4     
 5     private int stuId;
 6     
 7     private String stuName;
 8     
 9     private String stuSex;
10     
11     private int stuAge;
12     
13     private String stuClass;
14 
15     public int getStuId() {
16         return stuId;
17     }
18 
19     public void setStuId(int stuId) {
20         this.stuId = stuId;
21     }
22 
23     public String getStuName() {
24         return stuName;
25     }
26 
27     public void setStuName(String stuName) {
28         this.stuName = stuName;
29     }
30 
31     public String getStuSex() {
32         return stuSex;
33     }
34 
35     public void setStuSex(String stuSex) {
36         this.stuSex = stuSex;
37     }
38 
39     public int getStuAge() {
40         return stuAge;
41     }
42 
43     public void setStuAge(int stuAge) {
44         this.stuAge = stuAge;
45     }
46 
47     public String getStuClass() {
48         return stuClass;
49     }
50 
51     public void setStuClass(String stuClass) {
52         this.stuClass = stuClass;
53     }
54 
55     @Override
56     public String toString() {
57         return "Student [stuId=" + stuId + ", stuName=" + stuName + ", stuSex=" + stuSex + ", stuAge=" + stuAge
58                 + ", stuClass=" + stuClass + "]";
59     }
60 
61 }
Student
 1 package com.maike.model;
 2 
 3 public class StudentDto {
 4 
 5     private String stuId;
 6     
 7     private String stuName;
 8     
 9     private String stuSex;
10     
11     private String stuAge;
12     
13     private String stuClass;
14 
15     public String getStuId() {
16         return stuId;
17     }
18 
19     public void setStuId(String stuId) {
20         this.stuId = stuId;
21     }
22 
23     public String getStuName() {
24         return stuName;
25     }
26 
27     public void setStuName(String stuName) {
28         this.stuName = stuName;
29     }
30 
31     public String getStuSex() {
32         return stuSex;
33     }
34 
35     public void setStuSex(String stuSex) {
36         this.stuSex = stuSex;
37     }
38 
39     public String getStuAge() {
40         return stuAge;
41     }
42 
43     public void setStuAge(String stuAge) {
44         this.stuAge = stuAge;
45     }
46 
47     public String getStuClass() {
48         return stuClass;
49     }
50 
51     public void setStuClass(String stuClass) {
52         this.stuClass = stuClass;
53     }
54 
55     @Override
56     public String toString() {
57         return "StudentDto [stuId=" + stuId + ", stuName=" + stuName + ", stuSex=" + stuSex + ", stuAge=" + stuAge
58                 + ", stuClass=" + stuClass + "]";
59     }
60 
61 }
StudentDto

service:

 1 package com.maike.service;
 2 
 3 import java.util.List;
 4 
 5 import com.maike.model.Student;
 6 import com.maike.model.StudentDto;
 7 
 8 public interface UserService {
 9     
10     int insertUser(String userName,String userPwd,String userRePwd);
11     int judgeLogin(String userName,String userPwd);
12     
13     List<Student> seleStuAll();
14     int addStu(StudentDto studentDto);
15     int updateStu(Student student);
16     int deleteStu(String stuName);
17     Student getStuByName(String stuName);
18 
19 }
UserService
 1     /**
 2      * seleStuAll:查詢所有學生信息. <br/>
 3      */
 4     @Override
 5     public List<Student> seleStuAll() {
 6         // TODO Auto-generated method stub
 7         return studentDao.selectAll();
 8     }
 9 
10     /**
11      * addStu:添加學生信息 .<br/>
12      */
13     @Override
14     public int addStu(StudentDto studentDto) {
15         // TODO Auto-generated method stub
16         int k = 0;
17         String stuName = studentDto.getStuName();
18         String stuAge = studentDto.getStuAge();
19         if(stuName == null || stuAge == null) {
20             return k;
21         }
22         int IntAge = Integer.parseInt(stuAge);
23         Student student = new Student();
24         student.setStuName(stuName);
25         student.setStuSex(studentDto.getStuSex());
26         student.setStuAge(IntAge);
27         student.setStuClass(studentDto.getStuClass());
28         k = studentDao.insert(student);
29         return k;
30     }
31 
32     /**
33      * updateStu:修改學生信息 .<br/>
34      */
35     @Override
36     public int updateStu(Student student) {
37         // TODO Auto-generated method stub
38         return studentDao.update(student);
39     }
40 
41     /**
42      * deleteStu :刪除學生信息 .<br/>
43      */
44     @Override
45     public int deleteStu(String stuName) {
46         // TODO Auto-generated method stub
47         return studentDao.delete(stuName);
48     }
49 
50     /**
51      * 通過名字查詢學生
52      */
53     @Override
54     public Student getStuByName(String stuName) {
55         // TODO Auto-generated method stub
56         return studentDao.selectByName(stuName);
57     }
UserServiceImpl

jsp頁面:

 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 8 <title>學生信息</title>
 9 </head>
10 <body>
11   <br/>
12   <br/>
13   <br/>
14   <h2 align = "center">學生信息列表</h2>
15     <table align = "center" width="15%">
16         <tr>
17             <th align = "center"><a href = "ToAddStuServlet"><button style = "color:blue">添加學生</button></a></th>
18         </tr>
19     </table>
20     <table align = "center">
21         <tr>
22             <th>姓名</th><th>性別</th><th>年齡</th><th>班級</th><th colspan="2">管理</th>
23         </tr>
24         <c:forEach var = "list" items="${stuList}">
25         <tr>
26             <td>${list.stuName }</td><td>${list.stuSex}</td><td>${list.stuAge }</td><td>${list.stuClass}</td>
27             <td><a href = "DeleteStuServlet?stuName=${list.stuName }" ><button style = "color:blue">刪除</button></a></td><td><a href = "ToUpdateStuServlet?stuName=${list.stuName }"><button style = "color:blue">修改</button></a></td>
28         </tr>
29         </c:forEach>
30     </table>
31 </body>
32 </html>
showStu
 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 7 <title>添加頁面</title>
 8 </head>
 9 <body>
10 <br>
11 <br>
12 <br>
13 <h2 align = "center">添加頁面</h2>
14     <form action="AddStuServlet" method = "post">
15         <table align = "center">
16             <tr>
17                 <td>名字</td><td><input type = "text" name = "stuName" ></td>
18             </tr>
19             <tr>
20                 <td>性別</td><td><input type = "text" name = "stuSex" ></td>
21             </tr>
22             <tr>
23                 <td>年齡</td><td><input type = "text" name = "stuAge" placeholder ="請輸入整數" ></td>
24             </tr>
25             <tr>
26                 <td>班級</td><td><input type = "text" name = "stuClass" ></td>
27             </tr>
28             <tr>
29                 <td colspan="2" align = "center"><input type="submit" value = "添加" style="color:blue" ></td>
30             </tr>
31         </table>
32     </form>
33 </body>
34 </html>
addStu
 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 7 <title>修改頁面</title>
 8 </head>
 9 <body>
10 <br>
11 <br>
12 <br>
13 <h2 align = "center">修改頁面</h2>
14     <form action="UpdateStuServlet" method = "post" align = "center">
15         <table align = "center">
16             <tr>
17                 <td>名字</td><td><input type = "text" name = "stuName" value = "${student.stuName }" readonly="readonly" ></td>
18             </tr>
19             <tr>
20                 <td>性別</td><td><input type = "text" name = "stuSex" value  = "${student.stuSex }"></td>
21             </tr>
22             <tr>
23                 <td>年齡</td><td><input type = "text" name = "stuAge" value  = "${student.stuAge }" disabled="disabled"></td>
24             </tr>
25             <tr>
26                 <td>班級</td><td><input type = "text" name = "stuClass" value  = "${student.stuClass }"></td>
27             </tr>
28             <tr>
29                 <td colspan="2"><input type="submit" value = "修改" style="color:blue" ></td>
30             </tr>
31         </table>
32     </form>
33 </body>
34 </html>
updateStu

 

數據庫創建語句:

 1 CREATE TABLE nanfeng.student (
 2     stu_id INT NOT NULL AUTO_INCREMENT,
 3     stu_name varchar(100) NULL,
 4     stu_sex varchar(100) NULL,
 5     stu_age INT NULL,
 6     stu_class varchar(100) NULL,
 7     CONSTRAINT student_pk PRIMARY KEY (stu_id)
 8 )
 9 ENGINE=InnoDB
10 DEFAULT CHARSET=utf8
11 COLLATE=utf8_general_ci;

 

posted @ 2018-01-21 10:44  27_南楓  閱讀(...)  評論(...編輯  收藏
三d开奖结果走势图