近些天一直在學習javaweb 但總是時斷時續,今天終於有時間,來學習一下MVC下的查詢模式。
一、首先先了解一下 什麼是mvc?
MVC是Model-View-Controller的簡稱,即模型-視圖-控制器。它是一種設計模式,它吧應用程序分成三個核心模塊,模型,視圖,控制器。他們各自處理自己的任務。
模型:是應用程序的主體部分,模型指的是業務模型。 一個模型可以為多個視圖提供數據。
視圖:是用戶看到的並與之交互的界面。 可以向用戶顯示相關的數據,接受用戶的輸入,但是它不進行任何實際的業務處理。
控制器:接受用戶的輸入並調用模型和視圖,完成用戶的需求。
流程: 客戶端發送請求到 服務器, 服務器 將請求發送給servlet ,servlet接收請求,根據請求的業務邏輯調用model層,然後在想servlet返回一個結果,根據結果 轉向(轉發,重定向)一個頁面。
二、具體查詢
問題:點擊頁面的一個超鏈接,顯示數據庫裡學生的信息
1.根目錄結構
2.
創建一個學生類Student。
內容屬性: 獲取get,set方法。
private String studentId; private String name; private String idCard; private String sex; private int age; private int grade;
2.創建一個StudentDao類 用於獲取數據庫信息 返回學生鏈表
內容:其中有我自己找的一個工具類
public class StudentDao { public List<Student> getAll(){ List<Student> students=new ArrayList<Student>(); ResultSet rs=null; try { String sql ="select studentId,name,idCard,sex,age,grade from student"; rs=DBConnection.executeQuery(sql); while(rs.next()){ String studentId=rs.getString(1); String name=rs.getString(2); String idCard=rs.getString(3); String sex=rs.getString(4); int age=rs.getInt(5); int grade=rs.getInt(6); Student student=new Student(studentId, name, idCard, sex, age, grade); students.add(student); } } catch (Exception e) { e.printStackTrace(); }finally{ if(rs!=null){ try { rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return students; } }
3.創建一個servlet 類名為ListAllStudentServlet 配置屬性。 只改寫doGet() 方法。 因為另一個頁面需要獲取學生鏈表 可以 用轉發的方式進行編寫。
內容:
1 public void doGet(HttpServletRequest request, HttpServletResponse response) 2 throws ServletException, IOException { 3 4 StudentDao studentDao=new StudentDao(); 5 List<Student> students=studentDao.getAll(); 6 request.setAttribute("students", students); 7 request.getRequestDispatcher("/student.jsp").forward(request, response); // 轉發 8 }
4.創建一個test.jsp 用於發送請求。
內容:<a href="listAllStudent">List all students</a>
5.創建顯示頁面,student.jsp
內容:
1 <body> 2 <% 3 List<Student> students=(List<Student>)request.getAttribute("students"); 4 %> 5 <h3>學生信息表</h3> 6 7 <table> 8 <tr> 9 <th>studentId</th> 10 <th>name</th> 11 <th>idCard</th> 12 <th>sex</th> 13 <th>age</th> 14 <th>grade</th> 15 </tr> 16 17 <% 18 for(Student student:students){ 19 20 %> 21 <tr> 22 <td><%=student.getStudentId() %></td> 23 <td><%=student.getName() %></td> 24 <td><%=student.getIdCard() %></td> 25 <td><%=student.getSex() %></td> 26 <td><%=student.getAge() %></td> 27 <td><%=student.getGrade() %></td> 28 </tr> 29 <% } %> 30 31 </table> 32 33 34 </body>
6.顯示
三、學習過程中遇到的問題
1.在連接sqlserver 數據庫時 出現了 這個問題。
問題:驅動程序無法通過使用安全套接字層(SSL)加密與 SQL Server 建立安全連接。錯誤:“Server key”。
解決方法:
這個問題是JDK與數據庫之間的安全秘鑰的問題。
方案就是:
1.下載兩個jar包
1.bcprov-ext-jdk15on-1.54.jar
2.bcprov-jdk15on-1.54.jar
下載地址在:http://download.csdn.net/detail/cw_hello1/9557049
2.將下載的兩個JAR文件復制到:JDK安裝目錄\jre\lib\ext下,例如我的就是D:\Program Files (x86)\java\JDK1.6\jre\lib\ext
3.打開java.security文件:在JDK安裝目錄\jre\lib\security下的java.security文件。
找到security.provider.1=sun.security.provider.Sun換成
security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider
重新執行連接數據庫程序就可以。 這個方法轉自:http://blog.csdn.net/cw_hello1/article/details/51740893
今天的學習就先到這裡了,明天繼續。