jsp的頭代碼,jsp頭部報錯

本文目錄一覽:

JSP 的首頁頭部 標題 關鍵詞 網頁描述應該怎麼寫代碼啊

在head 標籤里添加以下標籤

1.這裡寫關鍵詞,多個關鍵詞可以用逗號分開

meta http-equiv=”keywords” content=”keyword1,keyword2,keyword3″

2.這裡寫描述

meta http-equiv=”description” content=”This is my page”

自定義標籤和jsp頁面怎麼實現

jsp自定義標籤用法,供大家參考,具體如下:

什麼是標記

使用HTML語言我們可以這樣去編輯我們的網頁:

HTML

HEAD

TITLE

HELLO WORLD

/TITLE

/HEAD

BODY

HELLO WORLD

/BODY

/HTML

在這裡我們把/HEAD,TITLE,BODY稱為標記。HTML 標記( HTML Markup)是HTML文檔的控制語言,用於指定瀏覽器顯示和列印文檔的方式.它是用小於號””和大於號””括起來的短語和符號,如 Html、/Body等。許多HTMl標記以成對的方式出現,如TITLE /TITLE、Body/Body 等。在JSP中我們也可以定製自己的標記,以供JSP頁面使用,如下例所示:

!—login.jsp–

%@ taglib uri=”/tlds/taglib.tld” prefix=”tagclass” %

html

head

titlelogin/title

/head

body

tagclass:login width=”200″ height= “100”

/tagclass:login

/body

/html

在上例中/tagclass:login就是一個JSP定製標記符。widtht、height是這個標記的屬性。%@ taglib uri=”/tlds/taglib.tld” prefix=”tagclass” %是一個標記庫定義指令,在稍後我們將會討論。在JSP中定製標記符,實質上就是以標記的形式封裝了一個俱有獨立功能的Java類。標記的使用減少了直接嵌入JSP頁面的Java代碼,方便了頁面的布局,並且有利於代碼的復用,提高了開發的效率。

JSP伺服器解析標記的過程

那麼當一個標記被嵌入JSP頁面後,JSP伺服器是如何對這個標記進行解析的呢?各對象的含義如下所示:

Client: 表示客戶端。

JSP-Server:JSP伺服器。

JSP-Page:JSP頁面。

TLD:  標記庫描述文件,定義標記和標記的各種屬性和處理文件等。

TagClass 標記處理程序

當一個用戶訪問一個JSP頁面時,這個請求被發送到JSP伺服器,JSP伺服器會根據這個請求去調用相應的頁面,如果這個頁面中有自定義的標記, JSP服務就會根據頁面指令%@ taglib去訪問TLD得到處理程序的相關信息,接著調用該處理程序的構造器方法,啟動標記符處理程序,並讀取標記符的屬性和相應值。對每個沒有設置屬性的,調用相應的set方法。當標記符第一次使用時,它的任何屬性都不會做過設置,因此對每個屬性都調用set方法。屬性設置完以後,JSP伺服器調用處理程序的doStartTag(),然後再調用doEndTag()方法。最後JSP伺服器會繼續處理剩下的頁面,在頁面結尾調用release ()方法,清理佔用的所有資源。

TLD文件

TLD(TLD:Tag Library Descriptor標記庫描述符)文件,標準的XML格式的標記定義文件,被用來存放標記符的信息,下面就是一個典型的TLD文件。

?xml version=”1.0″ encoding=”ISO-8859-1″ ?

!—XML的版本及其字符集–

!DOCTYPE taglib

PUBLIC “-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN”

” “

!—文檔類型定義–

taglib

!—此標記說明我們開始描述一個標記庫–

tlibversion1.0/tlibversion

!—標記庫的版本–

jspversion1.1/jspversion

!—所使用的JSP的版本–

shortnametagclass/shortname

!—預設的名稱–

tag

namelogin/name

!—標記的名稱–

tagclass

tagclass.login.login

!—處理這個Tag的相應的類的名稱–

/tagclass

info

 !—對本標記符的描述–

/info

attribute

!—開始定義標記的屬性–

nameheight/name

  !—屬性的名稱–

requiredtrue/required

  !—表示這個屬性是不是必須的–

rtexprvaluetrue/rtexprvalue

!—表示這個屬性是否可以用JSP的程序段的結果輸出–

/attribute

attribute

namewidth/name

requiredtrue/required

rtexprvaluetrue/rtexprvalue

/attribute

/tag

/taglib

在這個TLD文件中定義了只有一個標記符的標記符庫,這個名為login的標記符會調用一個Applet以驗證用戶的合法性。處理這個標記的類就是 tagclass.login.login。width、height是這個標記的兩個屬性。屬性是在使用標記符時作為參數發送的值。我們可以在上面的示例中增加幾個標記,也可以為每個標記添加幾個屬性。我們開發標記符庫時不一定非要從頭開始,自己編寫一個全新TLD。我們可以使用某個集成的開發的環境,也可以修改上面的例子。

