一、定義標簽類
package com.taglib.pageparameter;
import javax.servlet.ServletRequest;
import javax.servlet.jsp.tagext.TagSupport;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
/**
?* <p>Title: 參數傳遞標簽</p>
?* <p>Description: 統一處理頁面間的參數傳遞</p>
?* @author Administrator
?*
?*/
public class ddd extends TagSupport {
? private String paraNames = null;? //參數串,以WebConfig.SEPARATE分隔
? public void setParaNames(String paraNames){
??? this.paraNames = paraNames ;
? }
? public String getParaNames(){
??? return this.paraNames;
? }
? public int doStartTag(){
?? if(this.paraNames==null)
??? return EVAL_BODY_INCLUDE;
??? String[] paras = this.paraNames.split(WebConfig.SEPARATE);???
??? this.transactPara(pageContext,paras);
??? return EVAL_BODY_INCLUDE ;
? }
? public int doEndTag(){
??? return EVAL_PAGE ;
? }
?
? /**
?? * 處理參數傳遞
?? * 規則:
?? * 1,如果不能在request范圍內找到相應name的參數,設置值為WebConfig.NULL=""
?? * 2,如果atrribute,parameter中同時存在同名的參數,以attribute中為主
?? * 3,將所有jsp頁面所需的參數轉換為attribute保存,在jsp頁面中通過<bean:write name="attributeName" />調用
?? * 4,涉及處理的參數包括:String[] args
?? * @param pageContext PageContext
?? * @param args String[]
?? */
? public void transactPara(PageContext pageContext,String[] args){
??? for (int i = args.length ; --i >= 0;) {
????? ServletRequest request = pageContext.getRequest() ;
????? Object attr=(String)request.getAttribute(args[i]);
????? String para=request.getParameter(args[i]);
????? if(attr==null)
??????? request.setAttribute(args[i], para==null?WebConfig.NULL:para);
??? }
? }
}
相關類
package com.taglib.pageparameter;
public class WebConfig{
???public static final String SEPARATE=";";//前臺web參數間隔離符號
???public final static String NULL = "";? //頁面間參數傳遞,name為空時設置的缺省值
}
二、標簽定義tld文件
PageParameter.tld
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"<taglib>
?<tlibversion>1.0</tlibversion>
?<jspversion>1.1</jspversion>
?<shortname>PageParameter</shortname>
?<info></info>
? <tag>
??? <name>ParameterTransact</name>
??? <tagclass>com.taglib.pageparameter.PageParameterTag</tagclass>
??? <bodycontent>empty</bodycontent>
??? <info></info>
? ?<attribute>
????? <name>paraNames</name>
????? <required>true</required>
????? <rtexprvalue>true</rtexprvalue>
?? </attribute>
?</tag>
</taglib>
三、在web.xml中加載標簽
四、jsp頁面調用
<%@ page import="package com.taglib.pageparameter.WebConfig" %>
<%@ taglib uri="/WEB-INF/Archive/PageParameter.tld" prefix="PageParameter" %>
<PageParameter:ParameterTransact paraNames='<%="urlSQL"+WebConfig.SEPARATE+"page"%>'/>