我之前从未使用过Tomcat,但我最近继承了一个JSP项目,现在我需要让它运行起来.我已经设法在Eclipse中本地安装Tomcat 8.0,一切正常.我还在Ubuntu VPS上安装了Tomcat 8.0.该应用程序运行正常,除了它处理URL的一个小问题.
客户端应用程序在参数中生成带有未转义方形和大括号的URL,如下所示:
GET /saveItems.json?items=[{%22json%22:%22here%22}]
Run Code Online (Sandbox Code Playgroud)
尽管我想改变客户端应用程序,但我不能.我只需要让这个后端运行.
我的应用程序的本地副本处理这个罚款.但是,在服务器上,我收到此错误:
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
at org.apache.coyote.http11.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:286)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1504)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1460)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Run Code Online (Sandbox Code Playgroud)
我一直在寻找可能影响这个的设置,没有任何运气.我在这里错过了什么?
我有四个猫鼬模型SoleTrader,Partnership、Company和Trust。它们足够不同,我无法将它们全部合并到一个模式中,但又足够相似,以至于我经常需要同时查询或更改所有 4 种类型,而很少关心它们是哪种类型。
有没有办法做到这一点——可能是将所有四种类型放在一个集合中——而不必每次都进行四次数据库调用?
我有一个可能已经或可能尚未结束的流。如果它已经结束,我不想永远坐在那里等待end事件。我如何检查?
假设我有一组用户名和电子邮件地址。
{ name: 'John Doe', email: 'john@doe.com', level: 5 }
{ name: 'Fred Foo', email: 'fred@foo.com', level: 2 }
{ name: 'Jo Green', email: 'jo@green.com', level: 5 }
{ name: 'Paul Bar', email: 'paul@bar.com', level: 3 }
Run Code Online (Sandbox Code Playgroud)
我想查询这个集合,选择所有用户的名字和级别。在猫鼬,我可以这样做:
User
.find()
.select('name level')
.exec(callback)
Run Code Online (Sandbox Code Playgroud)
这会给我以下内容:
{ name: 'John Doe', level: 5 }
{ name: 'Fred Foo', level: 2 }
{ name: 'Jo Green', level: 5 }
{ name: 'Paul Bar', level: 3 }
Run Code Online (Sandbox Code Playgroud)
但是如果用户的级别在 4 以上,我也想获取他们的电子邮件地址。这会给我以下内容:
{ name: 'John Doe', email: …Run Code Online (Sandbox Code Playgroud)