TagLib指令

那麼當JSP伺服器在解析一個標記符時,它是如何定義一個標記庫的呢?這就是TagLib指令的主要責任。

Taglib 指令

定義一個標記庫以及其自定義標記的前綴.

JSP 語法

複製代碼 代碼如下:

%@ taglib uri=”URIToTagLibrary” prefix=”tagPrefix” %

例子

%@ taglib uri=”/tlds/taglib.tld” prefix=”tagclass” %

html

head

titlelogin/title

/head

body

tagclass:login width=”200″ height= “100”

/tagclass:login

/body

/html

描述

% @ taglib %指令聲明此JSP文件使用了自定義的標記,同時引用標記庫,

也指定了他們的標記的前綴。 你必須在使用自定義標記之前使用% @ taglib %指令。

屬性

uri=”URIToTagLibrary” :Uniform Resource Identifier (URI)根據標記的前綴對自定義的標記進行唯一的命名,URI可以是一個相對或絕對的路徑。

prefix=”tagPrefix”:在自定義標記之前的前綴。如上例中的/tagclass:login

標記符的處理程序(Tag handle)

我們還是以一個例子來看下如何實現一個Tag handle。首先是看一下它的類圖:

讓我們再看一下它的代碼:

package tagclass.login;

import javax.servlet.jsp.tagext.TagSupport;

import javax.servlet.jsp.*;

import java.io.*;

public class login extends TagSupport

{

public login()

{

super();

}

public int doStartTag() throws JspTagException

{

JspWriter out = pageContext.getOut();

try

{

out.println(“APPLET CODEBASE=applet/login/ CODE=login.class width=200 height=100 /APPLET”);

}

catch(Exception e)

{

}

return SKIP_BODY;

}

publicc int doEndTag()throws JsptagException

{

return EVAL_PAGE;

}

public void release()

{

super.release();

}

public void setWidth(String language)

{

this.width = width;

}

public String getWidth()

{

return this.width;

}

public void setHeight(String height)

{

this.height=height;

}

public String getHeight()

{

return this.height;

}

private String width;

private String height;

}

從以上我們可以看出,實現一個簡單的標記符處理程序有幾個要求:①增加一個類,使之繼承 java.Servlet.jsp.tagext.TagSupport類。這個類提供了java.Servlet.jsp.tagext.Tag介面所要求的所有的方法。另外,還需要使用一些基本的API,使JSP容器能夠調用我們自己提供的標記符處理程序。②必須為每個標記符屬性分別創建一個 getattribute和setattribute方法,JSP容器需要使用這些方法處理程序傳遞參數。③要為標記符處理程序創建一個構造器和自毀器。JSP需要使用構造器啟動處理程序。自毀器是在realease()方法中定義的。在處理程序的生命周期結束時,需要調用自毀器釋放所佔用的資源。④創建兩個名為doStartTag()和doEndTag()的方法,執行具體的處理和輸出動作。這兩個方法是在處理自定義標記符的起始位置和結束位置調用的。它們的返回值是在Tag Interface里定義的靜態int,這幾個靜態值分別是:

SKIP_BODY隱含0 :跳過了開始和結束標籤之間的代碼。

EVAL_BODY_INCLUDE隱含1:將body的內容輸出到存在的輸出流中

SKIP_PAGE隱含5 : 忽略剩下的頁面。

EVAL_PAGE隱含6:繼續執行下面的頁

當然標記符也有它自己的缺點。很不方便的封裝過程,有限的功能。對於一些不太複雜和功能單一的邏輯描述,需要傳遞的參數要求不高時,使用JSP標記,要方便的多。對於大多數的商業邏輯應用,還是使用bean要好的多,也宜於servlet控制。

附:文章中所用示例的完整代碼

JSP代碼:login.jsp

%@ taglib uri=”/tlds/taglib.tld” prefix=”tagclass” %

html

head

title/title

/head

body

tagclass:login width=”200″ height= “100”

/tagclass:login

/body

/html

標記符描述庫:taglib.tld

?xml version=”1.0″ encoding=”ISO-8859-1″ ?

!DOCTYPE taglib

PUBLIC “-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN”

” “

taglib

tlibversion1.0/tlibversion

jspversion1.1/jspversion

shortnametagclass/shortname

tag

namelogin/name

tagclass

tagclass.login.login

/tagclass

info

/info

attribute

nameheight/name

requiredtrue/required

rtexprvaluetrue/rtexprvalue

/attribute

attribute

namewidth/name

requiredtrue/required

rtexprvaluetrue/rtexprvalue

/attribute

/tag

/taglib

標記符處理程序:login.java

package tagclass.login;

import javax.servlet.jsp.tagext.TagSupport;

