JavaWeb學(xué)習(xí)過(guò)程之MVC查詢模式詳解
一、首先先了解一下 什么是mvc?
MVC是Model-View-Controller的簡(jiǎn)稱,即模型-視圖-控制器。它是一種設(shè)計(jì)模式,它吧應(yīng)用程序分成三個(gè)核心模塊,模型,視圖,控制器。他們各自處理自己的任務(wù)。
模型:是應(yīng)用程序的主體部分,模型指的是業(yè)務(wù)模型。 一個(gè)模型可以為多個(gè)視圖提供數(shù)據(jù)。
視圖:是用戶看到的并與之交互的界面。 可以向用戶顯示相關(guān)的數(shù)據(jù),接受用戶的輸入,但是它不進(jìn)行任何實(shí)際的業(yè)務(wù)處理。
控制器:接受用戶的輸入并調(diào)用模型和視圖,完成用戶的需求。
流程: 客戶端發(fā)送請(qǐng)求到 服務(wù)器, 服務(wù)器 將請(qǐng)求發(fā)送給servlet ,servlet接收請(qǐng)求,根據(jù)請(qǐng)求的業(yè)務(wù)邏輯調(diào)用model層,然后在想servlet返回一個(gè)結(jié)果,根據(jù)結(jié)果 轉(zhuǎn)向(轉(zhuǎn)發(fā),重定向)一個(gè)頁(yè)面。
二、具體查詢
問(wèn)題:點(diǎn)擊頁(yè)面的一個(gè)超鏈接,顯示數(shù)據(jù)庫(kù)里學(xué)生的信息

1.根目錄結(jié)構(gòu)

2.
創(chuàng)建一個(gè)學(xué)生類Student。
內(nèi)容屬性: 獲取get,set方法。
private String studentId; private String name; private String idCard; private String sex; private int age; private int grade;
2.創(chuàng)建一個(gè)StudentDao類 用于獲取數(shù)據(jù)庫(kù)信息 返回學(xué)生鏈表
內(nèi)容:其中有我自己找的一個(gè)工具類
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.創(chuàng)建一個(gè)servlet 類名為L(zhǎng)istAllStudentServlet 配置屬性。 只改寫doGet() 方法。 因?yàn)榱硪粋€(gè)頁(yè)面需要獲取學(xué)生鏈表 可以 用轉(zhuǎn)發(fā)的方式進(jìn)行編寫。
內(nèi)容:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
StudentDao studentDao=new StudentDao();
List<Student> students=studentDao.getAll();
request.setAttribute("students", students);
request.getRequestDispatcher("/student.jsp").forward(request, response); // 轉(zhuǎn)發(fā)
}
4.創(chuàng)建一個(gè)test.jsp 用于發(fā)送請(qǐng)求。
內(nèi)容:<a href="listAllStudent">List all students</a>
5.創(chuàng)建顯示頁(yè)面,student.jsp
內(nèi)容:
<body>
<%
List<Student> students=(List<Student>)request.getAttribute("students");
%>
<h3>學(xué)生信息表</h3>
<table>
<tr>
<th>studentId</th>
<th>name</th>
<th>idCard</th>
<th>sex</th>
<th>age</th>
<th>grade</th>
</tr>
<%
for(Student student:students){
%>
<tr>
<td><%=student.getStudentId() %></td>
<td><%=student.getName() %></td>
<td><%=student.getIdCard() %></td>
<td><%=student.getSex() %></td>
<td><%=student.getAge() %></td>
<td><%=student.getGrade() %></td>
</tr>
<% } %>
</table>
</body>
6.顯示

三、學(xué)習(xí)過(guò)程中遇到的問(wèn)題
1.在連接sqlserver 數(shù)據(jù)庫(kù)時(shí) 出現(xiàn)了 這個(gè)問(wèn)題。
問(wèn)題:驅(qū)動(dòng)程序無(wú)法通過(guò)使用安全套接字層(SSL)加密與 SQL Server 建立安全連接。錯(cuò)誤:“Server key”。
解決方法:
這個(gè)問(wèn)題是JDK與數(shù)據(jù)庫(kù)之間的安全秘鑰的問(wèn)題。
方案就是:
1.下載兩個(gè)jar包
1.bcprov-ext-jdk15on-1.54.jar
2.bcprov-jdk15on-1.54.jar
下載地址在:http://download.csdn.net/detail/cw_hello1/9557049
2.將下載的兩個(gè)JAR文件復(fù)制到:JDK安裝目錄\jre\lib\ext下,例如我的就是D:\Program Files (x86)\java\JDK1.6\jre\lib\ext
3.打開(kāi)java.security文件:在JDK安裝目錄\jre\lib\security下的java.security文件。
找到security.provider.1=sun.security.provider.Sun換成
security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider
以上所述是小編給大家介紹的JavaWeb學(xué)習(xí)過(guò)程之MVC查詢模式詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的,在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Tomcat版本與Java版本的關(guān)系及說(shuō)明
這篇文章主要介紹了Tomcat版本與Java版本的關(guān)系及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
淺析Java?NIO?直接緩沖區(qū)和非直接緩沖區(qū)
本篇文章主要為大家介紹了Java?NIO?中直接緩沖區(qū)和非直接緩沖區(qū)的定義以及使用流程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-11-11
java 通過(guò) SmbFile 類操作共享文件夾的示例
這篇文章主要介紹了java 通過(guò) SmbFile 類操作共享文件夾,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
SpringBoot中定時(shí)任務(wù)@Scheduled的多線程使用詳解
這篇文章主要為大家詳細(xì)介紹了pring Boot定時(shí)任務(wù)@Scheduled的多線程原理以及如何加入線程池來(lái)處理定時(shí)任務(wù),感興趣的可以了解一下2023-04-04
Java http請(qǐng)求封裝工具類代碼實(shí)例
這篇文章主要介紹了Java http請(qǐng)求封裝工具類代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04

