出于学习目的,我正在使用 Java servlet 编写一个非常简单的 Web 框架。我之前已经在 PHP 中完成过此操作,它的工作原理是查阅请求 URI,然后实例化适当的类和方法。
这在 PHP 中工作得很好,因为我们可以做类似 $c = new $x; 的事情。 $x->$y;
。然而,我不确定如何将其转换为 Java,或者即使这是一种合适的方法。
到目前为止,我已经尝试过:
Router router = new Router(request.getPathInfo());
String className = router.route(); //returns com.example.controller.Foo
Class c = Class.forName(className);
Object x = c.newInstance();
Foo y = (Foo) x;
y.doSomething();
这对于一些路由来说似乎很好,但似乎扩展性不佳,也不允许从配置文件中获取路由。
我应该如何让它发挥作用?
最佳答案
掌握 Map<String, Action>
中的操作其中String
key 或多或少表示请求方法和请求路径信息的组合。我之前在这里发布过类似的答案:Java Front Controller
您可以静态(硬编码所有操作)或动态(约定优于配置,查找特定包中的类,或扫描整个类路径以查找具有特定注释或实现特定接口(interface)的类)来填充此类映射。
并且坚持使用 Servlet。过滤器不存在。最多使用它来将请求转发到 Controller Servlet。在Servlet中,只需实现 HttpServlet#service()
.
关于java - 如何用Java实现前端 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2235472/