关于J2EE的问题
\u5173\u4e8eJ2EE\u7684\u95ee\u9898\u6838\u5fc3\u662f\u4e00\u7ec4\u89c4\u8303\u4e0e\u6307\u5357\uff0c\u5b9a\u4e49\u4e86\u5f00\u53d1\u4f01\u4e1a\u5e94\u7528\u7cfb\u7edf\u7684\u6807\u51c6\u5e73\u53f0\uff0c\u7531J2EE\u5e94\u7528\u670d\u52a1\u5668\u7684\u4f9b\u5e94\u5546\u6765\u786e\u4fdd\u4e0d\u540cJ2EE\u5e73\u53f0\u4e4b\u95f4\u7684\u517c\u5bb9\u3002
Java 2\u5e73\u53f0\u6709\u4e09\u4e2a\u7248\u672c\uff0c\u6807\u51c6\u7248\u672c\uff08J2SE\uff09\uff0c\u4f01\u4e1a\u7248\u672c\uff08J2EE\uff09\u548c\u5fae\u7248\u672c\uff08J2ME\uff09\u3002
\u8fd9\u91cc\u9996\u5148\u4ecb\u7ecdJ2SE\uff0c\u56e0\u4e3aJ2EE\u662f\u5efa\u7acb\u5728J2SE\uff08Java 2 Platform Standard Edition\uff09\u3002J2SE\u4e3b\u8981\u9002\u7528GUI\u7684\u5ba2\u6237\u7aef\u7a0b\u5e8f\uff0c\u4e5f\u5c31\u662f\u901a\u5e38\u6240\u8bf4\u7684\u684c\u9762\u5e94\u7528\uff0c\u5e76\u4e14\u4e3a\u6211\u4eec\u63d0\u4f9b\u4e86Java\u7f16\u7a0b\u5e38\u7528\u5230\u7684\u6838\u5fc3\u5305\uff1b
J2EE\u7684\u4e3b\u8981\u7ec4\u6210\u90e8\u5206\u6709J2EE\u5e73\u53f0\uff0cJ2EE\u89c4\u8303\uff08Platform Specification\uff09\uff0c\u53c2\u8003\u5b9e\u73b0(Reference Implementation)\uff0c\u517c\u5bb9\u6027\u6d4b\u8bd5\u5957\u4ef6\uff08Compatibility Test Suite\uff09\u548cJ2EE\u84dd\u56fe\uff08J2EE BluePrints\uff09\u3002
J2EE\u5e73\u53f0\u4e3b\u8981\u5c31\u662f\u5229\u7528Java2\u5e73\u53f0\u7684\u6807\u51c6\u7248\u6765\u4e3a\u5f53\u524d\u7684\u4f01\u4e1a\u7ea7\u5e94\u7528\u63d0\u4f9b\u89e3\u51b3\u65b9\u6848\u7684\u8bbe\u8ba1\uff0c\u5f00\u53d1\uff0c\u88c5\u914d\u548c\u90e8\u7f72\uff0c\u5e76\u5b9a\u4e49\u4e86\u4e00\u7ec4\u6838\u5fc3API\u6807\u51c6\u7684\u63a5\u53e3\u3002
J2EE\u89c4\u8303\uff0c\u6709\u76f8\u5e94\u7684\u6280\u672f\u89c4\u8303\u5e76\u5bf9API\u8fdb\u884c\u4e86\u89e3\u91ca\uff1b
\u53c2\u8003\u5b9e\u73b0\u5219\u662f\u5173\u4e8eJ2EE\u5e73\u53f0\u8bed\u6cd5\u7684\u6b63\u786e\u8303\u4f8b\uff1b
\u517c\u5bb9\u6027\u6d4b\u8bd5\u5957\u4ef6\u53ef\u4ee5\u4f7f\u4e0d\u540cJ2EE\u7248\u672c\u7684\u4ea7\u54c1\u53ef\u4ee5\u8fd0\u884c\u7684\u7a0b\u5e8f\uff1b
J2EE\u84dd\u56fe\u5219\u662f\u63d0\u4f9b\u4e86\u57fa\u4e8eJ2EE\u591a\u5c42\u5e94\u7528\u7684\u5b9e\u4f8b\u4e0e\u6587\u6863\uff0c\u4e3b\u8981\u53c2\u8003PetStore\uff0cAdventure Builder\u3002
J2EE\u7684\u53d1\u5c55
1997\u5e74Servlet\u6280\u672f\u7684\u4ea7\u751f\u4ee5\u53ca\u7d27\u63a5\u7740JSP\u7684\u4ea7\u751f\uff0c\u4e3aJava\u5bf9\u6297PHP\uff0cASP\u7b49\u7b49\u670d\u52a1\u5668\u7aef\u8bed\u8a00\u5e26\u6765\u4e86\u7b79\u7801\u30021998\u5e74\uff0cSun\u53d1\u5e03\u4e86EJB1.0\u6807\u51c6\uff0c\u81f3\u6b64J2EE\u5e73\u53f0\u7684\u4e09\u4e2a\u6838\u5fc3\u6280\u672f\u90fd\u5df2\u7ecf\u51fa\u73b0\u3002\u4e8e\u662f\uff0c1999\u5e74\uff0cSun\u6b63\u5f0f\u53d1\u5e03\u4e86J2EE\u7684\u7b2c\u4e00\u4e2a\u7248\u672c\u3002\u5e76\u4e0e1999\u5e74\u5e95\u53d1\u5e03\u4e86J2EE1.2\uff0c\u57282001\u5e74\u53d1\u5e03\u4e86J2EE1.3\uff0c\u5728\u524d\u5e74\u5e74\u5e95\u4e5f\u5c31\u662f2003\u5e74\u53d1\u5e03\u4e86J2EE1.4\u3002
J2EE1.3
\u4ee5\u4e0b\u5c31\u662fJ2EE1.3\u7684\u67b6\u6784\u56fe\uff0c\u5176\u4e2d\u4e3b\u8981\u5305\u542b\u4e86Applet\u5bb9\u5668\uff0cApplication Client\u5bb9\u5668\uff0cWeb\u5bb9\u5668\u548cEJB\u5bb9\u5668\uff0c\u5e76\u4e14\u5305\u542b\u4e86Web Component\uff0cEJB Component\uff0cApplication Client Component\uff0c\u4ee5JMS\uff0cJAAS\uff0cJAXP\uff0cJDBC\uff0cJAF\uff0cJavaMail\uff0cJTA\u7b49\u7b49\u6280\u672f\u505a\u4e3a\u57fa\u7840\u3002
1.3\u4e2d\u5f15\u5165\u4e86\u51e0\u4e2a\u503c\u5f97\u6ce8\u610f\u7684\u529f\u80fd\uff1aJava\u6d88\u606f\u670d\u52a1\uff08\u5b9a\u4e49\u4e86JMS\u7684\u4e00\u7ec4API\uff09\uff0cJ2EE\u8fde\u63a5\u5668\u6280\u672f\uff08\u5b9a\u4e49\u4e86\u6269\u5c55J2EE\u670d\u52a1\u5230\u975eJ2EE\u5e94\u7528\u7a0b\u5e8f\u7684\u6807\u51c6\uff09\uff0cXML\u89e3\u6790\u5668\u7684\u4e00\u7ec4Java API\uff0cServlet2.3\uff0cJSP1.2\u4e5f\u90fd\u8fdb\u884c\u4e86\u6027\u80fd\u6269\u5c55\u4e0e\u4f18\u5316\uff0c\u5168\u65b0\u7684CMP\u7ec4\u4ef6\u6a21\u578b\u548cMDB\uff08\u6d88\u606fBean\uff09\u3002
J2EE1.4
J2EE1.4\u5927\u4f53\u4e0a\u7684\u6846\u67b6\u548cJ2EE1.3\u662f\u4e00\u81f4\u7684\uff0c1.4\u589e\u52a0\u4e86\u5bf9Web\u670d\u52a1\u7684\u652f\u6301\uff0c\u4e3b\u8981\u662fWeb Service\uff0cJAX-RPC\uff0cSAAJ\uff0cJAXR\uff0c\u8fd8\u5bf9EJB\u7684\u6d88\u606f\u4f20\u9012\u673a\u5236\u8fdb\u884c\u4e86\u5b8c\u5584\uff08EJB2.1\uff09,\u90e8\u7f72\u4e0e\u7ba1\u7406\u5de5\u5177\u7684\u589e\u5f3a\uff08JMX\uff09\uff0c\u4ee5\u53ca\u65b0\u7248\u672c\u7684Servlet2.4\u548cJSP2.0\u4f7f\u5f97Web\u5e94\u7528\u66f4\u52a0\u5bb9\u6613\u3002
J2EE\u57fa\u7840\u4e0e\u5173\u952e\u6280\u672f
J2EE\u76f8\u5173\u7684\u51e0\u4e2a\u6982\u5ff5
J2EE\u6846\u67b6\u662f\u4e24\u4e2a\u91cd\u8981\u7684\u6982\u5ff5\u4e4b\u4e0a\uff0c\u7ec4\u4ef6\u4e0e\u5bb9\u5668\u3002
\u7ec4\u4ef6\u662f\u4e00\u4e2a\u53ef\u4ee5\u91cd\u590d\u5229\u7528\u7684\u5355\u5143\uff0c\u8fd9\u91cc\u7684\u7ec4\u4ef6\u4e0d\u540c\u4e0e\u4e00\u822c\uff08\u6211\u4eec\u5e38\u8bf4\u7684\uff09\u7ec4\u4ef6\uff0c\u8fd9\u662fJ2EE\u7ec4\u4ef6\uff0c\u4e5f\u5c31\u662f\u8bf4\u7ec4\u4ef6\u5c5e\u4e8eWeb\u7ec4\u4ef6\uff0cEJB\u7ec4\u4ef6\uff0c\u5ba2\u6237\u7aef\u7ec4\u4ef6\uff0c\u6216\u8005\u662f\u5e94\u7528\u7ec4\u4ef6\u5176\u4e2d\u7684\u4e00\u79cd\u3002\u6bcf\u4e2a\u7ec4\u4ef6\u90fd\u9700\u8981\u88ab\u6253\u5305\uff0c\u5206\u522b\u4f1a\u6253\u5305\u6210.war\uff0c.jar\uff0c.jar\uff0c.ear\uff0c\u6bcf\u4e2a\u7ec4\u4ef6\u7531\u7279\u5b9a\u683c\u5f0f\u7684xml\u63cf\u8ff0\u7b26\u6587\u4ef6\u8fdb\u884c\u63cf\u8ff0\uff0c\u800c\u4e14\u670d\u52a1\u5668\u7aef\u7684\u7ec4\u4ef6\u90fd\u9700\u8981\u88ab\u90e8\u7f72\u5230\u5e94\u7528\u670d\u52a1\u5668\u4e0a\u9762\u624d\u80fd\u591f\u88ab\u4f7f\u7528\u3002
\u5bb9\u5668\u5728\u5e94\u7528\u670d\u52a1\u5668\u4e2d\u5c31\u626e\u6f14\u4e86\u4e2d\u95f4\u4ef6\u7684\u89d2\u8272\uff0c
\u6bd4\u5982\u8bf4Web\u5bb9\u5668\u5c31\u662f\u4e3aJSP\uff0cServlet\u63d0\u4f9b\u4e00\u4e2a\u73af\u5883\uff0c\u4f7f\u4e4b\u4e0d\u7528\u5173\u6ce8\u7cfb\u7edf\u95ee\u9898\uff1b
EJB\u5bb9\u5668\u5219\u662f\u4e3aEJB\u7ec4\u4ef6\u63d0\u4f9b\u5404\u79cd\u7cfb\u7edf\u7ea7\u522b\u7684\u670d\u52a1\uff0c\u6bd4\u5982\u4e8b\u52a1\u7ba1\u7406\uff0c\u5b89\u5168\u7ba1\u7406\uff0c\u5e76\u4e14\u5bf9EJB\u7ec4\u4ef6\u8fdb\u884c\u9ad8\u6548\u7684\u7ba1\u7406\u3002
J2EE\u57fa\u7840
Java
Java\u8bed\u8a00\u662fJ2EE\u7684\u57fa\u7840\uff0c\u6574\u4e2a\u4f53\u7cfb\u67b6\u6784\u90fd\u662f\u901a\u8fc7Java\u8bed\u8a00\u6765\u63cf\u8ff0\u7684\uff0c\u800c\u4e14\u6240\u6709\u7684J2EE\u5e94\u7528\u670d\u52a1\u5668\u90fd\u662f\u901a\u8fc7Java\u8bed\u8a00\u6765\u5b9e\u73b0\u7684\u3002\u6240\u4ee5\u5728J2EE\u7684\u4ea7\u54c1\u4e2dJava\u65e0\u6240\u4e0d\u5728\u3002
Http\uff08Hyper Text Transfer Protocol\uff09\uff0cSSL3.0\uff08Secure Socket Layer\uff09
Http\uff08\u8d85\u6587\u672c\u4f20\u8f93\u534f\u8bae\uff09\u7528\u4e8e\u5728Web\u670d\u52a1\u5668\u4e0e\u672c\u5730\u6d4f\u89c8\u5668\u4e4b\u95f4\u8fdb\u884c\u6587\u672c\u7684\u4f20\u8f93\uff0c\u4fdd\u8bc1\u6587\u672c\u4f20\u8f93\u7684\u6b63\u786e\u6027\uff0c\u4f46\u662f\u7531\u4e8e\u5b89\u5168\u6027\u65b9\u9762\u7684\u8003\u8651\uff0c\u5728J2EE\u7684\u5e94\u7528\u4e2d\u4f7f\u7528\u4e86SSL\u534f\u8bae\u4e0eHttp\u534f\u8bae\u7684\u7ed3\u5408\uff0cSSL\uff08\u5b89\u5168\u5957\u63a5\u5c42\u534f\u8bae\uff09\u4e3b\u8981\u662f\u901a\u8fc7X.509\u6570\u5b57\u8bc1\u4e66\u6280\u672f\u4fdd\u62a4\u4fe1\u606f\u4f20\u8f93\u7684\u673a\u5bc6\u6027\u548c\u5b8c\u6574\u6027\uff0c\u9002\u7528\u4e8eWeb Server\u7684\u70b9\u5230\u70b9\u65b9\u5f0f\u4f20\u8f93\u3002
\u4eceJ2EE\u7684\u4f53\u7cfb\u67b6\u6784\u56fe\u4e2d\u53ef\u770b\u51fa\u5ba2\u6237\u7aef\uff0c\u65e0\u8bba\u662fApplet\u5bb9\u5668\u8fd8\u662fClient Application\u5bb9\u5668\u90fd\u662f\u901a\u8fc7Http\uff0cSSL\u534f\u8bae\u7ecf\u7531\u7f51\u7edc\u6765\u4e0eWeb\u5bb9\u5668\uff0cEJB\u5bb9\u5668\u4e2d\u7684\u7ec4\u4ef6\u8fdb\u884c\u4ea4\u4e92\u7684\u3002\u82e5\u8003\u8651\u591a\u53f0\u5e94\u7528\u670d\u52a1\u5668\u7684\u96c6\u7fa4\uff0c\u90a3\u4e48Web\u5bb9\u5668\uff0cEJB\u5bb9\u5668\u4e4b\u95f4\u4e5f\u5c06\u4f1a\u901a\u8fc7Http\uff0cSSL\u534f\u8bae\u8fdb\u884c\u4ea4\u4e92\u3002
Xml\uff08eXtensible Marker Language\uff09
XML\u662f\u4e00\u79cd\u53ef\u6269\u5c55\u7684\u6807\u8bb0\u8bed\u8a00\uff0c\u5176\u4e3b\u8981\u7684\u7528\u9014\u4f53\u73b0\u5728\u5176\u826f\u597d\u7684\u6570\u636e\u8868\u793a\u80fd\u529b\u548c\u6570\u636e\u4f20\u8f93\u80fd\u529b\uff0c\u901a\u8fc7DTD\u6216\u8005\u662fXSD\u5bf9\u6570\u636e\u5143\u7d20\u8fdb\u884c\u63cf\u8ff0\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7XSLT\u5c06XML\u4e0eHTML\uff0cWML\u7b49\u7b49\u8fdb\u884c\u5339\u914d\u3002
\u5728J2EE\u4e2d\u7684\u5e94\u7528\u4e3b\u8981\u96c6\u4e2d\u5728\u7ec4\u4ef6\u63cf\u8ff0\u7b26\u6587\u4ef6\u548cWeb\u670d\u52a1\u4e0a\u9762\uff0c\u901a\u8fc7\u63cf\u8ff0\u7b26\u6587\u4ef6\u5bf9\u5404\u4e2a\u7ec4\u4ef6\u8fdb\u884c\u975e\u529f\u80fd\u6027\u6216\u8005\u5b89\u5168\u65b9\u9762\u7684\u63a7\u5236\uff0c\u4ee5\u53ca\u7ba1\u7406\u3002\u6240\u4ee5\u53ef\u4ee5\u8bf4XML\u662fJ2EE\u4e2d\u6700\u57fa\u672c\u7684\u6280\u672f\u4e4b\u4e00\u3002
J2EE\u6846\u67b6\u7684\u7ec4\u6210
\u57fa\u672c\u4e0a\u901a\u8fc7J2EE\u6846\u67b6\u56fe\u53ef\u4ee5\u5927\u81f4\u770b\u51fa\u5c42\u6b21\u7684\u5206\u89e3\u60c5\u51b5\u6765\uff0c\u6211\u4eec\u628aJ2EE\u6574\u4e2a\u6846\u67b6\u5206\u4e3a\u5ba2\u6237\u7aef\uff0c\u8868\u793a\uff08Web\uff09\u5c42\uff0c\u4e1a\u52a1\u903b\u8f91\uff08EJB\uff09\u5c42\uff0c\u4f01\u4e1a\u4fe1\u606f\uff08EIS\uff09\u5c42\uff1b
\u5ba2\u6237\u7aef\uff1a\u5c31\u662f\u9700\u6c42\u65b9\uff0c\u53ef\u4ee5\u662fBrowser\uff0c\u4e5f\u53ef\u4ee5\u662f\u4e00\u822c\u7684Application Client\uff1b
\u8868\u793a\u5c42\uff1a\u4e3b\u8981\u5c31\u662f\u901a\u8fc7Servlet\uff0cJSP\u7b49\u6280\u672f\u8fdb\u884c\u670d\u52a1\u5668\u7aef\u7684Web\u7ec4\u4ef6\u7684\u7f16\u7a0b\uff0c\u5e76\u4e14\u534f\u8c03\u4e0e\u5ba2\u6237\u7aef\u4e4b\u95f4\uff0c\u4e0e\u4e1a\u52a1\u903b\u8f91\u5c42\u4e4b\u95f4\u7684\u6570\u636e\u4f20\u9012\uff1b
\u4e1a\u52a1\u903b\u8f91\u5c42\uff1a\u4e3b\u8981\u662f\u901a\u8fc7EJB\uff0cJMS\u6765\u5b9e\u73b0\u6bd4\u8f83\u590d\u6742\u7684\u4e1a\u52a1\u903b\u8f91\u4ee5\u53ca\u6570\u636e\u5e93\u5b58\u50a8\u5de5\u4f5c\uff0c\u5e76\u4e14\u53ef\u4ee5\u901a\u8fc7\u5bb9\u5668\u6765\u8fdb\u884c\u7ba1\u7406\u4e8b\u52a1\uff0c\u5b89\u5168\u95ee\u9898\uff0c\u5e76\u4e14\u53ef\u4ee5\u5bf9\u4e1a\u52a1\u903b\u8f91\u5c42\u7684\u7ec4\u4ef6\u8fdb\u884c\u751f\u547d\u5468\u671f\u7684\u7ba1\u7406\uff1b
\u4f01\u4e1a\u4fe1\u606f\u5c42\uff1a\u4e3b\u8981\u662f\u6307\u4f01\u4e1a\u4fe1\u606f\u7cfb\u7edf\u8f6f\u4ef6\uff0c\u5305\u62ec\u4f01\u4e1a\u57fa\u7840\u8bbe\u65bd\u7cfb\u7edf\uff0c\u5982ERP\uff08\u4f01\u4e1a\u8d44\u6e90\u8ba1\u5212\uff09\uff0cCRM\uff08\u5ba2\u6237\u5173\u7cfb\u7ba1\u7406\uff09\uff0cDBS\uff08\u6570\u636e\u5e93\u7cfb\u7edf\uff09\u548c\u4f01\u4e1a\u9057\u7559\u7cfb\u7edf\u3002\u4eceJ2EE1.3\u5f00\u59cb\uff0c\u5c31\u6709Connector\u67b6\u6784\u6807\u51c6\u5316\u4e86J2EE\u5e73\u53f0\u8fde\u63a5\u5230EIS\u4e0a\u7684API\u3002
\u5de5\u4f5c\u7528\u4ec0\u4e48\u5c31\u5b66\u4ec0\u4e48\u3002\u60f3\u5e94\u4ed8\u5de5\u4f5c\uff0c\u5de5\u4f5c\u4e4b\u4f59\uff0c\u5728\u5b66\u4e60\u5176\u4ed6\u7684\u3002
\u6570\u636e\u5e93\u65b9\u9762\uff0c\u5927\u90e8\u5206\u6d41\u884c\u7684DB\uff0c\u57fa\u672c\u8bed\u6cd5\u90fd\u5dee\u4e0d\u591a\uff0c\u533a\u522b\u5c31\u662f\u72ec\u7279\u7684\u51fd\u6570\u7b49\u3002\u7f16\u7a0b\u7684\u6700\u9ebb\u70e6\u7684\u6570\u636e\u5e93\u64cd\u4f5c\u5c31\u662f\u67e5\u8be2\uff0c\u5efa\u8bae\u4f60\u591a\u719f\u6089\u719f\u6089\uff0cleft join\u3002\u8fd9\u4e2a\u4e00\u822c\u7528\u7684\u6bd4\u8f83\u591a\u3002
\u5982\u679c\u4f60\u73b0\u5728\u4e0d\u786e\u5b9a\u7528\u4ec0\u4e48\u6846\u67b6\uff0c\u90a3\u4e48\u5c31\u719f\u6089servlet\u5427\uff0c\u8fd9\u4e2a\u662f\u6700\u57fa\u7840\u7684\uff0c\u4e00\u822c\u7684\u6d41\u884c\u7684MVC\u6846\u67b6\u90fd\u662f\u5728\u8fd9\u4e2a\u57fa\u7840\u4e0a\u5c01\u88c5\u7684\u3002\u6240\u8c13\u4e07\u53d8\u4e0d\u79bb\u5176\u5b97\uff0c\u57fa\u672c\u7684\u539f\u7406\u61c2\u4e86\uff0c\u5c31\u597d\u529e\u4e86\uff0c\u5176\u4ed6\u7684\u6846\u67b6\uff0c\u5c31\u662f\u719f\u6089\u4e86\u3002\u5e76\u719f\u7ec3\u4f7f\u7528\u7684\u8fc7\u7a0b\u4e86\uff0c\u8fd9\u4e2a\u5c31\u662f\u591a\u8c22\u591a\u7ec3\u3002
\u4e00\u822c\u516c\u53f8\u4f7f\u7528\u6846\u67b6\u90fd\u4f1a\u5c01\u88c5\u4e00\u5c42\uff0c\u8fd9\u6837\u4f1a\u66f4\u8868\u73b0\u9879\u76ee\u7684\u7279\u70b9\u3002\u5de5\u4f5c\u7684\u65f6\u5019\uff0c\u4f60\u53ef\u4ee5debug\uff0c\u4e00\u6b65\u6b65\u8ddf\u4ee3\u7801\uff0c\u770b\u770b\u4ee3\u7801\u662f\u600e\u4e48\u4e92\u76f8\u8c03\u7528\u7684\u3002\u8fd9\u4e2a\u5f88\u6269\u5c55\u4f60\u7684\u601d\u8def\u3002
\u597d\u597d\u73cd\u60dc\u4f60\u7684\u5b9e\u4e60\u673a\u4f1a\u5427\uff0c\u591a\u5411\u522b\u4eba\u8bf7\u6559\u3002
正如上面提到的,J2EE的核心是一组规范与指南,定义了开发企业应用系统的标准平台,由J2EE应用服务器的供应商来确保不同J2EE平台之间的兼容。
Java 2平台有三个版本,标准版本(J2SE),企业版本(J2EE)和微版本(J2ME)。
这里首先介绍J2SE,因为J2EE是建立在J2SE(Java 2 Platform Standard Edition)。J2SE主要适用GUI的客户端程序,也就是通常所说的桌面应用,并且为我们提供了Java编程常用到的核心包;
J2EE的主要组成部分有J2EE平台,J2EE规范(Platform Specification),参考实现(Reference Implementation),兼容性测试套件(Compatibility Test Suite)和J2EE蓝图(J2EE BluePrints)。
J2EE平台主要就是利用Java2平台的标准版来为当前的企业级应用提供解决方案的设计,开发,装配和部署,并定义了一组核心API标准的接口。
J2EE规范,有相应的技术规范并对API进行了解释;
参考实现则是关于J2EE平台语法的正确范例;
兼容性测试套件可以使不同J2EE版本的产品可以运行的程序;
J2EE蓝图则是提供了基于J2EE多层应用的实例与文档,主要参考PetStore,Adventure Builder。
J2EE的发展
1997年Servlet技术的产生以及紧接着JSP的产生,为Java对抗PHP,ASP等等服务器端语言带来了筹码。1998年,Sun发布了EJB1.0标准,至此J2EE平台的三个核心技术都已经出现。于是,1999年,Sun正式发布了J2EE的第一个版本。并与1999年底发布了J2EE1.2,在2001年发布了J2EE1.3,在前年年底也就是2003年发布了J2EE1.4。
J2EE1.3
以下就是J2EE1.3的架构图,其中主要包含了Applet容器,Application Client容器,Web容器和EJB容器,并且包含了Web Component,EJB Component,Application Client Component,以JMS,JAAS,JAXP,JDBC,JAF,JavaMail,JTA等等技术做为基础。
1.3中引入了几个值得注意的功能:Java消息服务(定义了JMS的一组API),J2EE连接器技术(定义了扩展J2EE服务到非J2EE应用程序的标准),XML解析器的一组Java API,Servlet2.3,JSP1.2也都进行了性能扩展与优化,全新的CMP组件模型和MDB(消息Bean)。
J2EE1.4
J2EE1.4大体上的框架和J2EE1.3是一致的,1.4增加了对Web服务的支持,主要是Web Service,JAX-RPC,SAAJ,JAXR,还对EJB的消息传递机制进行了完善(EJB2.1),部署与管理工具的增强(JMX),以及新版本的Servlet2.4和JSP2.0使得Web应用更加容易。
J2EE基础与关键技术
J2EE相关的几个概念
J2EE框架是两个重要的概念之上,组件与容器。
组件是一个可以重复利用的单元,这里的组件不同与一般(我们常说的)组件,这是J2EE组件,也就是说组件属于Web组件,EJB组件,客户端组件,或者是应用组件其中的一种。每个组件都需要被打包,分别会打包成.war,.jar,.jar,.ear,每个组件由特定格式的xml描述符文件进行描述,而且服务器端的组件都需要被部署到应用服务器上面才能够被使用。
容器在应用服务器中就扮演了中间件的角色,
比如说Web容器就是为JSP,Servlet提供一个环境,使之不用关注系统问题;
EJB容器则是为EJB组件提供各种系统级别的服务,比如事务管理,安全管理,并且对EJB组件进行高效的管理。
J2EE基础
Java
Java语言是J2EE的基础,整个体系架构都是通过Java语言来描述的,而且所有的J2EE应用服务器都是通过Java语言来实现的。所以在J2EE的产品中Java无所不在。
Http(Hyper Text Transfer Protocol),SSL3.0(Secure Socket Layer)
Http(超文本传输协议)用于在Web服务器与本地浏览器之间进行文本的传输,保证文本传输的正确性,但是由于安全性方面的考虑,在J2EE的应用中使用了SSL协议与Http协议的结合,SSL(安全套接层协议)主要是通过X.509数字证书技术保护信息传输的机密性和完整性,适用于Web Server的点到点方式传输。
从J2EE的体系架构图中可看出客户端,无论是Applet容器还是Client Application容器都是通过Http,SSL协议经由网络来与Web容器,EJB容器中的组件进行交互的。若考虑多台应用服务器的集群,那么Web容器,EJB容器之间也将会通过Http,SSL协议进行交互。
Xml(eXtensible Marker Language)
XML是一种可扩展的标记语言,其主要的用途体现在其良好的数据表示能力和数据传输能力,通过DTD或者是XSD对数据元素进行描述,也可以通过XSLT将XML与HTML,WML等等进行匹配。
在J2EE中的应用主要集中在组件描述符文件和Web服务上面,通过描述符文件对各个组件进行非功能性或者安全方面的控制,以及管理。所以可以说XML是J2EE中最基本的技术之一。
J2EE框架的组成
基本上通过J2EE框架图可以大致看出层次的分解情况来,我们把J2EE整个框架分为客户端,表示(Web)层,业务逻辑(EJB)层,企业信息(EIS)层;
客户端:就是需求方,可以是Browser,也可以是一般的Application Client;
表示层:主要就是通过Servlet,JSP等技术进行服务器端的Web组件的编程,并且协调与客户端之间,与业务逻辑层之间的数据传递;
业务逻辑层:主要是通过EJB,JMS来实现比较复杂的业务逻辑以及数据库存储工作,并且可以通过容器来进行管理事务,安全问题,并且可以对业务逻辑层的组件进行生命周期的管理;
企业信息层:主要是指企业信息系统软件,包括企业基础设施系统,如ERP(企业资源计划),CRM(客户关系管理),DBS(数据库系统)和企业遗留系统。从J2EE1.3开始,就有Connector架构标准化了J2EE平台连接到EIS上的API。
绛旓細鍦J2EE涓殑搴旂敤涓昏闆嗕腑鍦ㄧ粍浠舵弿杩扮鏂囦欢鍜學eb鏈嶅姟涓婇潰锛岄氳繃鎻忚堪绗︽枃浠跺鍚勪釜缁勪欢杩涜闈炲姛鑳芥ф垨鑰呭畨鍏ㄦ柟闈㈢殑鎺у埗锛屼互鍙婄鐞嗐傛墍浠ュ彲浠ヨXML鏄疛2EE涓渶鍩烘湰鐨勬妧鏈箣涓銆侸2EE妗嗘灦鐨勭粍鎴 鍩烘湰涓婇氳繃J2EE妗嗘灦鍥惧彲浠ュぇ鑷寸湅鍑哄眰娆$殑鍒嗚В鎯呭喌鏉ワ紝鎴戜滑鎶奐2EE鏁翠釜妗嗘灦鍒嗕负瀹㈡埛绔紝琛ㄧず锛圵eb锛夊眰锛屼笟鍔¢昏緫锛圗JB锛夊眰锛...
绛旓細杩欎釜HQL璇彞浠庨昏緫涓婃潵璇存槸娌℃湁浠讳綍闂鐨,杩欎釜鐧诲綍楠岃瘉鍔熻兘鍦ㄤ竴鑸儏鍐典笅涔熸槸浼氭纭畬鎴愮殑,浣嗘槸濡傛灉鍦ㄧ櫥褰曟椂鍦ㄧ敤鎴峰悕涓緭鍏モ漽haoxin or 鈥榵鈥=鈥檟鈥,杩欐椂濡傛灉浣跨敤绠鍗曠殑HQL璇彞鐨勫瓧绗︿覆鎷艰,灏变細鐢熸垚濡備笅鐨凥QL璇彞: 鈥渇rom User user where user.name=鈥檢haoxin鈥 or 鈥榵鈥=鈥檟鈥 and user.password=鈥檃dmin鈥...
绛旓細at apache struts action ActionServlet initModuleConfig(ActionServlet java: )涓鸿В鍐闂 鍏堜笅杞絪truts鐨勬簮鐮佸寘 鐒跺悗鍦ˋctionServlet java鐨勭 琛屾彃鍏ユ柇鐐 骞跺鍚勫彉閲忚繘琛岀洃瑙 寰堜涪浜 鎴戠珶鐒舵妸struts config xml鏂囦欢寮勪涪浜 鍥犳鍑虹幇浜嗕笂闈㈢殑寮傚父 搴旇鏄拰CVS鍚屾鏃朵笉灏忓績鍒犻櫎鐨 Resources not defined for ...
绛旓細鍙互鍦ㄦ埧闂磋〃閲岄潰鍔犱袱涓瓧娈碉細isChecked,belound 濡傛灉涓涓細鍛樺仛浜嗚鎴挎搷浣滐紝閭d箞鎶婅鎴块棿鐨刬sChecked瀛楁璁剧疆涓1(琛ㄧず宸茶),骞朵笖belound璁剧疆涓轰細鍛業D鍙(鎴块棿浠庡睘浜庤皝)銆 褰撻鎴挎椂锛屽皢璇ユ埧闂磇sChecked璁剧疆涓0(琛ㄧず绌烘埧),骞朵笖鎶奲elound璁剧疆涓虹┖(鏃犱粠灞炲叧绯).鏄剧ず鐨勬椂鍊欙紝灏嗘埧闂寸殑VO瀵硅薄鎷垮嚭鏉ュ仛寰幆鏃...
绛旓細瀵逛簬浣犺j2ee鍋氱殑缃戠珯涓嶆庝箞濂界湅锛岃繖涓娉曞彲涓嶅锛岀綉椤电殑婕備寒瀹屽叏鐢变綘鐨勮璁℃墍鍐冲畾锛屼綘鎬庝箞甯冨眬锛岄噰鐢ㄤ粈涔堥鑹诧紝鐢ㄤ粈涔堟牱鐨勫鑸紝鎸夐挳绛夛紝鑰岃繖浜涗富瑕侀氳繃css鏉ユ帶鍒讹紝鍙﹀杩橀渶瑕佸埗浣滀竴浜涘浘鐗囷紝鎴栬呯敤浜沠lash绛夈傛墍浠ヤ笉鏄敱j2ee鍐冲畾鐨勶紝鎵浠ヤ功涓婇潰鐨刯2ee渚嬪瓙涓嶄細澶叧娉ㄧ晫闈㈢殑璁捐锛岃屾槸娉ㄩ噸鍚庡彴鐨勫紑鍙戙傚彟澶...
绛旓細Hibernate鏄竴涓紑鏀炬簮浠g爜鐨勫璞″叧绯绘槧灏勬鏋讹紝瀹冨JDBC杩涜浜嗛潪甯歌交閲忕骇鐨勫璞″皝瑁咃紝浣垮緱Java绋嬪簭鍛樺彲浠ラ殢蹇冩墍娆茬殑浣跨敤瀵硅薄缂栫▼鎬濈淮鏉ユ搷绾垫暟鎹簱銆 Hibernate鍙互搴旂敤鍦ㄤ换浣曚娇鐢↗DBC鐨勫満鍚堬紝鏃㈠彲浠ュ湪Java鐨勫鎴风绋嬪簭瀹炵敤锛屼篃鍙互鍦⊿ervlet/JSP鐨刉eb搴旂敤涓娇鐢紝鏈鍏烽潻鍛芥剰涔夌殑鏄紝Hibernate鍙互鍦ㄥ簲鐢‥JB鐨J2EE...
绛旓細灏变細鍦ㄨ繍琛屾椂鍑虹幇閿欒锛岃搴旂敤绋嬪簭灏嗘棤娉曞惎鍔ㄣ傚鏋滀綘鏌ョ湅Tomcat鐨勬棩蹇楁枃浠讹紝灏嗕細鐪嬪埌姝f槸java.lang.UnsupportedClassVersionError閿欒鍙戠敓浜嗭紒鍏跺疄鏃犻潪灏辨槸鐗堟湰闂锛孞DK鐗堟湰鐨勯棶棰銆傝В鍐虫柟娉曪細鍦‥clipse绐楀彛-->棣栭夐」-->Java-->缂栬瘧鍣-->JDK涓鑷存-->缂栬緫鍣ㄤ竴鑷存х骇鍒紝浠5.0鏀瑰埌1.4灏卞彲浠ヤ簡銆
绛旓細1銆佸皢鏈嶅姟鍣ㄧ殑璧勬簮閫氳繃鏍囧噯鐨凥TTP鍝嶅簲鍙戦佺粰娴忚鍣紝娴忚鍣ㄦ帴鏀跺埌鍝嶅簲鍚庡皢 HTML鏂囨。鏄剧ず鍑烘潵銆2銆乤ction锛氬綋鎻愪氦琛ㄥ崟鏃讹紝鍚戜綍澶勫彂閫佽〃鍗曟暟鎹俫et锛氭祻瑙堝櫒浣跨敤 method 灞炴ц缃殑鏂规硶灏嗚〃鍗曚腑鐨勬暟鎹紶閫佺粰鏈嶅姟鍣ㄨ繘琛屽鐞嗐傚叡鏈変袱绉嶆柟娉曪細POST 鏂规硶鍜 GET 鏂规硶銆倀ype锛氱被鍨嬶紝鍙互鏄痓utton锛宻ubmit绛 name锛...
绛旓細鍦╨og4j鐨勯厤缃枃浠朵腑 org.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES杩欎釜淇敼涓篺alse锛堥粯璁や负true锛夊嵆锛歰rg.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES=false
绛旓細java鐨剋eb鐩稿叧鐨勭煡璇嗘瘮杈冮噸瑕侊紝鍙互鍏堜粠jsp锛宻ervlet鍏ユ墜 寮鍙戠幆澧冨彲浠ョ敤Eclipse鎴朚yEclipse锛屽姛鑳芥瘮杈冨己澶э紝鍙﹀Jbuilder涔熶笉閿 1.鍏堝涔犱竴涓婼ervlet,鐭ラ亾鎬庝箞鏍峰啓绋嬪簭濡傛灉.2.瀛︿細鍩烘湰鐨刋ML鍜屽熀鏈殑JSP.JSP瀹屾垚椤甸潰鐨勮璁,濡傛灉浣犳湁绮惧姏杩樻兂鍋氭洿涓烘湁鏁堢殑椤甸潰,杩樺彲浠ュ瀛avaspcript.瀹冨彲浠ュ畬鎴愬鎴风鏍¢獙,...