在过去的几年中,我已经掌握了Python,其中有许多简单,最小框架的选择,这些框架允许我轻松地建立网站或服务(例如web.py)。我正在寻找类似Java的东西。
现在使用Java提供简单服务的最简单,最不移动的部分是什么?我正在寻找一些简单的东西:
如果框架与Jython配合良好,则可获得奖励。
[更新]感谢您的回复,其中一些看起来非常有趣。但是,我没有看到这些中的url调度功能。我正在寻找类似于Django的url.py系统的东西,它看起来像:
urlpatterns = patterns('',
(r'^articles/2003/$', 'news.views.special_case_2003'),
(r'^articles/(\d{4})/$', 'news.views.year_archive'),
(r'^articles/(\d{4})/(\d{2})/$', 'news.views.month_archive'),
(r'^articles/(\d{4})/(\d{2})/(\d+)/$', 'news.views.article_detail'),
)
指定url正则表达式以及处理它的处理程序。
答案 0 :(得分:3)
我喜欢简单框架中的Simple HTTP服务器。它提供a nice Tutorial关于如何开始。
答案 1 :(得分:3)
有几种选择:
所有这些框架都带有内置服务器。
修改
jax-rs使用url模板有类似的方法:
@Path("/users/{username}")
public class UserResource {
@GET
@Produces("text/xml")
public String getUser(@PathParam("username") String userName) {
}
}
然后将处理程序放在Application对象中:
public class MyApplicaton extends Application {
public Set<Class> getClasses() {
Set<Class> s = new HashSet<Class>();
s.add(UserResource.class);
return s;
}
}
JAX-RS的另一个例子:
@GET
@Produces("application/json")
@Path("/network/{id: [0-9]+}/{nid}")
public User getUserByNID(@PathParam("id") int id, @PathParam("nid") String nid) {
}
编辑2
Restlet在您的Application对象中支持像Django这样的集中式配置:
// Attach the handlers to the root router
router.attach("/users/{user}", account);
router.attach("/users/{user}/orders", orders);
router.attach("/users/{user}/orders/{order}", order);
答案 2 :(得分:1)
Servlets可能是最佳选择。要做非常简单的事情,你只需要覆盖一个类的一个方法。当然,更复杂的东西是可能的,但是你可以通过一些工作做很多事情。
调查Tomcat或Jetty - 两者都是开源的,并得到很好的支持。
public class HelloWorldServlet extends HttpServlet {
public void doGet( HttpServletRequest request, HttpServletResponse response )
throws ServletException, IOException
{
response.setContentType( "text/plain" );
PrintWriter out = response.getWriter();
out.print( "hello world!" );
}
}
答案 3 :(得分:1)
注意:这是一般性讨论而不是回答。
我有类似的问题来自Python 10年以上,并且正在潜入Java中。我认为我正在学习的一件事是Python的“简单”因素与Java的非常不同。 Python充斥着高级框架 - 比如web.py,Java似乎要低得多。在过去的几个月里,我已经说过“用Python做什么简单的Python方法”到“如何用Java构建这个东西”。微妙,但似乎把我的想法从以Python为中心的观点转移到更加以Java为中心的观点。
这样做之后,我意识到站在一个网站或服务对于一个Java局外人来说并不简单,那是因为我需要(重新)了解大量信息。它不像python那么简单。您仍然需要一个Web服务器,您需要构建一个“容器”来删除您的Java代码,然后您需要Java代码(我错了,每个人?有更简单的方法吗?)。
对我来说,与Scala和Lift一起工作有帮助 - 甚至不是那些,但是这一个thread by David Pollack。这是我构建Jetty服务器所需要的。接下来,按照指示(有点模糊,但可能对你来说足够好)然后你有一个servlet容器准备好接受端口上的传入流量(或者在他的情况下是3个端口)。然后你可以使用HTTPServlet编写一些Java代码,或者继续使用其他东西。
同样,这正是我为克服这个障碍所做的,但我仍然不是Java大师。祝你好运。
答案 4 :(得分:0)
答案 5 :(得分:0)
Jetty是一个非常好的嵌入式http服务器 - 即使不可能像你描述的那样进行映射,也应该很容易实现你的目标。