我們來看看VS Code的一些擴展,它們可以更好地編寫和編輯HTML(以及那些具有額外功能的HTML語言)。也許其中一些不吸引你,解決你沒有的問題,或者感覺比你需要的更混亂。沒關系,這些擴展,我也只是喜歡一部分。
首先是Emmet,VS Code內置了這個功能;這個功能很有用,你應該知道他。
一級一級的div寫得太多,對不齊了怎么辦?
這個擴展可以在標簽結尾處加上“注釋”,
寫代碼要寫注釋,我喜歡在重要的注釋上加上todo或者!。這個擴展可以賦予不同的注釋五顏六色,非常醒目。
代碼不同行之間不同的縮進,五顏六色的彩虹帶來了直接的視覺幫助。當我們在滾動代碼查看匹配標簽時特別有用。
這個肯定好用,用過的都知道。國產
自定義標簽是用戶定義的JSP語言元素。當JSP頁面包含一個自定義標簽時將被轉化為servlet,標簽轉化為對被 稱為tag handler的對象的操作,即當servlet執行時Web container調用那些操作。
JSP標簽擴展可以讓你創建新的標簽并且可以直接插入到一個JSP頁面。 JSP 2.0規范中引入Simple Tag Handlers來編寫這些自定義標記。
你可以繼承SimpleTagSupport類并重寫的doTag()方法來開發一個最簡單的自定義標簽。
創建"Hello"標簽
接下來,我們想創建一個自定義標簽叫作<ex:Hello>,標簽格式為:
<ex:Hello />
要創建自定義的JSP標簽,你首先必須創建處理標簽的Java類。所以,讓我們創建一個HelloTag類,如下所示:
package com.runoob;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;
public class HelloTag extends SimpleTagSupport {
public void doTag() throws JspException, IOException {
JspWriter out=getJspContext().getOut();
out.println("Hello Custom Tag!");
}
}
以下代碼重寫了doTag()方法,方法中使用了getJspContext()方法來獲取當前的JspContext對象,并將"Hello Custom Tag!"傳遞給JspWriter對象。
編譯以上類,并將其復制到環境變量CLASSPATH目錄中。最后創建如下標簽庫:<Tomcat安裝目錄>webapps\ROOT\WEB-INF\custom.tld。
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>Example TLD</short-name>
<tag>
<name>Hello</name>
<tag-class>com.runoob.HelloTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
接下來,我們就可以在JSP文件中使用Hello標簽:
<%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%>
<html>
<head>
<title>A sample custom tag</title>
</head>
<body>
<ex:Hello/>
</body>
</html>
以上程序輸出結果為:
Hello Custom Tag!
訪問標簽體
你可以像標準標簽庫一樣在標簽中包含消息內容。如我們要在我們自定義的Hello中包含內容,格式如下:
<ex:Hello>
This is message body
</ex:Hello>
我們可以修改標簽處理類文件,代碼如下:
package com.runoob;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;
public class HelloTag extends SimpleTagSupport {
StringWriter sw=new StringWriter();
public void doTag()
throws JspException, IOException
{
getJspBody().invoke(sw);
getJspContext().getOut().println(sw.toString());
}
}
接下來我們需要修改TLD文件,如下所示:
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>Example TLD with Body</short-name>
<tag>
<name>Hello</name>
<tag-class>com.runoob.HelloTag</tag-class>
<body-content>scriptless</body-content>
</tag>
</taglib>
現在我們可以在JSP使用修改后的標簽,如下所示:
<%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%>
<html>
<head>
<title>A sample custom tag</title>
</head>
<body>
<ex:Hello>
This is message body
</ex:Hello>
</body>
</html>
以上程序輸出結果如下所示:
This is message body
自定義標簽屬性
你可以在自定義標準中設置各種屬性,要接收屬性,值自定義標簽類必須實現setter方法, JavaBean 中的setter方法如下所示:
package com.runoob;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;
public class HelloTag extends SimpleTagSupport {
private String message;
public void setMessage(String msg) {
this.message=msg;
}
StringWriter sw=new StringWriter();
public void doTag()
throws JspException, IOException
{
if (message !=null) {
/* 從屬性中使用消息 */
JspWriter out=getJspContext().getOut();
out.println( message );
}
else {
/* 從內容體中使用消息 */
getJspBody().invoke(sw);
getJspContext().getOut().println(sw.toString());
}
}
}
屬性的名稱是"message",所以setter方法是的setMessage()。現在讓我們在TLD文件中使用的<attribute>元素添加此屬性:
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>Example TLD with Body</short-name>
<tag>
<name>Hello</name>
<tag-class>com.runoob.HelloTag</tag-class>
<body-content>scriptless</body-content>
<attribute>
<name>message</name>
</attribute>
</tag>
</taglib>
現在我們就可以在JSP文件中使用message屬性了,如下所示:
<%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%>
<html>
<head>
<title>A sample custom tag</title>
</head>
<body>
<ex:Hello message="This is custom tag" />
</body>
</html>
以上實例數據輸出結果為:
This is custom tag
你還可以包含以下屬性:
屬性 | 描述 |
---|---|
name | 定義屬性的名稱。每個標簽的是屬性名稱必須是唯一的。 |
required | 指定屬性是否是必須的或者可選的,如果設置為false為可選。 |
rtexprvalue | 聲明在運行表達式時,標簽屬性是否有效。 |
type | 定義該屬性的Java類類型 。默認指定為 String |
description | 描述信息 |
fragment | 如果聲明了該屬性,屬性值將被視為一個 JspFragment。 |
以下是指定相關的屬性實例:
.....
<attribute>
<name>attribute_name</name>
<required>false</required>
<type>java.util.Date</type>
<fragment>false</fragment>
</attribute>
.....
如果你使用了兩個屬性,修改TLD文件,如下所示:
.....
<attribute>
<name>attribute_name1</name>
<required>false</required>
<type>java.util.Boolean</type>
<fragment>false</fragment>
</attribute>
<attribute>
<name>attribute_name2</name>
<required>true</required>
<type>java.util.Date</type>
</attribute>
.....
如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!
TML 表格實例:
First Name | Last Name | Points |
---|---|---|
Jill | Smith | 50 |
Eve | Jackson | 94 |
John | Doe | 80 |
Adam | Johnson | 67 |
在線實例
表格
這個例子演示如何在 HTML 文檔中創建表格。
HTML 表格
表格由 <table> 標簽來定義。每個表格均有若干行(由 <tr> 標簽定義),每行被分割為若干單元格(由 <td> 標簽定義)。字母 td 指表格數據(table data),即數據單元格的內容。數據單元格可以包含文本、圖片、列表、段落、表單、水平線、表格等等。
表格實例
<table border="1">
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>
在瀏覽器顯示如下::
row 1, cell 1 | row 1, cell 2 |
row 2, cell 1 | row 2, cell 2 |
HTML 表格和邊框屬性
如果不定義邊框屬性,表格將不顯示邊框。有時這很有用,但是大多數時候,我們希望顯示邊框。
使用邊框屬性來顯示一個帶有邊框的表格:
<table border="1">
<tr>
<td>Row 1, cell 1</td>
<td>Row 1, cell 2</td>
</tr>
</table>
HTML 表格表頭
表格的表頭使用 <th> 標簽進行定義。
大多數瀏覽器會把表頭顯示為粗體居中的文本:
<table border="1">
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>
在瀏覽器顯示如下:
Header 1 | Header 2 |
---|---|
row 1, cell 1 | row 1, cell 2 |
row 2, cell 1 | row 2, cell 2 |
更多實例
沒有邊框的表格
本例演示一個沒有邊框的表格。
表格中的表頭(Heading)
本例演示如何顯示表格表頭。
帶有標題的表格
本例演示一個帶標題 (caption) 的表格
跨行或跨列的表格單元格
本例演示如何定義跨行或跨列的表格單元格。
表格內的標簽
本例演示如何顯示在不同的元素內顯示元素。
單元格邊距(Cell padding)
本例演示如何使用 Cell padding 來創建單元格內容與其邊框之間的空白。
單元格間距(Cell spacing)
本例演示如何使用 Cell spacing 增加單元格之間的距離。
HTML 表格標簽
標簽 | 描述 |
---|---|
<table> | 定義表格 |
<th> | 定義表格的表頭 |
<tr> | 定義表格的行 |
<td> | 定義表格單元 |
<caption> | 定義表格標題 |
<colgroup> | 定義表格列的組 |
<col> | 定義用于表格列的屬性 |
<thead> | 定義表格的頁眉 |
<tbody> | 定義表格的主體 |
<tfoot> | 定義表格的頁腳 |
如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!
*請認真填寫需求信息,我們會在24小時內與您取得聯系。