這部分並非說MVC是J2EE一部分。而是說,我將J2EE按照mvc方式講解。這樣更容易講解。我在mvc上列舉幾個典型的例子,以便讀者跟容易瞭解j2ee工做方式。這個例子並無用到sql。html
目錄java
一 首先講解v(view) 視圖。web
視圖是指呈現到客戶面前的頁面。html jsp 均可以呈現頁面。html很簡單。jsp文件是在html文件裏面加入java代碼 以 <%開頭,以%>結束。和PHP相似。簡單的語法能夠在菜鳥教程上學習: http://www.runoob.com/jsp/jsp-tutorial.html 。在之後的一些博客我會講解一些jsp。spring
下面是一個頁面login.jspsql
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>test</title> </head> <body> <form action="test" method="GET"> 姓名:<input type="text" name="name"> <br /> 密碼:<input type="text" name="password" /> <input type="submit" value="提交" /> </form> </body> </html>
二 M (model)數據庫
model就是指的是數據,一個最簡單的例子是javabean。下面是一個 簡單javabean。他就是一個model。瀏覽器
user.javamvc
package example; public class user { private String name = null; private String password; public user() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
這裏面class必須是public,同時必須實現get set 方法。能夠包含其餘的函數。app
三 c 控制框架
做爲控制的有不少。所謂控制是用於M和C的鏈接。servlet,spring控制部分,struts等都是做爲控制。咱們先了解servlet,在慢慢的將其餘的加進來。
servlet從頁面中獲取用戶的行爲,並改動model的數據。舉個例子:用戶登錄,用戶會提交用戶名和密碼,這時候servlet獲取用戶名和密碼,並照着model看看該用戶是否合法的。根據合法採起不一樣的措施。下面是一個簡單的servlet。
test.java
package example; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class test */ @WebServlet("/test") public class test extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public test() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String title = "簡單mvc框架"; // 獲取表單數據 name要編碼轉化,實踐時若是錯誤,更改編碼。 //request.getParameter("name").getBytes("UTF-8")是獲取當前編碼。個人編碼是UTF-8 String name =new String(request.getParameter("name").getBytes("UTF-8"),"UTF-8"); String password =request.getParameter("password"); //將數據加載到javabean user u=new user(); u.setName(name); u.setPassword(password); String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor=\"#f0f0f0\">\n" + "<h1 align=\"center\">" + title + "</h1>\n" + "<ul>\n" + " <li><b>姓名</b>:" //獲取javabean中數據 + u.getName() + "\n" + " <li><b>密碼</b>:" + u.getPassword() + "\n" + "</ul>\n" + "</body></html>"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
這裏request.getParameter("name")獲取表單的內容。
固然僅僅是這樣還不行,action 雖然提交數據,但action不知道提交到哪裏,這裏提交的不是jsp,因此action並不知道到哪一個包找哪一個類。這須要咱們給他註冊一下,每次action提交,他到web.xml尋找提交到哪裏。web.xml以下
<servlet> <servlet-name>test</servlet-name> <servlet-class>example.test</servlet-class> </servlet> <servlet-mapping> <servlet-name>test</servlet-name> <url-pattern>/example/test</url-pattern> </servlet-mapping>
<servlet> 子標籤 <servlet-name>給他這注冊個名字,這個名字用於給action查找。<servlet-class>指定包.類,action按照名字找到以後,直接將數據給這個類。
<servlet-mapping>就是給這個servlet制定一個URL,好比上面點擊提交後,瀏覽器的url會顯示http://****.com/first-dynamic/test 咱們再回頭看servlet,有一些輸出,這些輸出將會顯示在瀏覽器上。到此servlet簡單介紹完畢。
在說幾句。
你們可能會想爲何用javabean。在本例servlet 中彷佛不須要javabean。這是由於本例子很簡單,若是涉及到大型數據庫。那咱們將數據封裝在類中實際上是更方便咱們使用。
其實每個jsp文件在被用戶獲取的以前都會轉化成servlet類,而後再輸出。因此把servlet歸類於 C(控制)是不許確的。但在實際中都會把servlet看成控制器。