-6ren">
gpt4 book ai didi

java - 运行 Spring WebApp 时代码状态 406

转载 作者:行者123 更新时间:2023-11-28 22:25:13 24 4
gpt4 key购买 nike

我的项目文件夹中有这些文件

build.xml

version="1.0"?>

<property name="src.dir" value="src"/>
<property name="web.dir" value="war"/>
<property name="build.dir" value="${web.dir}/WEB-INF/classes"/>
<property name="test.dir" value="test"/>
<property name="name" value="HelloWorld"/>

<path id="master-classpath">
<fileset dir="${web.dir}/WEB-INF/lib">
<include name="*.jar"/>
</fileset>
<!-- We need the servlet API classes: -->
<!-- * for Tomcat 5/6 use servlet-api.jar -->
<!-- * for other app servers - check the docs -->
<fileset dir="${appserver.lib}">
<include name="servlet*.jar"/>
</fileset>
<pathelement path="${build.dir}"/>
</path>

<target name="usage">
<echo message=""/>
<echo message="${name} build file"/>
<echo message="-----------------------------------"/>
<echo message=""/>
<echo message="Available targets are:"/>
<echo message=""/>
<echo message="build --> Build the application"/>
<echo message="deploy --> Deploy application as directory"/>
<echo message="deploywar --> Deploy application as a WAR file"/>
<echo message="start-webapp --> Start application in Tomcat"/>
<echo message="stop-webapp --> Stop application in Tomcat"/>
<echo message="deploy-webapp --> Deploy application in Tomcat"/>
<echo message="undeploy-webapp --> Undeploy application in Tomcat"/>
<echo message="list --> List Tomcat applications"/>
<echo message=""/>
</target>

<target name="build" description="Compile main source tree java files">
<mkdir dir="${build.dir}"/>
<javac destdir="${build.dir}" debug="true"
deprecation="false" optimize="false" failonerror="true">
<src path="${src.dir}"/>
<classpath refid="master-classpath"/>
</javac>
</target>

<target name="buildtests" description="Building All TestCases">
<mkdir dir="${build.dir}"/>
<javac destdir="${build.dir}" source="1.5" target="1.5" debug="true"
deprecation="false" optimize="false" failonerror="true">
<src path="${test.dir}"/>
<classpath refid="master-classpath"/>
</javac>
</target>

<target name="clean" description="Cleaning All build files">
<delete>
<fileset dir="${build.dir}">
<include name="**/*.class"/>
</fileset>
</delete>
</target>

<target name="tests" depends="build,buildtests" description="Running All TestCases">
<junit printsummary="on" fork="false" haltonfailure="false" failureproperty="tests.failed"
showoutput="true">
<classpath refid="master-classpath"/>
<formatter type="brief" usefile="false"/>

<batchtest>
<fileset dir="${build.dir}">
<include name="**/*Tests.*"/>
</fileset>
</batchtest>
</junit>

<fail if="tests.failed">
tests.failed=${tests.failed}
***********************************************************
***********************************************************
**** One or more tests failed! Check the output ... ****
***********************************************************
***********************************************************
</fail>
</target>

<target name="deploy" depends="build" description="Deploy application">
<copy todir="${deploy.path}/${name}" preservelastmodified="true">
<fileset dir="${web.dir}">
<include name="**/*.*"/>
</fileset>
</copy>
</target>

<target name="deploywar" depends="build" description="Deploy application as a WAR file">
<war destfile="${name}.war"
needxmlfile="false">
<fileset dir="${web.dir}">
<include name="**/*.*"/>
</fileset>
</war>
<copy todir="${deploy.path}" preservelastmodified="true">
<fileset dir=".">
<include name="*.war"/>
</fileset>
</copy>
</target>

<!-- ============================================================== -->
<!-- Tomcat tasks - remove these if you don't have Tomcat installed -->
<!-- ============================================================== -->

<path id="catalina-ant-classpath">
<!-- We need the Catalina jars for Tomcat -->
<!-- * for other app servers - check the docs -->
<fileset dir="${appserver.lib}">
<include name="catalina-ant.jar"/>
<include name="tomcat-coyote.jar"/>
<include name="tomcat-util.jar"/>
</fileset>
<fileset dir="${appserver.home}/bin">
<include name="tomcat-juli.jar"/>
</fileset>
</path>

<taskdef name="catalina-deploy" classname="org.apache.catalina.ant.DeployTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-list" classname="org.apache.catalina.ant.ListTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-reload" classname="org.apache.catalina.ant.ReloadTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-findleaks" classname="org.apache.catalina.ant.FindLeaksTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-resources" classname="org.apache.catalina.ant.ResourcesTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-start" classname="org.apache.catalina.ant.StartTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-stop" classname="org.apache.catalina.ant.StopTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-undeploy" classname="org.apache.catalina.ant.UndeployTask" classpathref="catalina-ant-classpath"/>

<target name="start-webapp" description="Start application in Tomcat">
<catalina-start url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"
path="/${name}" />
</target>

<target name="stop-webapp" description="Stop application in Tomcat">
<catalina-stop url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"
path="/${name}" />
</target>

<target name="deploy-webapp" description="Deploy application in Tomcat">
<catalina-deploy url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"
path="/${name}"
war="file:${deploy.path}/${name}.war"/>
</target>

<target name="undeploy-webapp" description="Undeploy Tomcat application">
<catalina-undeploy url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"
path="/${name}"/>
</target>

<target name="list" description="List Tomcat applications">
<catalina-list url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"/>
</target>

<target name="reload" description="Reload Application in Tomcat">
<catalina-reload url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"
path="/${name}"/>
</target>