import javax.servlet.jsp.*;

import java.io.*;

public class login extends TagSupport

{

public login()

{

super();

}

public int doStartTag() throws JspTagException

{

JspWriter out = pageContext.getOut();

try

{

out.println(“APPLET CODEBASE=applet/login/ CODE=login.class width=200 height=100 /APPLET”);

}

catch(Exception e)

{

}

return SKIP_BODY;

}

publicc int doEndTag()throws JsptagException

{

return EVAL_PAGE;

}

public void release()

{

super.release();

}

public void setWidth(String language)

{

this.width = width;

}

public String getWidth()

{

return this.width;

}

public void setHeight(String height)

{

this.height=height;

}

public String getHeight()

{

return this.height;

}

private String width;

private String height;

}

標記符處理程序中所使用的Applet : login.java

import java.awt.*;

import java.awt.event.*;

import java.applet.*;

public class login extends Applet implements ActionListener

{

private String s_username;

private String s_userpassword;

private Button b_ok;

private Button b_register;

private Label l_username;

private Label l_userpassword;

private TextField t_username;

private TextField t_userpassword;

private GridLayout g_gridlayout;

public void init()

{

b_ok=new Button(“ok”);

b_register=new Button(“register”);

l_username= new Label(“name”);

l_userpassword=new Label(“password”);

t_username=new TextField();

t_userpassword=new TextField();

b_ok.addActionListener(this);

b_register.addActionListener(this);

g_gridlayout=new GridLayout(3,2,10,10);

this.setLayout(g_gridlayout);

//this.setBackground(Color.blue);

add(l_username);

add(t_username);

add(l_userpassword);

add(t_userpassword);

add(b_ok);

add(b_register);

}

public void actionPerformed(ActionEvent ev)

{

String s_label=ev.getActionCommand();

if (s_label.equals(“ok”))

{

t_username.setText(“name”);

}

if (s_label.equals(“register”))

{

t_userpassword.setText(“password”);

}

}

public void paint(Graphics g)

{

}

}

如何在Eclipse中設置默認的JSP文件頭部編碼

修改eclipse默認工作空間編碼方式,General——Workspace——Text file encoding 修改工程編碼方式,右擊工程——Properties——Resource——Text file encoding 修改文件編碼方式,和修改工程編碼基本一致,右擊文件——Properties 修改某類文件默認編碼方…

在Intellij Idea中怎麼引入c標籤

1、首先在jsp頁面頭部加如下代碼:

%@taglib prefix=”c” uri=”” %11

很多時候,當寫完這句的時候,都會報一個錯誤提示信息。那麼怎麼解決?

進入「settings」設置選項,然後搜「DTD」然後如下圖,在左邊的標籤選項卡找到「Schemas and DTDS」

然後選擇右邊的「External schemas and dtds」中的添加按鈕

%@taglib prefix=”c” uri=”” %11

然後選擇ok,然後根據自己的需要配置

jsp頁面出現文件頭

jsp中的%@ pageEncoding=”UTF-8″%是設置編碼格式的,如果有中文的話統一指定為utf-8的話就不會出現亂碼。

freemarker模板和傳統的jsp+jstl我都用過,作為開發人員來說eclipse對jstl有提示,寫起來比較順手,jstl標籤要求不那麼嚴格,比如說${person.name}這個屬性為空自動顯示為空字元串。freemarker對邏輯要求更嚴謹,比如如果你不做非空驗證肯的那個會拋異常的,雖然異常提示很清楚,不過非空驗證多了寫起來太繁瑣。

jsp頁面頭部的這兩種聲明有啥區別?

!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional

這句話就是告訴瀏覽器你用的html代碼是哪一個版本

w3c根據你聲明的版本來檢查你的代碼是否符合w3c規範

XHTML 1.0 Transitional 是過渡型,

具體的內容很多,想弄清楚還是要多看資料

!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.1 Transitional//EN” 這樣的不指定dtd的xml類型,如果你想css兼容好請使用!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”

原創文章,作者:NRTZJ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/324447.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
NRTZJ的頭像NRTZJ
上一篇 2025-01-13 13:23
下一篇 2025-01-13 13:23

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python字元串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字元串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字元串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變數和數…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在著手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Python實現簡易心形代碼

    在這個文章中,我們將會介紹如何用Python語言編寫一個非常簡單的代碼來生成一個心形圖案。我們將會從安裝Python開始介紹,逐步深入了解如何實現這一任務。 一、安裝Python …

    編程 2025-04-29
  • 怎麼寫不影響Python運行的長段代碼

    在Python編程的過程中,我們不可避免地需要編寫一些長段代碼,包括函數、類、複雜的控制語句等等。在編寫這些代碼時,我們需要考慮代碼可讀性、易用性以及對Python運行性能的影響。…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29

發表回復

登錄後才能評論