{"id":409,"date":"2010-03-28T18:40:14","date_gmt":"2010-03-28T10:40:14","guid":{"rendered":"http:\/\/www.awaysoft.com\/taor\/?p=409"},"modified":"2013-12-23T11:20:52","modified_gmt":"2013-12-23T03:20:52","slug":"%e7%bb%88%e4%ba%8e%e6%90%9e%e5%ae%9astruts%e6%a1%86%e6%9e%b6%e4%ba%86%ef%bc%8c%e7%94%a8eclipse%e9%85%8d%e7%bd%ae%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84struts%e6%a1%86%e6%9e%b6%e3%80%82","status":"publish","type":"post","link":"https:\/\/actom.me\/blog\/%e7%bb%88%e4%ba%8e%e6%90%9e%e5%ae%9astruts%e6%a1%86%e6%9e%b6%e4%ba%86%ef%bc%8c%e7%94%a8eclipse%e9%85%8d%e7%bd%ae%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84struts%e6%a1%86%e6%9e%b6%e3%80%82.html","title":{"rendered":"\u7ec8\u4e8e\u641e\u5b9astruts\u6846\u67b6\u4e86\uff0c\u7528Eclipse\u914d\u7f6e\u4e2a\u7b80\u5355\u7684struts\u6846\u67b6\u3002"},"content":{"rendered":"<p>\u54ce\uff0c\u8fd9\u4e48\u7b80\u5355\u7684\u4e00\u4e2astruts\u6846\u67b6\uff0c\u6211\u548b\u5c31\u5f04\u4e86\u90a3\u4e48\u4e45\u3002\u3002\u3002\u3002\u60f3\u4e0d\u660e\u767d\u3002\u3002<br \/>\n\u6765\u8bf4\u8bf4\u8fc7\u7a0b\u3002<br \/>\n1\u3001\u4ecestruts\u7f51\u7ad9\u4e0a\u4e0b\u8f7d\u4e2astruts\uff0c\u8fd9\u91cc\uff0c\u6211\u4e4b\u524d\u4e0b\u76842.1.8.1\uff0c\u4e0d\u8fc7\u914d\u7f6e\u540e\u901a\u8fc7\u4e0d\u4e86\uff0c\u603b\u662f\u63d0\u793a\u8d44\u6e90\u6ca1\u627e\u5230\uff0c\u4e0d\u77e5\u9053\u600e\u4e48\u5f04\u7684\uff0c\u540e\u6765\u4e0b\u8f7d\u76842.0.14\u641e\u5b9a\u7684\u3002<br \/>\n2\u3001\u6253\u5f00Eclipse\uff0c\u9009\u5728File-New-Dynamic Web Project\uff0cProject name\u8f93\u5165\u4e0b\uff0c\u7136\u540eFinish\u3002<br \/>\n3\u3001\u5728\u5de6\u8fb9\u5c55\u5f00WebContent &#8211; WEB-INF &#8211; lib\uff0c\u4ecestruts\u7684lib\u76ee\u5f55\u590d\u5236commons-logging-1.0.4.jar\uff0cfreemarker-2.3.8.jar\uff0cognl-2.6.11.jar\uff0cstruts2-core-2.0.14.jar\uff0cxwork-2.0.7.jar\uff0c\u7136\u540e\u5728Eclipse\u4e2d\u70b9\u51fb\u521a\u521a\u5c55\u5f00\u7684lib\uff0c\u6309Ctrl+V\u3002<br \/>\n4\u3001\u6253\u5f00WEB-INF\u76ee\u5f55\u4e0b\u7684web.xml\uff0c\u5728\u524d\u6dfb\u52a0\u5982\u4e0b\u5185\u5bb9\uff1a<\/p>\n<pre class=\"lang:xhtml decode:true\">&lt;filter&gt;\r\n        &lt;filter-name&gt;struts2&lt;\/filter-name&gt;\r\n        &lt;filter-class&gt;org.apache.struts2.dispatcher.FilterDispatcher&lt;\/filter-class&gt;\r\n&lt;\/filter&gt;\r\n\r\n&lt;filter-mapping&gt;\r\n        &lt;filter-name&gt;struts2&lt;\/filter-name&gt;\r\n        &lt;url-pattern&gt;\/*&lt;\/url-pattern&gt;\r\n&lt;\/filter-mapping&gt;<\/pre>\n<p><!--more--><br \/>\n5\u3001\u5728WEB-INF\u4e0b\u5efa\u7acb\u4e00\u4e2a\u6587\u4ef6\u5939classes\uff0c\u5728classes\u6587\u4ef6\u5939\u53f3\u952eNew-XML\uff0c\u8f93\u5165\u6587\u4ef6\u540dstruts.xml\u3002<br \/>\n\u7136\u540e\uff0c\u7f16\u8f91\u8fd9\u4e2axml\uff0c\u6ce8\u610f\u7528\u53f3\u952e-Open With-Text Editor\u3002<br \/>\n\u8f93\u5165\u5982\u4e0b\u5185\u5bb9\uff1a<\/p>\n<pre class=\"lang:xhtml decode:true\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\" ?&gt;\r\n&lt;!DOCTYPE struts PUBLIC\r\n    \"-\/\/Apache Software Foundation\/\/DTD Struts Configuration 2.0\/\/EN\"\r\n    \"http:\/\/struts.apache.org\/dtds\/struts-2.0.dtd\"&gt;\r\n&lt;struts&gt;\r\n    &lt;!-- \u914d\u7f6e\u5e38\u91cf  --&gt;\r\n    &lt;constant name=\"struts.enable.DynamicMethodInvocation\" value=\"false\" \/&gt;\r\n    &lt;!-- \u914d\u7f6e\u5f00\u53d1\u6a21\u5f0f\u4e3afalse --&gt;\r\n    &lt;constant name=\"struts.devMode\" value=\"false\" \/&gt;\r\n    &lt;!-- \u589e\u52a0\u5305\u914d\u7f6e --&gt;\r\n    &lt;package name=\"yjs\" extends=\"struts-default\"&gt;  \r\n        &lt;action name=\"login\" class=\"cn.edu.hut.yjs.login\"&gt;  \r\n            &lt;result name=\"OK\"&gt;\/ok.jsp&lt;\/result&gt;  \r\n            &lt;result name=\"NO\"&gt;\/no.jsp&lt;\/result&gt;  \r\n        &lt;\/action&gt;  \r\n    &lt;\/package&gt;  \r\n&lt;\/struts&gt;<\/pre>\n<p>6\u3001\u5728Java Resources: src\u4e0b\u5efa\u7acb\u4e00\u4e2a\u7c7b\uff0c\u6211\u8fd9\u91cc\u5efa\u7acb\u7684\u662flogin(\u53f3\u952e-New-Class)\uff0cpackage\u6211\u586b\u7684\u662fcn.edu.hut.yjs\uff0c\u6ce8\u610f\u770b\u5230\u4e0a\u9762\u5efa\u7acb\u7684struts.xml\uff0c\u671f\u4e2d\u7684name\u662fAction\u7684\u540d\u5b57\uff0c\u800cclass\u5c31\u662f\u8fd9\u91cc\u6211\u4eec\u8981\u5efa\u7acb\u7684\u7c7b\u4e86\uff0c<br \/>\n\u6211\u8fd9\u7684\u5185\u5bb9\u4e3a\uff1a<\/p>\n<pre class=\"lang:java decode:true crayon-selected\">package cn.edu.hut.yjs;\r\n\r\npublic class login {\r\n\tprivate String username;\r\n\tprivate String password;\r\n\tprivate String verify;\r\n\r\n\tpublic String execute() {  \r\n        if (username.equals(password)) {  \r\n            return \"OK\";  \r\n        } else {  \r\n            return \"NO\";  \r\n        }  \r\n    }\r\n\r\n\tpublic String getUsername() {\r\n\t\treturn username;\r\n\t}\r\n\r\n\tpublic void setUsername(String username) {\r\n\t\tthis.username = username;\r\n\t}\r\n\r\n\tpublic String getPassword() {\r\n\t\treturn password;\r\n\t}\r\n\r\n\tpublic void setPassword(String password) {\r\n\t\tthis.password = password;\r\n\t}\r\n\r\n\tpublic String getVerify() {\r\n\t\treturn verify;\r\n\t}\r\n\r\n\tpublic void setVerify(String verify) {\r\n\t\tthis.verify = verify;\r\n\t}  \r\n\r\n}<\/pre>\n<p>\u5176\u4e2dexecute()\u8fd9\u4e2a\u51fd\u6570\u5c31\u662fAction\u9700\u8981\u7684\uff0c\u4e5f\u5c31\u662f\u6211\u7528\u6765\u9a8c\u8bc1\u8eab\u4efd\u7684\u3002<br \/>\n7\u3001\u6700\u540e\uff0c\u6211\u4eec\u5728WebContent\u5efa\u7acb3\u4e2aJSP\uff0c\u5176\u4e2d\u7684ok.jsp\u548cno.jsp\u4e3a\u767b\u9646\u540e\u8f6c\u5411\u7528\u7684\uff0c\u524d\u9762\u7684struts.xml\u5df2\u7ecf\u8bf4\u660e\u4e86\uff0c\u800c\u8fd8\u6709\u4e2alogin.html\uff0c\u7528\u6765\u767b\u9646\uff0cok.jsp\u548cno.jsp\u5c31\u968f\u4fbf\u600e\u4e48\u5199\u4e86\uff0c\u6211\u8fd9login.html\u7684\u8868\u5355\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n<form action=\"login.action\" method=\"post\">\n<table width=\"100%\" border=\"0\">\n<tbody>\n<tr>\n<td>\u8eab\u4efd<\/td>\n<td><select name=\"type\"><option value=\"3\">\u5b66\u751f<\/option><option value=\"2\">\u6559\u5e08<\/option><\/select><\/td>\n<\/tr>\n<tr>\n<td>\u7528\u6237\u540d<\/td>\n<td><input type=\"text\" name=\"username\" \/><\/td>\n<\/tr>\n<tr>\n<td>\u5bc6\u7801<\/td>\n<td><input type=\"password\" name=\"password\" \/><\/td>\n<\/tr>\n<tr>\n<td>\u9a8c\u8bc1\u7801<\/td>\n<td><input type=\"text\" name=\"verify\" \/><\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><input type=\"submit\" value=\"\u767b\u9646\" \/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/form>\n<p>\u6ce8\u610f\u8868\u5355\u4e2d\u7684action\u7684\u503c\u3002<br \/>\nOK\uff0c\u8fd9\u6837\u5c31\u642d\u5efa\u5b8c\u6210\u4e86\u3002\u5982\u679c\u7528\u6237\u540d\u548c\u5bc6\u7801\u76f8\u540c\uff0c\u90a3\u4e48\u5c31\u8f6c\u5411ok.jsp\uff0c\u5426\u5219\u8f6c\u5411no.jsp\u3002\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u54ce\uff0c\u8fd9\u4e48\u7b80\u5355\u7684\u4e00\u4e2astruts\u6846\u67b6\uff0c\u6211\u548b\u5c31\u5f04\u4e86\u90a3\u4e48\u4e45\u3002\u3002\u3002\u3002\u60f3\u4e0d\u660e\u767d\u3002\u3002 \u6765\u8bf4\u8bf4 &#8230; <a class=\"more-link\" href=\"https:\/\/actom.me\/blog\/%e7%bb%88%e4%ba%8e%e6%90%9e%e5%ae%9astruts%e6%a1%86%e6%9e%b6%e4%ba%86%ef%bc%8c%e7%94%a8eclipse%e9%85%8d%e7%bd%ae%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84struts%e6%a1%86%e6%9e%b6%e3%80%82.html\">Read More &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"_links":{"self":[{"href":"https:\/\/actom.me\/blog\/wp-json\/wp\/v2\/posts\/409"}],"collection":[{"href":"https:\/\/actom.me\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/actom.me\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/actom.me\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/actom.me\/blog\/wp-json\/wp\/v2\/comments?post=409"}],"version-history":[{"count":12,"href":"https:\/\/actom.me\/blog\/wp-json\/wp\/v2\/posts\/409\/revisions"}],"predecessor-version":[{"id":930,"href":"https:\/\/actom.me\/blog\/wp-json\/wp\/v2\/posts\/409\/revisions\/930"}],"wp:attachment":[{"href":"https:\/\/actom.me\/blog\/wp-json\/wp\/v2\/media?parent=409"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/actom.me\/blog\/wp-json\/wp\/v2\/categories?post=409"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/actom.me\/blog\/wp-json\/wp\/v2\/tags?post=409"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}