f2e9680431
* Honor parameters order when parsing query and form parameters When parsing the query or form parameters in Request, the values are stored in a MultiMap. This class extends HashMap which does not preserve the order of insertion so a request with parameters "first=1&second=2" might end up in a map where "second" will come first when iterating on the entry set. The order is necessary in some case where the request is signed off the body and/or the query parameters. When the order is not preserved, it is impossible to reconstruct the original request sent, unless using the Request::getInputStream which consumes the stream and makes subsequent calls to Request::getParameters to don't return the form parameters which can be misleading. The same behavior applied to query parameters, by using Request::getQueryString, you get the correct order but Request::getParameters will not. Moreoever, if the application is behind a reverse proxy using Jetty that is proxying using Request::getParameters which consume the request InputStream, it will be completely impossible to reconstruct the original request. * Added a test with parameter merging Co-authored-by: Jacques-Etienne Beaudet <jebeaudet@gmail.com> |
||
---|---|---|
.github | ||
advisories | ||
apache-jsp | ||
apache-jstl | ||
build-resources | ||
demos | ||
documentation | ||
javadoc | ||
jetty-alpn | ||
jetty-annotations | ||
jetty-ant | ||
jetty-bom | ||
jetty-cdi | ||
jetty-client | ||
jetty-deploy | ||
jetty-fcgi | ||
jetty-gcloud | ||
jetty-hazelcast | ||
jetty-home | ||
jetty-http | ||
jetty-http-spi | ||
jetty-http2 | ||
jetty-http3 | ||
jetty-infinispan | ||
jetty-io | ||
jetty-jaas | ||
jetty-jaspi | ||
jetty-jmx | ||
jetty-jndi | ||
jetty-jspc-maven-plugin | ||
jetty-keystore | ||
jetty-maven-plugin | ||
jetty-memcached | ||
jetty-nosql | ||
jetty-openid | ||
jetty-osgi | ||
jetty-p2 | ||
jetty-plus | ||
jetty-proxy | ||
jetty-quic | ||
jetty-quickstart | ||
jetty-rewrite | ||
jetty-runner | ||
jetty-security | ||
jetty-server | ||
jetty-servlet | ||
jetty-servlets | ||
jetty-slf4j-impl | ||
jetty-start | ||
jetty-unixdomain-server | ||
jetty-unixsocket | ||
jetty-util | ||
jetty-util-ajax | ||
jetty-webapp | ||
jetty-websocket | ||
jetty-xml | ||
logos | ||
scripts | ||
tests | ||
.gitattributes | ||
.gitignore | ||
.lgtm.yml | ||
CODE_COVERAGE.md | ||
CONTRIBUTING.md | ||
Jenkinsfile | ||
Jenkinsfile-autobahn | ||
Jmh_Jenkinsfile | ||
KEYS.txt | ||
LICENSE | ||
NOTICE.txt | ||
README.md | ||
SECURITY.md | ||
VERSION.txt | ||
header-template.txt | ||
pom.xml |
README.md
Eclipse Jetty Canonical Repository
This is the canonical repository for the Jetty project, feel free to fork and contribute now!
Submitting a patch or pull request?
Make sure you have an Eclipse Contributor Agreement (ECA) on file.
Project description
Jetty is a lightweight highly scalable java based web server and servlet engine. Our goal is to support web protocols like HTTP, HTTP/2 and WebSocket in a high volume low latency way that provides maximum performance while retaining the ease of use and compatibility with years of servlet development. Jetty is a modern fully async web server that has a long history as a component oriented technology easily embedded into applications while still offering a solid traditional distribution for webapp deployment.
Webapp Example
$ mkdir base && cd base
$ java -jar $JETTY_HOME/start.jar --add-modules=http,deploy
$ cp ~/src/myproj/target/mywebapp.war webapps
$ java -jar $JETTY_HOME/start.jar
Embedded Example
Server server = new Server(port);
ServletContextHandler context = new ServletContextHandler(server, "/");
context.addServlet(MyServlet.class, "/*");
server.start();
Documentation
Project documentation is available on the Jetty Eclipse website.
Building
To build, use:
mvn clean install
Eclipse Jetty will be built in jetty-home/target/jetty-home
.
The first build may take a longer than expected as Maven downloads all the dependencies.
The build tests do a lot of stress testing, and on some machines it is necessary to set the file descriptor limit to greater than 2048 for the tests to all pass successfully.
It is possible to bypass tests by building with mvn clean install -DskipTests
.
Professional Services
Expert advice and production support are available through Webtide.com.