首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cq5无法创建servlet资源

cq5无法创建servlet资源
EN

Stack Overflow用户
提问于 2014-02-11 15:18:28
回答 2查看 1.2K关注 0票数 0

我在CQ5应用程序中创建了一个servlet:

代码语言:javascript
复制
import java.io.IOException;

import javax.servlet.ServletException;

import org.apache.felix.scr.annotations.sling.SlingServlet;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;

@SlingServlet(
        label = "Example Servlet",
        paths = {"/bin/project/signin"},
        methods = {"GET"},
        extensions = {"html"},
        metatype = false
)
public class SignInServlet extends SlingAllMethodsServlet  {

    private static final long serialVersionUID = 796802690004962223L;

    @Override
    protected void doGet(SlingHttpServletRequest request,
            SlingHttpServletResponse response) throws ServletException,
            IOException {
        doPost(request, response);
    }

    @Override
    protected void doPost(SlingHttpServletRequest request,
            SlingHttpServletResponse response) throws ServletException,
            IOException {
        response.setContentType("text/plain");
        response.getOutputStream().print("Sigin Servlet");
    }
}

我尝试通过rest-client调用它,但它返回:

代码语言:javascript
复制
No resource found for url: http://localhost:4502/bin/project/signin

我还在Felix侧打开Sling Resource Resolver来测试它是否可用。但我收到了:

代码语言:javascript
复制
NonExistingResource, path=/bin/project/signin

/bin/已经在Apache Sling Servlet/脚本解析器和错误处理程序中进行了配置

EN

回答 2

Stack Overflow用户

发布于 2014-02-11 18:18:16

@SlingServlet注释中,您已经声明此servlet仅支持带有.html扩展名的请求,因此您应该输入以下URL:

代码语言:javascript
复制
http://localhost:4502/bin/project/signin.html

如果不想使用该扩展,请从servlet注释中删除适当的参数。

票数 2
EN

Stack Overflow用户

发布于 2014-02-11 19:49:33

有两种方法可以帮助调试这种情况-

  1. 将允许您检查给定的GET或POST请求将针对哪个Servlet进行解析。
  2. 如果您在选项卡中找到了生成404的请求,则在尝试解析它时,它应该确切地告诉您Sling找到了哪些属性。

例如,在您的情况下,我假设404提供了类似于:

代码语言:javascript
复制
LOG Resource Path Info: SlingRequestPathInfo: \
path='/bin/project/signin', \
selectorString='null', \
extension='null', \
suffix='null'

与注释中的设置相比,这里有一个与servlet不匹配的extension='null' -它只与'html'扩展绑定,正如Tomek上面所说的那样。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21695519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档