Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.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
Javascript 如何重写使用react返回jsp页面的struts应用程序?_Javascript_Java_Reactjs_Struts2_Templating - Fatal编程技术网

Javascript 如何重写使用react返回jsp页面的struts应用程序?

Javascript 如何重写使用react返回jsp页面的struts应用程序?,javascript,java,reactjs,struts2,templating,Javascript,Java,Reactjs,Struts2,Templating,我有一个使用Struts2用Java编写的web服务,struts controller返回jsp页面,现在我想使用react组件重写前端,最好的启动方式是什么?TLDR,您可以轻松地向您的利益相关者宣布,这将需要几个月/年或更长时间,具体取决于您的应用程序/团队有多大 从web应用程序体系结构的角度来看,这是一个巨大的转变。Struts2+JSP正在后端进行HTML模板制作。所以数据被注入到服务器上的HTML中,HTML也是从服务器返回的格式 另一方面,React是客户端HTML模板库。所以,

我有一个使用Struts2用Java编写的web服务,struts controller返回jsp页面,现在我想使用react组件重写前端,最好的启动方式是什么?

TLDR,您可以轻松地向您的利益相关者宣布,这将需要几个月/年或更长时间,具体取决于您的应用程序/团队有多大

从web应用程序体系结构的角度来看,这是一个巨大的转变。Struts2+JSP正在后端进行HTML模板制作。所以数据被注入到服务器上的HTML中,HTML也是从服务器返回的格式

另一方面,React是客户端HTML模板库。所以,它希望通过AJAX调用和读取数据(JSON或其他格式)与服务器通信,并使用React将数据注入客户端

因此,改变这一点并不容易。您需要将所有JSP数据注入点解耦到服务中,并通过控制器将它们公开为JSON数据(考虑到身份验证机制、输入验证等的变化)。重构之后,您可以开始将JSP模板移动到React(很可能是JSX)中。但在这种情况下,您会意识到您可能需要使用一些UI状态管理(例如Redux)。您还发现,您希望将组件构造成比大多数旧JSP模板更可组合的方式。没有提到您还需要在嵌入到这些JSP中的一些JS上进行移植。也就是说,您可能会彻底删除所有JSP,从头开始创建UI应用程序


在此过程中,您还将发现JS测试、UI构建管道、资产捆绑以及现代UI web开发的更多优点,这些都将增加整体重构。

实现只返回数据的API,然后编写组件来使用相同的数据。是的,这听起来是一个可行的开始方法。关于这一点,还有一个后续问题:您认为在这样的迁移之后,服务器端是否不需要struts层呢?考虑到服务器代码(业务逻辑、DAOs等)是用Java编写的,您建议编写API的框架是什么。一些不需要大量重写的东西,仍然可以给我一种方法来管理我的应用程序,而不需要引入不必要的桥来将所有东西粘合在一起。你忘记了broserify和其他东西的包装部分:DThanks luboskmac,您上面的回答清楚了在这种重构中所涉及的实际工作。