java - 如何用Java实现前端 Controller ?

标签 java servlets jakarta-ee front-controller

出于学习目的,我正在使用 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/

相关文章:

java - 无法在 Windows 7 下使用 ProcessBuilder 在 Java 中执行 javac 或其他命令行应用程序

java - 如何在java循环外的while循环中使用变量?

java - 没有得到正确的温度转换输出

java - 如何将可下载文件放入 HttpServletResponse?

java - 将 weblogic-application.xml 放在我的 Maven 2 项目中的什么位置?

java - Jodd DbOomQuery 提示与集合

java - 使用 maven-archetype-webapp 创建的项目未找到 servlet

java - 简单的JSP表达式语言代码将无法工作

java - hibernate删除操作优化

java - 用于模拟的示例Java Web应用程序(包括数据库脚本等)