您好,登錄后才能下訂單哦!
本篇內容介紹了“MVC怎么實現視圖層分離”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
MVC模式,就是將原本的web代碼,按照功能的不同,劃分成控制層,視圖層和模型層三個層次,以web項目為例,當請求訪問時,由控制層負責處理,控制層調用模型層對請求進行處理,最后使用表現層展示出來。
請求頁面:(這是用來請求的頁面,放出來以供參考)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h2>優質的W3C分類選擇</h2>
<form action="hello-servlet" method="get">
<select name="class" id="ke">
<option value="qd">前端開發</option>
<option value="hd">后端開發</option>
<option value="db">數據庫</option>
<option value="cp">計算機原理</option>
<option value="Android">移動開發</option>
<option value="other">其他</option>
</select>
<input type="submit" value="提交">
</form>
</body>
</html>
servlet(這里我們用3.0以上版本的servlet,使用注解替代web.xml
):
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
@WebServlet(name = "helloServlet", value = "/hello-servlet")
public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
String classname = "";
String url = "";
String element = "";
classname = request.getParameter("class");
if (classname.equals("qd")) {//目前只做前端判定,后期再增加
url = "http://www.neiyidaogou.com/courses?direction=2120&tag=0&type=&condition=&order=";
element = "前端微課";
}
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE html>\n" +
"<html lang=\"en\">\n" +
"<head>\n" +
"\t<meta charset=\"UTF-8\">\n" +
"\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n" +
"\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n" +
"\t<title>Document</title>\n" +
"</head>\n" +
"<body>");
out.println("<h2>以下是W3C平臺優秀的前端微課介紹,點擊鏈接即可前往</h2>");
out.println("<a href =\"" + url + "\" >" + element + "</a>");
out.println("</body></html>");
}
}
可以看到,上面的代碼使用servlet進行HTML代碼的輸出,十分的混亂,而且其中夾雜著一些判定(這部分功能應該交給模型層進行處理)。接下來我們將其中的html代碼進行剝離,使用jsp來進行頁面的輸出。
result.jsp(負責返回頁面的jsp):
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<%
String link = (String) request.getAttribute("url");
String text = (String) request.getAttribute("element");
%>
<h2>以下是W3C平臺優秀的前端微課介紹,點擊鏈接即可前往</h2>
<a href ="<%= link%>"><%= text%></a>
</body>
</html>
同時,對servlet進行對應的修改(主要是刪除原來的HTML輸出代碼,將需要傳遞給頁面的數據封裝進請求后然后將請求轉發給jsp)。
現在的servlet的get方法如下:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
String classname = "";
String url = "";
String element = "";
classname = request.getParameter("class");
if (classname.equals("qd")) {//目前只做前端判定,后期再增加
url = "http://www.neiyidaogou.com/courses?direction=2120&tag=0&type=&condition=&order=";
element = "前端微課";
}
request.setAttribute("url",url);
request.setAttribute("element",element);
RequestDispatcher view = request.getRequestDispatcher("result.jsp");
try {
view.forward(request,response);
} catch (ServletException e) {
e.printStackTrace();
}
}
這樣子就完成了視圖層的分離了。
“MVC怎么實現視圖層分離”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。