【问题标题】:serving HTML/JSP in a restful webapp using jersey & java使用 jersey 和 java 在一个安静的 webapp 中提供 HTML/JSP
【发布时间】:2013-08-15 17:36:28
【问题描述】:

我似乎无法弄清楚。尝试使用注释和 web.xml 来配置 web 内容的路径,但不断获取未知资源。

球衣主队:

@ApplicationPath("/")
public class App extends PackagesResourceConfig {
   public App() {
        super("webapp.resources");
    }
}

球衣默认路径“/”:(hello world 有效!index.html\jsp 无效

@Path("/")
@Produces(MediaType.TEXT_HTML)
public class RootResource
{
    @GET 
    public String index(@Context HttpServletRequest request) {
        return "hello world";
    }
}

我尝试过的:

  1. 多个 web.xml 配置
  2. 提供可视项(错误无法解析模板 index.jsp)

您认为提供 html 或 jsp 等页面的解决方案是什么?

有没有办法用球衣(没有弹簧!)和可视\模板来做到这一点?

【问题讨论】:

    标签: rest jersey web.xml


    【解决方案1】:

    Jersey 在 jersey-mvc-jsp 扩展模块中提供对 JSP 模板的支持

    查看official doc

    【讨论】:

      【解决方案2】:

      回答我的问题。未来远程信息处理的解决方案应该适用于大多数人。这是一个已知且有效的解决方案。所以当我这样做时为什么没有工作:

      问题 1: 经过多次摆弄后,我发现一旦我将应用程序根路径从“/”更改为“/api”(或/???),突然一切都开始了。必须是球衣的东西。我在某处读到,为了使“/”工作,您应该在 web.xml 中使用过滤器进行映射。我很想知道是否有人成功地做到了这一点。

      所以现在它使用 JSP 为我的初始页面提供服务。该页面我可以用 jsons 以一种休息方式进行操作。

      问题 2: 使@viewable 工作只是在WebContent (com/webapp/model/index(

      【讨论】:

        【解决方案3】:

        这应该很容易;尝试以下方法:

        /WEB-INF/web.xml 文件:

        <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xmlns="http://java.sun.com/xml/ns/javaee" 
                 xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
                 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
                 version="3.0">
        
            <display-name>Your REST end Point</display-name>
        
            <!-- /////////////////////// JERSEY (NO SPRING) ///////////////////////// -->
            <servlet>
                <servlet-name>MyRESTEndPoint</servlet-name>
                <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        
                <!- Package where jersey will scan for resources ->
                <init-param>
                    <param-name>com.sun.jersey.config.property.packages</param-name>
                    <param-value>com.mycompany</param-value>
                </init-param>
        
                <load-on-startup>1</load-on-startup>
            </servlet>
            <servlet-mapping>
                <servlet-name>MyRESTEndPoint</servlet-name>
                <url-pattern>/MyRESTEndPoint/*</url-pattern>
            </servlet-mapping>
        
            <welcome-file-list>
                <welcome-file>index.jsp</welcome-file>
            </welcome-file-list>
        
        </web-app>
        

        AT 包 com.mycompany(查看 web.xml 中的 )放置 Application 类:

        package com.mycompany;
        
        public class MyApp 
             extends Application {
            @Override
            public Set<Class<?>> getClasses() {
                Set<Class<?>> s = new HashSet<Class<?>>();
                s.add(MyResource.class);
                // ... add other resources
                return s;
            }
        }
        

        像这样创建资源:

        @Path("myResourcePath")
        public class R01ERESTResourceForStructure {
            @GET @Path("{myResourceId}") 
            @Produces(MediaType.APPLICATION_XML)
            public Response load(@PathParam("myResourceId") final String id) {
                 ....
            }
        }
        

        您的网址应该是:例如 /MyRESTEndPoint/myResourcePath/myResourceId

        如果你使用的是 SPRING 或 GUICE,web.xml 应该有点不同

        【讨论】:

        • 在过去的几天里,我已经多次这样做了。我只是又做了一次 - 1 关闭服务器 2 清理项目 3 当我将 xml 放在 web info 文件夹中时创建了 web.xml,它与 @path 的注释“战斗”,这是我无法解释的事情。现在似乎服务器忽略了 web.xml,因为我可以访问我没有在 web.xml 中声明的路径。有没有办法用 jersey/java 注释来做到这一点。我开始讨厌 xml 设置!
        • 所以你已经让 REST 资源工作但你想配置 JSP 服务只通过注释(没有 web.xml)对吗?我不知道通过注解注册 JSP 的方法(可以使用注解 see servlet 3.0 注册 servlet,但是 jsps...)
        猜你喜欢
        • 1970-01-01
        • 2018-08-20
        • 1970-01-01
        • 1970-01-01
        • 2015-06-20
        • 1970-01-01
        • 1970-01-01
        • 2016-08-25
        • 2017-08-31
        相关资源
        最近更新 更多