java将data类,Java MappingData类代码示例

import org.apache.tomcat.util.http.mapper.MappingData; //导入依赖的package包/类

/**

* Return a ServletContext object that corresponds to a

* specified URI on the server. This method allows servlets to gain

* access to the context for various parts of the server, and as needed

* obtain RequestDispatcher objects or resources from the

* context. The given path must be absolute (beginning with a "/"),

* and is interpreted based on our virtual host's document root.

*

* @param uri Absolute URI of a resource on the server

*/

@Override

public ServletContext getContext(String uri) {

// Validate the format of the specified argument

if (uri == null || !uri.startsWith("/")) {

return null;

}

Context child = null;

try {

// Look for an exact match

Container host = context.getParent();

child = (Context) host.findChild(uri);

// Non-running contexts should be ignored.

if (child != null && !child.getState().isAvailable()) {

child = null;

}

// Remove any version information and use the mapper

if (child == null) {

int i = uri.indexOf("##");

if (i > -1) {

uri = uri.substring(0, i);

}

// Note: This could be more efficient with a dedicated Mapper

// method but such an implementation would require some

// refactoring of the Mapper to avoid copy/paste of

// existing code.

MessageBytes hostMB = MessageBytes.newInstance();

hostMB.setString(host.getName());

MessageBytes pathMB = MessageBytes.newInstance();

pathMB.setString(uri);

MappingData mappingData = new MappingData();

((Engine) host.getParent()).getService().findConnectors()[0].getMapper().map(

hostMB, pathMB, null, mappingData);

child = (Context) mappingData.context;

}

} catch (Throwable t) {

ExceptionUtils.handleThrowable(t);

return null;

}

if (child == null) {

return null;

}

if (context.getCrossContext()) {

// If crossContext is enabled, can always return the context

return child.getServletContext();

} else if (child == context) {

// Can still return the current context

return context.getServletContext();

} else {

// Nothing to return

return null;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的使用SSEEmitterServer的Java Servlet代码示例: ```java @WebServlet("/mySSEServlet") public class MySSEServlet extends HttpServlet { private static final long serialVersionUID = 1L; private final List<SSEEmitter> emitters = new CopyOnWriteArrayList<>(); @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/event-stream"); response.setCharacterEncoding("UTF-8"); final SSEEmitter emitter = new SSEEmitter(); emitters.add(emitter); emitter.onCompletion(() -> emitters.remove(emitter)); emitter.onTimeout(() -> emitters.remove(emitter)); emitter.send("connected", "event"); } public void sendMessage(String message) { for (SSEEmitter emitter : emitters) { try { emitter.send(message, "message"); } catch (IOException e) { emitters.remove(emitter); } } } } ``` 上述代码中,我们定义了一个名为MySSEServlet的Servlet,并且在doGet()方法中创建了一个SSEEmitter对象,将其添加到一个列表中,并且设置了完成和超时的回调方法。在sendMessage()方法中,我们可以向所有客户端发送消息。 为了使用这个Servlet,我们需要在Web应用程序的web.xml文件中添加以下配置: ```xml <servlet> <servlet-name>MySSEServlet</servlet-name> <servlet-class>com.example.MySSEServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MySSEServlet</servlet-name> <url-pattern>/mySSEServlet</url-pattern> </servlet-mapping> ``` 然后,我们可以在客户端使用以下JavaScript代码来接收服务器端发送的事件: ```javascript const eventSource = new EventSource('/mySSEServlet'); eventSource.onmessage = (event) => { console.log(event.data); }; ``` 这样,客户端就可以接收到服务器端发送的事件,并且我们可以通过调用sendMessage()方法来向所有客户端发送消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值