Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何跳过索引文件并直接显示json响应?_Java_Jsp_Jersey 2.0 - Fatal编程技术网

Java 如何跳过索引文件并直接显示json响应?

Java 如何跳过索引文件并直接显示json响应?,java,jsp,jersey-2.0,Java,Jsp,Jersey 2.0,我已经在Java中使用Jersey 2.6开发了restapi,服务器是apachetomcat,并在JSON中获得响应。当我通过右键单击并单击runonserver运行项目时,会显示选项一html页面,即index.html 下面是我的web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <!-- This web.xml file is not required when using Servlet 3.0 container,

我已经在
Java
中使用
Jersey 2.6
开发了
restapi
,服务器是
apachetomcat
,并在
JSON
中获得响应。当我通过右键单击并单击
runonserver
运行项目时,会显示选项一
html
页面,即
index.html

下面是我的
web.xml
文件

<?xml version="1.0" encoding="UTF-8"?>
<!-- This web.xml file is not required when using Servlet 3.0 container,
     see implementation details http://jersey.java.net/nonav/documentation/latest/jax-rs.html -->
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>Jersey Web Application</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>com.xyz.webservices</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey Web Application</servlet-name>
        <url-pattern>/webapi/*</url-pattern>
    </servlet-mapping>
</web-app>
<html>
<body>
    <h2>Jersey RESTful Web Application!</h2>
    <p><a href="webapi/getConfigFiles">Jersey resource</a>

</body>
</html>
这是我的资源文件,我在点击“Jersey resource”按钮后调用它

包com.xyz.webservices;
导入java.io.File;
导入java.util.ArrayList;
导入java.util.List;
导入javax.ws.rs.GET;
导入javax.ws.rs.Path;
导入javax.ws.rs.products;
导入javax.ws.rs.core.MediaType;
导入javax.ws.rs.core.Response;
导入javax.ws.rs.core.Response.Status;
导入org.json.JSONException;
导入org.json.JSONObject;
导入com.google.gson.gson;
@路径(“getConfigFiles”)
公共类资源{
@得到
@产生(MediaType.APPLICATION_JSON)
公共响应getConfigFiles()
{
响应=空;
试一试{
List listConfig=new ArrayList();
字符串ROOT\u FILE\u PATH=“E:\\eSamridhi\\Data\\ConfigData”;
文件f=新文件(根文件路径);
File[]allSubFiles=f.listFiles();
用于(文件:所有子文件)
{
listConfig.add(file.getName().replace(“.xlsx”,”);
}
JSONObject对象=新的JSONObject();
put(“ConfigFiles”,listConfig);
System.out.println(对象);
response=response.status(status.OK).entity(object.toString()).build();
}捕获(JSONException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回响应;
}
}
这是我点击按钮后的反应

因此,我的问题不是先显示索引文件,而是在访问
URL
后直接显示响应
JSON
。如何重定向或直接删除中间步骤,以便直接获得初学者没有得到的响应。 任何帮助都将不胜感激。 因为在这之后,我正在开发前端,我需要通过调用上面的API直接显示数据


谢谢你的考虑

您可以通过多种不同的方式来实现这一点。例如,您可以在html页面上使用javascript,在页面加载时单击按钮。另一种更好的方法是创建一个新的servlet,并将web.xml中的欢迎文件列表映射到此servlet。例如,使用url映射/Test创建一个名为“Test”的servlet

web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- This web.xml file is not required when using Servlet 3.0 container,
         see implementation details http://jersey.java.net/nonav/documentation/latest/jax-rs.html -->
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <welcome-file-list>
    <welcome-file>Test</welcome-file>
  </welcome-file-list>


        <servlet>
            <servlet-name>Jersey Web Application</servlet-name>
            <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
            <init-param>
                <param-name>jersey.config.server.provider.packages</param-name>
                <param-value>com.xyz.webservices</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>Jersey Web Application</servlet-name>
            <url-pattern>/webapi/*</url-pattern>
        </servlet-mapping>
    </web-app>
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- This web.xml file is not required when using Servlet 3.0 container,
         see implementation details http://jersey.java.net/nonav/documentation/latest/jax-rs.html -->
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <welcome-file-list>
    <welcome-file>Test</welcome-file>
  </welcome-file-list>


        <servlet>
            <servlet-name>Jersey Web Application</servlet-name>
            <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
            <init-param>
                <param-name>jersey.config.server.provider.packages</param-name>
                <param-value>com.xyz.webservices</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>Jersey Web Application</servlet-name>
            <url-pattern>/webapi/*</url-pattern>
        </servlet-mapping>
    </web-app>
@WebServlet("/Test")
public class Test extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public Test() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

      //here you should be able to call this method
      Resource r = new Resource();
      r.getConfigFiles();  


     }

}