JavaWeb複習(三)
文章目錄
- 三 建立和部署MVC Web應用
三 建立和部署MVC Web應用
3.1 一個簡單應用的組成
一個簡單Web應用包括html表單、servlet控制器、一個模型(普通Java類)、一個xml部署描述檔案、一個jsp檢視
3.2 步驟
3.2.1 分析使用者檢視以及高層體系結構
3.2.1.1對於訪問連結:
根據上圖:
1:客戶請求訪問頁面
2.容器找到html頁面
3.容器把頁面返還給瀏覽器
3.2.1.2 對於訪問servlet:
根據上圖:
4:客戶把請求資料傳送給容器
5.容器根據url找到對應的servlet,並把請求傳遞給這個servlet
6.servlet呼叫模型(普通java類)
7.類返回一個結果,servelet把回答增加到請求物件
8.servlet把請求轉給jsp
9.jsp從請求物件得到答案
10.jsp為生成容器生成頁面
11.容器把頁面返回給使用者
3.3.2 建立專案的開發環境
MVC專案的標準層級結構
3.3.3 建立專案的部署環境
Tomcat的層級結構:
3.3.4 對Web應用各元件進行迭代開發和測試
3.3.4.1 構建和測試html表單
3.3.4.1.1 構建:
舉個例子:
<html>
<body>
<h1>填寫表單</h1>
<!--html認為/login就是要呼叫的servlet(客戶知道的url名),在專案目錄結構中並不存在-->
<form name="haha" method="POST" action="/login">
姓名:<input type="text" name="name">
<br>
性別:<input type="radio" name="sex" value="men">男
<input type="radio" name="sex" value="women">女
<br>
<input type="SUBMIT">
</form>
</body>
</html>
3.3.4.1.2:部署和測試
1.在開發環境中建立html,然後保持在專案名/web下
2.把html檔案的副本放在tomcat/webapps/專案名中
3.建立web.xml文件,儲存在開發環境專案名/etc下
<!--該部署檔案的主要目的是定義邏輯名與實際類檔案之間的對映-->
<web-app>
<servlet>
<servlet-name>部署名</servlet-name>
<servlet-class>類檔案的完全限定名</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>部署名</servlet-name>
<!--.do只是一個約定-->
<url-pattern>/使用者可知的url名.do</url-pattern>
</servlet-mapping>
</web-app>
4.把web.xml檔案的副本放在/tomcat/webapps/專案名/WEB-INF目錄下
5.啟動tomcat(cd到tomcat主目錄,然後執行/bin/startup.sh)
6.測試頁面(輸入http://localhost:8080/專案名)
3.3.4.2 構建控制器servlet第一個版本
3.3.4.2.1 編寫servlet
利用html表單測試這個控制器(確保html頁面能適當呼叫servlet,且servlet能正確接收html引數)
package com.web
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
pulbic class TestServlet extends HttpServlet {
//重寫doPost方法
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("haha<br>");
//獲取表單中的name資訊(根據html標記中的name屬性匹配)
String s = request.getParameter("name");
out.println("he is " + s);
}
}
3.3.4.2.2 編譯servlet
命令如下:
//切到專案目錄下
cd project
//路徑根據不同的存放目錄是不同的,tomcat之後是相同的
//-d用來告訴編譯器,.class檔案放在適當包結構中的clases目錄下
javac -classpath /路徑/tomcat/common/lib/servlet-api.jar:classes:. -d classes src/com/web/testServlet.java
3.3.4.2.3 部署servlet
建立.class檔案副本,把它移到tomcat/專案/WEB-INF/classes/com/web下
3.3.4.2.4 測試servlet
重啟tomcat然後訪問網頁即可
3.3.4.3 為模型類構建測試類,構建並測試模型類
例如:
package com.model;
public class Test{
public String getName(String name) {
String s = "hello, ";
s = s + name;
return s;
}
}
3.3.4.4 servlet升級到第二版
3.3.4.4.1 改寫
可以呼叫模型類,如下:
package com.web
import com.model.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
pulbic class TestServlet extends HttpServlet {
//重寫doPost方法
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
//新補充的內容:
String s = request.getParameter("name");
Test t = new Test();
String s1 = t.getName(s);
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("haha<br>");
//獲取表單中的name資訊(根據html標記中的name屬性匹配)
out.println(s1);
}
}
3.3.4.4.2 部署
1.編譯servlet
2.將servlet檔案的副本替換到之前的/tomcat/wabapps/專案/WEB-INF/classes/com/web下
3.把模型的class檔案移動到/tomcat/wabapps/專案/WEB-INF/classes/com/model下
4.重啟tomcat
5.開啟瀏覽器瀏覽
3.3.4.5 構建jsp,servlet升級到第三版
可以把表示分派到jsp完成
jsp程式碼如下:
<%@ page import="java.util.*" %>
<html>
<body>
<h1>這是一個標題</h1>
<!-- <% %>標記裡有一些標準Java程式碼-->
<%
<!--從這裡從請求物件得到一個styles屬性-->
String s = (String)resquest.getAttribute("styles");
out.print("<br>" + s);
%>
</body>
</html>
然後將jsp檔案儲存在專案目錄/web下
將它的副本移動到tomcat/專案名下
servlet程式碼修改為:
package com.web
import com.model.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
pulbic class TestServlet extends HttpServlet {
//重寫doPost方法
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
//新補充的內容:
String s = request.getParameter("name");
Test t = new Test();
String s1 = t.getName(s);
//response.setContentType("text/html");
//PrintWriter out = response.getWriter();
//out.println("haha<br>");
//獲取表單中的name資訊(根據html標記中的name屬性匹配)
//out.println(s1);
//為請求物件增加styles屬性,供jsp使用
request.setAttribute("styles", s1);
//為jsp例項化一個請求分派器
RequestDispatcher view = request.getRequestDispatcher("test.jsp");
//使用請求分派器要求容器準備好jsp,並向jsp傳送請求和響應
view.forward(request, response);
}
}
重新部署servlet即可,重啟tomcat檢視
如果有寫的不對或者不全面的地方 可通過主頁的聯絡方式進行指正,謝謝