實戰練習之Jsp自定義標籤

farsun發表於2021-09-09

實現JSP自定義標籤分以下幾步:
1、完成自定義標籤的方法(實現主要的業務邏輯)。
2、配置tld檔案。
3、在jsp頁面引用標籤。


程式碼如下:
標籤實現類UserInfoTag.java,繼承TagSupport,重寫doStartTag()方法。在該方法中實現主要的業務邏輯。

package org.springboot.tag;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

public class UserInfoTag extends TagSupport{

    public User user = null; 

    @Override
    public int doStartTag() throws JspException{
        try{
              JspWriter out = this.pageContext.getOut();
              out.println("

尊敬的使用者 "+user.getUserName()+"您好!

"); }catch(Exception e){ throw new JspException(e.getMessage()); } return SKIP_BODY; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }

自定義標籤配置檔案uum.tld


UUM JSP Form Tag Library1.0formuum<!-- 可以自定義  --&gtuserTag<!-- 標籤名稱  --&gtorg.springboot.tag.UserInfoTag<!-- 實現方法的位置  --&gtemptyuser<!-- 入參名稱  --&gtfalse<!-- 該入參是否必須  --&gttrue

引用自定義標籤的jsp檔案 ,userTag.jsp







自定義標籤
<!-- 變數名稱和變數型別要和標籤的實現方法中匹配 --&gt

自定義標籤的展示過程可以理解為,當瀏覽器解讀該JSP頁面時,到引用自定義標籤的地方會根據標籤的uri和標籤名找到對應在tld中的實現方法,執行自定義標籤的實現方法,就會看到最後的結果。
一般的WEB專案可以直接訪問引用的jsp頁面就可以看到效果,即
因為用的是springBoot框架,所以要增加一個截去請求的跳轉方法,跳轉到相應的jsp頁面。
UserTagController.java

package org.springboot.simple.controller;

import java.io.IOException;  
import java.util.ArrayList;  
import org.springboot.tag.User; 
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class PageController {
        @RequestMapping("/sayHello")//請求名稱
    public ModelAndView userTag() {
       //跳轉頁面路徑
         ModelAndView mav = new ModelAndView("/userTag");
        //定義引數
         User user = new User();
         user.setUserName("呦呦米");
        //將引數傳到jsp頁面
         mav.addObject("user", user);
        return mav;
    } 
}

還有一個用到的User.java實體,練習的時候可以不用實體,直接用字串,在userTag.java中定義 String userName; 並生成get(),set()方法,更簡單。

package org.springboot.tag;

public class User {
    public String userName;
    public String id;
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    } 
}

瀏覽器輸入 ,效果如下:
圖片描述

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4289/viewspace-2798485/,如需轉載,請註明出處,否則將追究法律責任。

相關文章