JSP/Servlet: TagSupport Àà±ð
Èç¹ûÔÚ×Ô¶©±êÇ©¿âʱ£¬²¢²»ÐèÒª¶Ô±êÇ©±¾Ìå×÷´¦Àí£¬ÔòÄú¿ÉÒԼ̳ÐTagSupportÀà±ð£¬TagSupportÀà±ðʵ×÷ÁËTagÓë IterationTag½éÃæ£¬IterationTag½éÃæÔòÊÇTag½éÃæµÄ×Ó½éÃæ£¬TagSupportÀà±ðÌæÄúÔ¤ÏÈʵ×÷ÁËÕâÁ½¸ö½éÃæÖеķ½·¨£¬Ôڼ̳ÐTagSupportÖ®ºó£¬ÄúÊÓÐèÒªÀ´¸Äдµ±ÖеÄһЩ·½·¨£¨ÕâÊÇ Default Adapterģʽ£©¡£
Tag½éÃæÖÐÓë±êÇ©´¦Ïà¹ØµÄ·½·¨Ö÷ÒªÓУºdoStartTag()¡¢doEndTag()¡£ÆäÖÐdoStartTag()·½·¨ÊÇÓöµ½±êÇ©¿ªÊ¼Ê±»áºô½ÐµÄ·½·¨£¬ÆäºÏ·¨µÄ»Ø´«ÖµÊÇEVAL_BODY_INCLUDEÓëSKIP_BODY£¬Ç°Õß±íʾ½«ÏÔʾ±êÇ©¼äµÄ±¾ÌåÎÄ×Ö£¬ºóÕß±íʾ²»ÏÔʾ±êÇ©¼äµÄ±¾ÌåÎÄ×Ö£»doEndTag()·½·¨ÊÇÔÚÓöµ½±êÇ©½áÊøÊ±ºô½ÐµÄ·½·¨£¬ÆäºÏ·¨µÄ»Ø´«ÖµÊÇEVAL_PAGEÓëSKIP_PAGE£¬´«»ØÇ°Õß±íʾ´¦ÀíÍê±êÇ©ºó¼Ì³ÐÖ´ÐÐÒÔÏÂJSPÍøÒ³£¬´«»ØºóÕßÔò±íʾ²»´¦Àí½ÓÏÂÀ´µÄJSPÍøÒ³¡£
IterationTag½éÃæ¼Ì³ÐTag½éÃæ£¬ÔÚ±êÇ©´¦ÀíÉÏÔö¼ÓÁËdoAfterBody()£¬Õâ¸ö·½·¨ÊÇÔÚÏÔʾÍê±êÇ©¼äÎÄ×Ö±¾ÌåÖ®ºóºô½ÐµÄ£¬ÆäºÏ·¨µÄ»Ø´«ÖµÓÐEVAL_BODY_AGAINÓëSKIP_BODY£¬Èç¹û´«»ØÇ°Õߣ¬Ôò»áÔÙÏÔʾһ´Î±êÇ©¼äµÄÎÄ×Ö±¾Ì壬´«»ØºóÕßÔò¼Ì³ÐÖ´ÐбêÇ©´¦ÀíµÄÏÂÒ»²½¡£
TagSupportÀà±ðʵ×÷ÁËTagÓëIterationTag½éÃæ£¬ÆäÔ¤ÉèµÄ»Ø´«ÖµÊÇ£ºdoStartTag()»Ø´« SKIP_BODY¡¢doAfterBodyTag()»Ø´«SKIP_BODY¡¢doEndTag()»Ø´«EVAL_PAGE¡£ËùÒÔÔڼ̳РTagSupportÖ®ºó£¬Èç¹ûûÓиÄдÈκεķ½·¨£¬ÔòÔÚ±êÇ©´¦ÀíÉÏÖ´ÐеÄ˳ÐòÊÇ£º
doStartTag() -> ²»ÏÔʾ±¾ÌåÎÄ×Ö -> doEndTag() -> Ö´ÐнÓÏÂÀ´µÄJSPÍøÒ³
Èç¹ûÄú¸ÄдÁËdoStartTag()£¬ÔòÄú±ØÐëÖ¸¶¨»Ø´«Öµ£¬Èç¹ûÖ¸¶¨ÁËEVAL_BODY_INCLUDE£¬ÔòÔ¤Éè»áÕÕÒÔϵÄ˳ÐòÖ´ÐУº
doStartTag() -> ÏÔʾ±¾ÌåÎÄ×Ö -> doAfterBodyTag()->doEndTag()->Ö´ÐнÓÏÂÀ´µÄJSPÍøÒ³
¼òµ¥µÄ˵£¬Èç¹ûÄú¼Ì³ÐÁËTagSupport²¢¸ÄдÁËÆäÖеÄһЩ·½·¨£¬ÔòÄú±ØÐëÖ¸¶¨·½·¨ºÏ·¨µÄ»Ø´«Öµ£¬Èç¹û²»¸Äд£¬Ôò»áÓÐÆäÔ¤ÉèµÄ»Ø´«Öµ£¬/ÒÔÏÂ×÷¸öÁ÷³ÌÕûÀí£º
Èç¹ûÄúÔÚ´¦Àí±êǩʱ£¬ÒýÓÃÁËһЩ×ÊÔ´£¬ÀýÈçµµ°¸I/O»òÊÇ×ÊÁÏ¿âÁ¬½á£¬ÔòÄú¿ÉÒÔ¸Äдrelease()·½·¨£¬Õâ¸ö·½·¨»áÔÚdoEndTag()Ö®ºóÖ´ÐУ¬Äú¿ÉÒÔÔÚ´¦ÀíÍê±êǩ֮ºóÓÃËüÀ´ÊÍ·ÅÏÈǰËùʹÓõ½µÄ×ÊÔ´¡£
ÏÂÃæÕâ¸ö³Ìʽ¼òµ¥µÄʾ·¶ÈçºÎʹÓÃ×Ô¶©±êÇ©À´¶ÔÍøÒ³ÄÚÈÝ×÷һЩ±£»¤£º
GuardTag.java
package onlyfun.caterpillar;
import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class GuardTag extends TagSupport {
public int doStartTag() throws J
Ïà¹ØÎĵµ£º
½ñÌìѧ»áÁËÈçºÎ×Ô¼º±àд JSP ÓÃÀ´´¦Àí CKEditor µÄͼƬÉÏ´«¡£
<%@ page import="org.apache.commons.fileupload.FileItem" %>
<%@ page import="java.util.List" %>
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory" %>
<%@ page import ......
AjaxºÍjspµÄ¹ÖÏÖÏó
Èç¹ûÓÃAjaxÈ¥ÇëÇóÒ»¸öjspÒ³Ãæ£¬¸ÃjspÒ³Ãæ·µ»ØµÄÊÇxml£¨response.setContentType("text/xml; charset=GB2312");£©£¬²¢ÇÒ¸Ãjsp°üº¬ÏÂÃæÕâЩͷ@pageÖ¸ÁîµÄ»°£¬ÔòÔÚ¿Í»§¶Ëxml=XMLHttpRequest.responseXMLµÃµ½µÄÊÇÒ»¸ö²»°üº¬ÈÎÎñ¶«Î÷µÄxml¶ÔÏ󣬼´xml.childNodes.length½«»áÊÇ0.
......
<jsp:directive.page import="zero.space.ch03.BookBean"/>
Ï൱ÓÚ
<%@ page import="zero.space.ch03.BookBean" %>
µ«ÊÇÒ²ÓÐÇø±ð£ºÁ½¸öÓ÷¨µÄ×÷Ó÷¶Î§²»Í¬£¬<%@ page import="zero.space.ch03.BookBean" %> ¿ÉÓÃÓÚ¶à¸öÒ³ÃæÄÚ¶ø<jsp:dir ......
1.request¶ÔÏó
¿Í»§¶ËµÄÇëÇóÐÅÏ¢±»·â×°ÔÚrequest¶ÔÏóÖУ¬Í¨¹ýËü²ÅÄÜÁ˽⵽¿Í»§µÄÐèÇó£¬È»ºó×ö³öÏìÓ¦¡£ËüÊÇHttpServletRequestÀàµÄʵÀý¡£
ÐòºÅ ·½ ·¨ ˵ Ã÷
1 object getAttribute(String name) ·µ»ØÖ¸¶¨ÊôÐÔµÄÊôÐÔÖµ
2 Enumeration getAttributeNames() ·µ»ØËùÓпÉÓÃÊôÐÔÃûµÄö¾Ù
3 String getCharacterEncoding() · ......
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>strut ......