日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java占位符填充_实现java中的占位符

發布時間:2025/3/21 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java占位符填充_实现java中的占位符 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習過.net MVC 的同學,都知道其中用一個文件share /_Layout.cshtml,它主要實現的是一個類似母版頁(可以參照word的母版)的功能,那么在javaee中是否有類似的功能呢?其實javaee 提供了一個包含頁面的動作:

它能引入一些公共的部分,但是如果公共的地方不止一處,則需要寫很多的類似語句。有沒有一個類似.net中母版頁的功能呢?據我現在所知,javaee中是沒有的,當初我遇到高重復的頁面時,百度了很久,終于在一個技術blog中找到實現該功能的demo,由于時間太久已經忘記在哪找到,如果我接下來寫的侵犯了原作者權益,看見立刪。

想實現這個功能要有以下文件:

1:BlockTag.java:

2:?OverwriteTag.java

3:MyTag.tld

4:web.xml

5:_Layout.jsp

1,2兩個文件放在src下的一個包中如:com.**.util

3放在web-inf 下

1:BlockTag.javaimport java.io.IOException;

import javax.servlet.ServletRequest;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.tagext.BodyTagSupport;

import org.apache.commons.lang.StringUtils;

public class BlockTag extends BodyTagSupport {

/**

* 占位模塊名稱

*/

private String name;

private static final long serialVersionUID = 1425068108614007667L;

@Override

public int doStartTag() throws JspException{

return super.doStartTag();

}

@Override

public int doEndTag() throws JspException {

ServletRequest request = pageContext.getRequest();

//block標簽中的默認值

String defaultContent = (getBodyContent() == null)?"":getBodyContent().getString();

String bodyContent = (String) request.getAttribute(OverwriteTag.PREFIX+ name);

//如果頁面沒有重寫該模塊則顯示默認內容

bodyContent = StringUtils.isEmpty(bodyContent)?defaultContent:bodyContent;

try {

pageContext.getOut().write(bodyContent);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// TODO Auto-generated method stub

return super.doEndTag();

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

2:OverwriteTag.java

import javax.servlet.ServletRequest;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.tagext.BodyContent;

import javax.servlet.jsp.tagext.BodyTagSupport;

import org.apache.commons.lang.StringUtils;

/**

* 自定義標簽,用于在jsp模板中重寫指定的占位內容

*

* 基本原理:

* 將overwrite標簽內容部分添加到ServletRequest的attribute屬性中

* 在后續block標簽中再通過屬性名讀取出來,將其渲染到最終的頁面上即可

*

*

*/

public class OverwriteTag extends BodyTagSupport {

private static final long serialVersionUID = 5901780136314677968L;

//模塊名的前綴

public static final String PREFIX = "JspTemplateBlockName_";

//模塊名

private String name;

public int doStartTag() throws JspException {

// TODO Auto-generated method stub

return super.doStartTag();

}

@Override

public int doEndTag() throws JspException {

ServletRequest request = pageContext.getRequest();

//標簽內容

BodyContent bodyContent = getBodyContent();

request.setAttribute(PREFIX+name,? StringUtils.trim(bodyContent.getString()));

// TODO Auto-generated method stub

return super.doEndTag();

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

3:mytab<?xml version="1.0" encoding="utf-8"?>

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd">

1.0

2.0

Mytag

mytag

block

com.wsbalance.util.BlockTag

jsp

name

true

true

java.lang.String

ouerwrite

com.**.util.OverwriteTag

jsp

name

true

true

java.lang.String

4:web.xml

web.xml中配置自定義標簽

5:在share/_layout.jsp中寫母版

母版頁中(注意Layout:block>)

6:子頁面中:

好了結束了,如果有不太懂的請留言哦,第一次寫如有不足請多多關照!!

總結

以上是生活随笔為你收集整理的java占位符填充_实现java中的占位符的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。