Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp Java前端控制器_Jsp_Servlets_Jakarta Ee_Front Controller - Fatal编程技术网

Jsp Java前端控制器

Jsp Java前端控制器,jsp,servlets,jakarta-ee,front-controller,Jsp,Servlets,Jakarta Ee,Front Controller,我正在考虑在我的J2EE应用程序中实现前端控制器。你能推荐一些链接(带有源代码示例)和遵循的标准吗 最好的祝愿web上充满了成熟的java web框架。我看不出有什么理由创建一个新的,只有两个例外:1。您有一些非常不标准的环境/流程,需要一些非常非常特定于您的需求的东西。2.您只需要通过创建框架的练习来了解httpservlet开发的细节 JSR154定义了servlet规范。在这里找到它: Spring是当前流行的框架之一,也是适合我的框架。Struts是最早流行的框架之一,它的受欢迎程度开始

我正在考虑在我的J2EE应用程序中实现前端控制器。你能推荐一些链接(带有源代码示例)和遵循的标准吗


最好的祝愿

web上充满了成熟的java web框架。我看不出有什么理由创建一个新的,只有两个例外:1。您有一些非常不标准的环境/流程,需要一些非常非常特定于您的需求的东西。2.您只需要通过创建框架的练习来了解httpservlet开发的细节

JSR154定义了servlet规范。在这里找到它:


Spring是当前流行的框架之一,也是适合我的框架。Struts是最早流行的框架之一,它的受欢迎程度开始下降。在

上找到一个好的框架列表以及讨论。首先,创建一个Servlet,它监听特定的
url模式
,例如
/pages/*
。实现
service()
方法来查找与请求方法(
GET
POST
等)和pathinfo(servlet的
URL模式之后的URL部分)关联的操作

基本示例:

protected void service(HttpServletRequest request, HttpServletResponse response) 
  throws ServletException, IOException {
  View view = new View(request, response);
  Action action = ActionFactory.getAction(request);
  action.execute(view);
  view.navigate();
}
操作
界面应表示一个工作单元。您可以实现它来执行必要的业务逻辑:

public interface Action {
  void execute(View view);
}
ActionFactory
应该以
Map
的形式维护实现
Action
的类,其中
字符串
键表示请求方法和路径信息的组合较少或较多。然后,您可以获得一个
操作
,如下所示:

public static Action getAction(HttpServletRequest request) {
  return actions.get(request.getMethod() + request.getPathInfo());
}
视图
应该表示
操作
可以处理的请求范围的上下文。在
navigate()
中,您可以将请求转发到JSP进行显示:

public void navigate() {
  String path = "/WEB-INF" + request.getPathInfo() + ".jsp";
  request.getRequestDispatcher(path).forward(request, response);
}
这应该可以让您开始了(注意,我将所有明显的检查(如空指针)都放在一边,以减少示例的混乱,这取决于您自己)


然而,在整个过程中还有更多需要考虑的因素,比如验证、转换、事件处理、输入值映射、本地化、依赖注入等等。这是所有相当多的工作。更体面的MVC框架考虑到了这一点,比如、、等等。如果您从未做过任何一项,那么我强烈建议您在家庭种植之前做一项,否则您将最终浪费时间。

Spring MVC框架如何?三年多以来,J2EE被JavaEE所取代。让自己保持更新。是的,我知道,但我通常会这么做。。。无论如何,谢谢。当我阅读这些关于SpringMVC的文档时,它总是说Servlet引擎是Tomcat。如果我的servlet引擎是Glassfish,会有什么不同吗?glassfish读过web.xml的内容吗?@Harry:Spring有点反太阳。@Harry:我不是说Spring对GF不起作用。它也可以正常工作。@如果您用一个
action.execute()
的例子来扩展您的答案,BalusC会很好,在这个例子中,您可以解释控制器如何通过
request.setAttribute()
将数据/帮助程序传递给视图。我认为这是一个需要展示的重要概念。@yegor:这里有一个更详细的答案:但这并没有将请求/响应抽象到facade类中。但在这一点上,你可以让它授权。另请参见链接答案底部对
上下文的描述。上面答案中的例子有点简单:)