- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在以下问题上被困了几个小时:
我目睹了以下行为:
所以我的问题是:触发这些行为的两个 POST 请求之间有什么区别?
这是输出(我们首先可以看到jetty发出的POST,然后是从导航器获取的html表单,最后是从导航器的POST
11:26:33.140 [main] INFO org.sample.Sample - launching server on port 8082
2015-07-29 11:26:33.203:INFO::main: Logging initialized @359ms
2015-07-29 11:26:33.375:INFO:oejs.Server:Thread-0: jetty-9.2.7.v20150116
2015-07-29 11:26:33.437:INFO:oejsh.ContextHandler:Thread-0: Started o.e.j.s.ServletContextHandler@24cca73f{/,null,AVAILABLE}
2015-07-29 11:26:33.437:INFO:oejs.ServerConnector:Thread-0: Started ServerConnector@746ab811{HTTP/1.1}{0.0.0.0:8082}
2015-07-29 11:26:33.437:INFO:oejs.Server:Thread-0: Started @609ms
11:26:35.312 [main] INFO org.sample.Sample - now posting
2015-07-29 11:26:35.687:INFO:/:qtp115342900-21: org.restlet.ext.servlet.ServerServlet-27a1f635: [Restlet] ServerServlet: component class is null
2015-07-29 11:26:35.734:INFO:/:qtp115342900-21: org.restlet.ext.servlet.ServerServlet-27a1f635: [Restlet] Attaching application: org.sample.MyApplication@6e47c1bf to URI:
11:26:35.828 [qtp115342900-21] INFO org.sample.Sample - proceeding POST
11:26:35.828 [qtp115342900-21] WARN org.sample.Sample - entity is null !
11:26:35.828 [qtp115342900-21] INFO org.sample.Sample - param p : toto
juil. 29, 2015 11:26:35 AM org.restlet.engine.log.LogFilter afterHandle
INFO: 2015-07-29 11:26:35 127.0.0.1 - 127.0.0.1 8082 POST /model p=toto 204 0 0 63 http://localhost:8082 Jetty/9.2.7.v20150116 -
juil. 29, 2015 11:26:39 AM org.restlet.engine.log.LogFilter afterHandle
INFO: 2015-07-29 11:26:39 127.0.0.1 - 127.0.0.1 8082 GET /model - 200 172 0 0 http://localhost:8082 Mozilla/5.0 (Windows NT 5.2; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0 -
11:26:43.515 [qtp115342900-22] INFO org.sample.Sample - proceeding POST
11:26:43.515 [qtp115342900-22] INFO org.sample.Sample - entity exists : [application/x-www-form-urlencoded,UTF-8]
11:26:43.515 [qtp115342900-22] INFO org.sample.Sample - param p : toto
juil. 29, 2015 11:26:43 AM org.restlet.engine.log.LogFilter afterHandle
INFO: 2015-07-29 11:26:43 127.0.0.1 - 127.0.0.1 8082 POST /model - 204 0 6 0 http://localhost:8082 Mozilla/5.0 (Windows NT 5.2; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0 http://localhost:8082/model
这是我的项目:pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.sample</groupId>
<artifactId>simple</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>Jetty Server with Restlet Sample</name>
<properties>
<junit.version>4.12</junit.version>
<slf4j.version>1.7.7</slf4j.version>
<logback.version>1.1.2</logback.version>
<jdk.version>1.7</jdk.version>
<jetty.version>9.2.7.v20150116</jetty.version>
<restlet.version>2.2.2</restlet.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<!-- <finalName>atgm</finalName> -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>org.restlet.jee</groupId>
<artifactId>org.restlet</artifactId>
<version>${restlet.version}</version>
</dependency>
<dependency>
<groupId>org.restlet.jee</groupId>
<artifactId>org.restlet.ext.spring</artifactId>
<version>${restlet.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-client</artifactId>
<version>${jetty.version}</version>
</dependency>
</dependencies>
src/main/java/org/sample/Sample.java
package org.sample;
import org.eclipse.jetty.client.HttpClient;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.DefaultServlet;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.restlet.ext.servlet.ServerServlet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Sample {
private static final Logger LOGGER = LoggerFactory.getLogger(Sample.class);
private static final int PORT=8082;
private static Server server;
public static void main (String []args) throws Exception {
LOGGER.info("launching server on port "+PORT);
new Thread() {
@Override
public void run() {
try {
// now create the web server
server = new Server(PORT);
final ServletContextHandler servletContext = new ServletContextHandler(ServletContextHandler.SESSIONS);
servletContext.setContextPath("/");
servletContext.setInitParameter("org.restlet.application", MyApplication.class.getName());
servletContext.addServlet(ServerServlet.class, "/*");
servletContext.addServlet(DefaultServlet.class, "/");
server.setHandler(servletContext);
server.start();
server.join();
} catch (Exception ex) {
LOGGER.info("Failed to start server", ex);
}
}
}.start();
HttpClient client = new HttpClient();
client.start();
// waiting for the server to be online
final int lapse = 2000;
Thread.sleep(lapse);
LOGGER.info("now posting");
client.POST("http://localhost:"+PORT+"/model")
.param("p", "toto")
.send();
}
}
src/main/java/org/sample/MyApplication.java
package org.sample;
import org.restlet.Application;
import org.restlet.Context;
import org.restlet.Restlet;
import org.restlet.routing.Router;
public class MyApplication extends Application {
public MyApplication () {
super();
}
public MyApplication (Context parentContext) {
super(parentContext);
}
@Override
public Restlet createInboundRoot() {
Router router = new Router(getContext());
router.attach("/model", MyResource.class);
return router;
}
}
src/main/java/org/sample/MyResource.java
package org.sample;
import org.restlet.data.Form;
import org.restlet.representation.Representation;
import org.restlet.resource.Get;
import org.restlet.resource.Post;
import org.restlet.resource.ServerResource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MyResource extends ServerResource {
private static final Logger LOGGER = LoggerFactory.getLogger(Sample.class);
@Post
public Representation acceptItem(Representation entity) throws Exception {
Representation result = null;
LOGGER.info("proceeding POST");
Form form;
if (null != entity) {
LOGGER.info("entity exists : "+entity.toString());
form = new Form(entity);
} else {
LOGGER.warn("entity is null !");
form = getReference().getQueryAsForm();
}
LOGGER.info("param p : "+form.getFirstValue("p"));
return result;
}
@Get("html")
public String represent() {
return "<html>"+
"<head><script src=\"http://code.jquery.com/jquery-1.11.3.min.js\"></script></head>"+
"<body>"+
"<button onclick=\"$.post('model',{p:'toto'});\">POST</button>"+
"</form>"+
"</body>"+
"</html>";
}
}
最佳答案
我不确切知道您如何从浏览器发出 POST 请求,但这里有一些提示:
getQuery()
对应于查询字符串中提供的元素。可能让您烦恼的是这些数据可以以表单的形式显示。事实上,Form
类与表单类似,并不一定与有效负载相对应。因此,如果您使用这样的 URL:http://localhost:8082/model?p=toto
,则参数 p
将出现在查询参数中接收到的表示(类似于getEntity()
)对应于有效负载。如果您使用内容类型 application/x-www-form-urlencoded
,它可以是一个表单,但通常它实际上不是一个表单。在第一种情况下,您可以从表示/实体创建一个 Form
实例。因此,如果您使用这样的请求,您的表示/实体中将有一个名为 p
的条目:
POST /model
Content-Type:application/x-www-form-urlencoded
p=toto
如果您想使用 Jetty 客户端创建此类请求,您需要像这样更新代码:
Field p = new Field("p", "toto");
Fields fields = new Fields();
fields.put(p);
client.POST("http://localhost:"+PORT+"/model")
.content(new FormContentProvider(fields))
.send();
希望对你有帮助蒂埃里
关于java - 使用 jetty 客户端发布会在 reSTLet 中给出空表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31696657/
我正在编写一个具有以下签名的 Java 方法。 void Logger(Method method, Object[] args); 如果一个方法(例如 ABC() )调用此方法 Logger,它应该
我是 Java 新手。 我的问题是我的 Java 程序找不到我试图用作的图像文件一个 JButton。 (目前这段代码什么也没做,因为我只是得到了想要的外观第一的)。这是我的主课 代码: packag
好的,今天我在接受采访,我已经编写 Java 代码多年了。采访中说“Java 垃圾收集是一个棘手的问题,我有几个 friend 一直在努力弄清楚。你在这方面做得怎么样?”。她是想骗我吗?还是我的一生都
我的 friend 给了我一个谜语让我解开。它是这样的: There are 100 people. Each one of them, in his turn, does the following
如果我将使用 Java 5 代码的应用程序编译成字节码,生成的 .class 文件是否能够在 Java 1.4 下运行? 如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Jav
有关于why Java doesn't support unsigned types的问题以及一些关于处理无符号类型的问题。我做了一些搜索,似乎 Scala 也不支持无符号数据类型。限制是Java和S
我只是想知道在一个 java 版本中生成的字节码是否可以在其他 java 版本上运行 最佳答案 通常,字节码无需修改即可在 较新 版本的 Java 上运行。它不会在旧版本上运行,除非您使用特殊参数 (
我有一个关于在命令提示符下执行 java 程序的基本问题。 在某些机器上我们需要指定 -cp 。 (类路径)同时执行java程序 (test为java文件名与.class文件存在于同一目录下) jav
我已经阅读 StackOverflow 有一段时间了,现在我才鼓起勇气提出问题。我今年 20 岁,目前在我的家乡(罗马尼亚克卢日-纳波卡)就读 IT 大学。足以介绍:D。 基本上,我有一家提供簿记应用
我有 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
我已经在 Java 中实现了带有动态类型的简单解释语言。不幸的是我遇到了以下问题。测试时如下代码: def main() { def ks = Map[[1, 2]].keySet()
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有这个 DownloadFile.java 并按预期下载该文件: import java.io.*; import java.net.URL; public class DownloadFile {
我想在 GUI 上添加延迟。我放置了 2 个 for 循环,然后重新绘制了一个标签,但这 2 个 for 循环一个接一个地执行,并且标签被重新绘制到最后一个。 我能做什么? for(int i=0;
我正在对对象 Student 的列表项进行一些测试,但是我更喜欢在 java 类对象中创建硬编码列表,然后从那里提取数据,而不是连接到数据库并在结果集中选择记录。然而,自从我这样做以来已经很长时间了,
我知道对象创建分为三个部分: 声明 实例化 初始化 classA{} classB extends classA{} classA obj = new classB(1,1); 实例化 它必须使用
我有兴趣使用 GPRS 构建车辆跟踪系统。但是,我有一些问题要问以前做过此操作的人: GPRS 是最好的技术吗?人们意识到任何问题吗? 我计划使用 Java/Java EE - 有更好的技术吗? 如果
我可以通过递归方法反转数组,例如:数组={1,2,3,4,5} 数组结果={5,4,3,2,1}但我的结果是相同的数组,我不知道为什么,请帮助我。 public class Recursion { p
有这样的标准方式吗? 包括 Java源代码-测试代码- Ant 或 Maven联合单元持续集成(可能是巡航控制)ClearCase 版本控制工具部署到应用服务器 最后我希望有一个自动构建和集成环境。
我什至不知道这是否可能,我非常怀疑它是否可能,但如果可以,您能告诉我怎么做吗?我只是想知道如何从打印机打印一些文本。 有什么想法吗? 最佳答案 这里有更简单的事情。 import javax.swin
我是一名优秀的程序员,十分优秀!