<!-- End Tomcat tasks -->

AppIntializer.java

package HelloWorld.web.config;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration.Dynamic;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

public class AppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(AppConfig.class);
ctx.setServletContext(servletContext);

Dynamic dynamic = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
dynamic.addMapping("/");
dynamic.setLoadOnStartup(1);
}
}

AppConfig.java

package HelloWorld.web.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "HelloWorld.web")
public class AppConfig {
}

Person.java

package HelloWorld.web.POJO;


public class Person {

private String id;

private String name;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

HelloController.java

package HelloWorld.web.controller;

import HelloWorld.web.POJO.Person;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/data")
public class HelloController {

protected final Log logger = LogFactory.getLog(getClass());

@RequestMapping(value = "/persons", method = RequestMethod.GET, headers="Accept=application/json")
public Person handleRequest() {
Person person = new Person();
person.setId("1");
person.setName("Kuch");
return person;
}
}

lib 文件夹包含 spring、jackson、servlet-api、common-logging jar

commons-logging-1.2-javadoc.jar
commons-logging-1.2.jar
hamcrest-core-1.3.jar
jackson-core-2.9.3.jar
junit-4.12.jar
servlet-api.jar
spring-aop-5.0.2.RELEASE-javadoc.jar
spring-aop-5.0.2.RELEASE-sources.jar
spring-aop-5.0.2.RELEASE.jar
spring-aspects-5.0.2.RELEASE-javadoc.jar
spring-aspects-5.0.2.RELEASE-sources.jar
spring-aspects-5.0.2.RELEASE.jar
spring-beans-5.0.2.RELEASE-javadoc.jar
spring-beans-5.0.2.RELEASE-sources.jar
spring-beans-5.0.2.RELEASE.jar
spring-context-5.0.2.RELEASE-javadoc.jar
spring-context-5.0.2.RELEASE-sources.jar
spring-context-5.0.2.RELEASE.jar
spring-context-indexer-5.0.2.RELEASE-javadoc.jar
spring-context-indexer-5.0.2.RELEASE-sources.jar
spring-context-indexer-5.0.2.RELEASE.jar
spring-context-support-5.0.2.RELEASE-javadoc.jar
spring-context-support-5.0.2.RELEASE-sources.jar
spring-context-support-5.0.2.RELEASE.jar
spring-core-5.0.2.RELEASE-javadoc.jar
spring-core-5.0.2.RELEASE-sources.jar
spring-core-5.0.2.RELEASE.jar
spring-expression-5.0.2.RELEASE-javadoc.jar
spring-expression-5.0.2.RELEASE-sources.jar
spring-expression-5.0.2.RELEASE.jar
spring-instrument-5.0.2.RELEASE-javadoc.jar
spring-instrument-5.0.2.RELEASE-sources.jar
spring-instrument-5.0.2.RELEASE.jar
spring-jcl-5.0.2.RELEASE-javadoc.jar
spring-jcl-5.0.2.RELEASE-sources.jar
spring-jcl-5.0.2.RELEASE.jar
spring-jdbc-5.0.2.RELEASE-javadoc.jar
spring-jdbc-5.0.2.RELEASE-sources.jar
spring-jdbc-5.0.2.RELEASE.jar
spring-jms-5.0.2.RELEASE-javadoc.jar
spring-jms-5.0.2.RELEASE-sources.jar
spring-jms-5.0.2.RELEASE.jar
spring-messaging-5.0.2.RELEASE-javadoc.jar
spring-messaging-5.0.2.RELEASE-sources.jar
spring-messaging-5.0.2.RELEASE.jar
spring-orm-5.0.2.RELEASE-javadoc.jar
spring-orm-5.0.2.RELEASE-sources.jar
spring-orm-5.0.2.RELEASE.jar
spring-oxm-5.0.2.RELEASE-javadoc.jar
spring-oxm-5.0.2.RELEASE-sources.jar
spring-oxm-5.0.2.RELEASE.jar
spring-test-5.0.2.RELEASE-javadoc.jar
spring-test-5.0.2.RELEASE-sources.jar
spring-test-5.0.2.RELEASE.jar
spring-tx-5.0.2.RELEASE-javadoc.jar
spring-tx-5.0.2.RELEASE-sources.jar
spring-tx-5.0.2.RELEASE.jar
spring-web-5.0.2.RELEASE-javadoc.jar
spring-web-5.0.2.RELEASE-sources.jar
spring-web-5.0.2.RELEASE.jar
spring-webflux-5.0.2.RELEASE-javadoc.jar
spring-webflux-5.0.2.RELEASE-sources.jar
spring-webflux-5.0.2.RELEASE.jar
spring-webmvc-5.0.2.RELEASE-javadoc.jar
spring-webmvc-5.0.2.RELEASE-sources.jar
spring-webmvc-5.0.2.RELEASE.jar
spring-websocket-5.0.2.RELEASE-javadoc.jar
spring-websocket-5.0.2.RELEASE-sources.jar
spring-websocket-5.0.2.RELEASE.jar

当我尝试点击 http://localhost:8080/HelloWorld/data/persons 时它给出了这个错误HTTP 状态 406 – Not Acceptable

类型状态报告

描述 根据请求中收到的主动协商 header 字段,目标资源没有用户代理可以接受的当前表示,并且服务器不愿意提供默认表示。Apache Tomcat/8.5.24

请尝试解决。

最佳答案

感谢您在我添加 jackson-all-1.0.9 并将对象转换为字符串时解决了这个问题。

关于java - 运行 Spring WebApp 时代码状态 406,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48252313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com