目录结构
1.servlet-AreaBroadcastServlet.java
如Openfire插件中提供对外的Servlet服务,访问地址: http://server:9090/plugins/xxxservice/xxservlet
默认情况下访问该地址是会转向到Openfire认证界面,即需要认证才能访问该地址。
要免认证访问,需要如以下代码实现:
默认情况下访问该地址是会转向到Openfire认证界面,即需要认证才能访问该地址。
要免认证访问,需要如以下代码实现:
关键点是:SERVICE_NAME 采用插件所在文件夹名+servlet地址的写法。
public class AreaBroadcastServlet extends HttpServlet {
private static final String SERVICE_NAME = "areaBroadcast/abservlet";
@Override
public void init(ServletConfig servletConfig) throws ServletException {
super.init(servletConfig);
AuthCheckFilter.addExclude(SERVICE_NAME);
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
{
public void init(ServletConfig servletConfig) throws ServletException {
super.init(servletConfig);
AuthCheckFilter.addExclude(SERVICE_NAME);
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
{
//TODO:做你想做的处理
}
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
{
doPost(request, response);
}
@Override
public void destroy() {
super.destroy();
AuthCheckFilter.removeExclude(SERVICE_NAME);
}
}
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
{
doPost(request, response);
}
@Override
public void destroy() {
super.destroy();
AuthCheckFilter.removeExclude(SERVICE_NAME);
}
}
2.web-custom.xml
<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<!-- Servlets -->
<servlet>
<servlet-name>AreaBroadcastServlet</servlet-name>
<servlet-class>com.channelsoft.openfire.plugin.AreaBroadcastServlet</servlet-class>
</servlet>
<!-- Servlet mappings -->
<servlet-mapping>
<servlet-name>AreaBroadcastServlet</servlet-name>
<url-pattern>/ abservlet</url-pattern>
</servlet-mapping>
</web-app>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<!-- Servlets -->
<servlet>
<servlet-name>AreaBroadcastServlet</servlet-name>
<servlet-class>com.channelsoft.openfire.plugin.AreaBroadcastServlet</servlet-class>
</servlet>
<!-- Servlet mappings -->
<servlet-mapping>
<servlet-name>AreaBroadcastServlet</servlet-name>
<url-pattern>/ abservlet</url-pattern>
</servlet-mapping>
</web-app>
注意: <url-pattern>/
abservlet</url-pattern>这个标黄的地方
一定要全小写,否则jsp页面无法找到该servlet,具体原因不明。