2

私は人生のほとんどを PHP 開発者として経験した後、JSP に手を出しています。私はそのままの Java に非常に慣れているので、選択した MVC フレームワークとして Struts を知り始めました。

標準の HTML の代わりに Struts の taglib を使用する理由がよくわかりません。

<s:textfield id="username" />

また

<input type="text" id="username" name="username" />

概念的な違いは何ですか?HTML ではなく taglib を使用する必要があるのはなぜですか? Struts の世界と JSP コミュニティ全体で推奨される方法はありますか?

4

2 に答える 2

0

pure HTML ;でサーバー データにアクセスする方法はありません。TagLibrariesinside aの代替JSPはではなくHTML古い (そして悪い) Scriptlets です。

最後にすべてが に変換されHTMLますが、ビジネス データを処理できるようにするために中間層が必要です。

でサーバー側の値をどのように読み取ることができますHTMLか?

簡単に言えば:

かつては でServlet、そのPrintWriterは output にHTML:

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {

    String myServerSideValue = "StackOverflow";

    response.setContentType("text/html");
    PrintWriter writer = response.getWriter();        
    writer.println("<html>");
    writer.println("<head>");
    writer.println("<title>Wait, what... a Servlet in 2013?!</title>");
    writer.println("</head>");
    writer.println("<body>");
    writer.println("<span>Hello " + myServerSideValue + "</span>");
    writer.println("</body>");
    writer.println("</html>");
}

明らかに悪夢であり、賢い人がJSPs とScriptletsを発明するようになりました。

<html>
   <head>
      <title>Wait, what... Scriptlets in 2013?!</title>
   </head>
   <body>
      <span>Hello <%= myServerSideValue %> </span>
   </body>
</html>

次に、次TagLibのようなものJSTLが出てきました:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
   <head>
      <title>you <i>may</i> still needs JSTL with, for example, Spring MVC</title>
   </head>
   <body>
      <span>Hello <c:out value="myServerSideValue" /> </span>
   </body>
</html>

そしてついに私たちにWebWork / StrutsもたらされましたOGNL

<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
   <head>
      <title>you still needs JSTL with, for example, Spring MVC</title>
   </head>
   <body>
      <span>Hello <s:property value="myServerSideValue" /> </span>
   </body>
</html>

OGNL内部タグの使用Struts2は に似ていますがJSTLより強力で、いくつかの方法 ( 、など)で完全に統合されています。Struts2ValidationTheming

この例は単純すぎて、なぜinsteadまたは otherをStruts2 Tags使用する必要があるのか​​ を理解できないかもしれませんが、より複雑な現実世界のシナリオになると、この優れたツールの使用法を理解し、最大限に活用できるようになるでしょう。ScriptletsTagLibs

于 2013-04-30T14:00:01.393 に答える