我是Java和JSP的新手。 目前正在使用JSP和Servlet处理Auth进程。
让我们说我正在编写登录过程。
在我看来,我认为有两种方法可以做到。
1)Controller将请求对象从客户端转发到DAO或Model类
2)Controller接收请求并将数据(如ID,PWD)作为Java bean的一种形式传输到DAO或Model类。
我已经完成了这两件事,并且在功能上都很好。
所以我不知道什么是更好的编码方式。
这让我想到了另一件事。
如果我只是将来自客户端的请求转发给登录过程以及其他整个过程,是否有任何缺点?
答案 0 :(得分:0)
理想情况下,您不应将请求对象传递给Controller之外的任何图层。让请求对象在Controller本身中,并使用POJO或DTO对象从Controller中跨层移动数据。您的代码可能有效,但这不是“方式”。去做吧。你会理解&了解为什么在您的应用程序变大时,模式很重要。它让生活更轻松。避免所有的混乱。并使调试和维护更容易。
关于 RequestDispatcher
RequestDispatcher 用于将请求转发给JSP,以呈现您可能需要的数据~balance:0
transaction id :undefined
Error: rlp: too few elements for types.txdata
at Object.InvalidResponse (/Users/guo/wallet/linkeye-light-wallet/node_modules/web3/lib/web3/errors.js:38:16)
at /Users/guo/wallet/linkeye-light-wallet/node_modules/web3/lib/web3/requestmanager.js:86:36
at XMLHttpRequest.request.onreadystatechange (/Users/guo/wallet/linkeye-light-wallet/node_modules/web3/lib/web3/httpprovider.js:128:7)
at XMLHttpRequestEventTarget.dispatchEvent (/Users/guo/wallet/linkeye-light-wallet/node_modules/xhr2/lib/xhr2.js:64:18)
at XMLHttpRequest._setReadyState (/Users/guo/wallet/linkeye-light-wallet/node_modules/xhr2/lib/xhr2.js:354:12)
at XMLHttpRequest._onHttpResponseEnd (/Users/guo/wallet/linkeye-light-wallet/node_modules/xhr2/lib/xhr2.js:509:12)
at IncomingMessage.<anonymous> (/Users/guo/wallet/linkeye-light-wallet/node_modules/xhr2/lib/xhr2.js:469:24)
at IncomingMessage.emit (events.js:187:15)
at endReadableNT (_stream_readable.js:1086:12)
at process._tickCallback (internal/process/next_tick.js:63:19)
以及request parameters
(示例:从DB中提取的员工名单)。您实际上是将请求对象转发到JSP。在这种情况下,您的请求对象仍在应用程序的表示层中移动。实际上,稍后您的JSP将被容器转换为Servlet(Controller)。这完全没问题,这两条线路在一起:
request attributes
除了包含JSP和&amp ;;控制器。