J2EE學習MVC分層

這部分並非說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看成控制器。

相關文章
相關標籤/搜索