gpt4 book ai didi

multithreading - 自定义 JSP 标签是否被多线程访问

转载 作者:行者123 更新时间:2023-12-01 11:20:00 25 4
gpt4 key购买 nike

我有一个简单的自定义 JSP 标记,定义如下:

public class SimpleTag extends TagSupport {
private static final long serialVersionUID = 1L;

private String var;
private Map<String, String> data = new HashMap<String, String>();

public String getVar() {
return var;
}

public void setVar(String var) {
this.var = var;
}

@Override
public int doStartTag() throws JspException {
populateData();
pageContext.setAttribute(var, data);
return EVAL_BODY_INCLUDE;
}

@Override
public int doEndTag() throws JspException {
pageContext.setAttribute(var, null);
return EVAL_PAGE;
}

private void populateData() {
// add data to "data" map
}
}

我将 hashmap 暴露给标签体。

标签会被容器重用(缓存/池化)还是被多线程访问?我需要在标签设计中格外小心吗?

如果它太基础了,我深表歉意。我的搜索一直没有成功。提前致谢。

最佳答案

Classic Tag Handlers 可以合并或不合并,具体取决于容器;
根据规范 (http://download.oracle.com/otn-pub/jcp/jsp-2_3-mrel2-eval-spec/JSP2.3MR.pdf)

,无法合并简单标签处理程序

但无论如何,不​​应该有任何线程问题,因为处理程序应该一次只处理一个请求:

Clarify that a tag handler instance is actively processing only one request at a time; this happens naturally if the tag handler is instantiated afresh through new() invocations, but it requires spelling once tag handler pooling is introduced. This clarification affected Chapter JSP.13.

关于multithreading - 自定义 JSP 标签是否被多线程访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45018747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com