struts理解
最近大家都在找工作,我好迷茫,觉得自己会的东西太少了。所以决定开始学习SSH三大框架。
首先是struts.
struts是基于mvc模式的框架。(struts其实也是servlet封装,提高开发效率!)
Servlet起到控制器作用!主要可以:
----》 获取请求数据封装 【BeanUtils可以优化,(调用方法?)】
----》 调用Service处理业务逻辑
----》 跳转(转发/重定向) 【跳转代码写死】
传统mvc开发:
1. 跳转代码写死,不灵活
2. 每次都去写servlet,web.xml中配置servlet!
(配置目的: 请求, Servlet处理类)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAioAAADbCAIAAADMAy1xAAAgAElEQVR4nO2dd3hUVf7/7z7fdV39ustPd1d39atZtykqZnVX1xXXrG0INSAgEKUIUlQQQZoiHQmdQGDSK4EEAkwSEkhIJSFAGpPee5n0nsy5/fz+uMPNZFJuJpmZe0LO+3k/PMPNLZ+593zO637OLUPAgVSpaR1wulyiaKalvUfuKPooq1Ajdwh9VFPfLncIfcSyXGNLl9xR9FFGfq1J1hOdUhCdUjD69dQ1dY5+JaYVaq0ItSxrbOliWU7uKPoItb46t6R++DMTA05F7Sth/EgKtY4D40dSGD+SQi3LMH4khfFjCaGWGKh1HBg/ksL4kRRqWYbxIymMH0sItcRArePA+JEUxo+kUMsyjB9JGYcfLaD7u6y6ecDpcrmjC9Q1dcoehr6zCjWyx6DvitpW2WPQd1cPWdvQLnsY+s7IrzXJeq4l5V5Lyh39eqrr2mTfJwZGrRWhlmW1De1dPaTsYegbtb46p7hu+DMTLe09/V1c0TTgdLnc0NxVpWmTPQx9ZxZoZI9B3yWVzbLHoO+m1u6K2lbZw9B3Rn6tSdYTcjMr5GbW6NdTVt0i+z4xMGqtCLUsq6htbWrtlj0MfaPWV2cX1Q1/Zjz4NkKhNiyA2rAJHnyTFB58kxRqWYYH3yRlgms/RWWaWk09AKSJQhqtMH4khVrHgfEjKYwfSaGWZRg/Q4ukqMTk3M6u7mHOb4gflmXT7mXuO+R44rT7voMnsnMLOE7+3Y3xIynUOo4HEj/JuRXnItMO+kUd9Is6F5mWnFsxmrVh/EgKtSzD+BlMHMcVl5QdOHLq6CnX/YdP3rqTwjCM5FJ98MPzfGz8rfD4Wy003QlhM0Vdi7+Vk2eCE71RCuNHUqh1HA8kfr5XhubWNIn+Xhk6mrVh/EgKtSzD+BlMOXkFl69HNWpBJ4StDHMzTR12PYrn+aGX6oMfkiSVHn7lgBSd09gcqLrW0KaV19WNXYVVrbKHoe+Ee5Wyx6DvzOIG2WPQt6alJ7+8WfYw9B2XVjHKNWw6FazheNGbTgWPZm05pU2y7xMDo9aKUMuy/PJmTUuP7GHoW11YL3sMDW3agCvhWXWN+uxwP3uhu1uiZuiDn+6eHmef8ykNzaJvllet3HFq5veB2NjYMzd5pGsp0TM3ecgfEjY2Av78+5NxJRX67HD1v9jRKVHf98EPx3FefoGZ9Y2VDFPJsJUMk1JetfQHj0X7b2BjY8/e6ltLM6Jnb/WVPSRsbBS87Af3hPyiSloAB1vY0eni6ceyrBH4gRC2tLadDwoOj028k5l96XpMkNux1shjdLwjNja2r8vpswGXRfu6nJY9JGxsFNwWeSzI2eFyeOTtjOxr8UnnL4XUNzQNzZ4B8CPUQHG3Uud+e2r2Fl/ZvxU2NjY29phwiNepj7/af8QnUrLuGRQ/EMJKTeusXRGztqtk/z7Y2NjY2GPCkYE+Mzd5ngzOHQ57MH6wh+sox7VB+1cIn1M9Noufze1X//KM8OHdv/9FCCPKce2Acy62fbMocKfHNnv9iRMee0T4sGOZrVHbJQaS/qaFePQjFMPov6AYRv9gjA3MKC+2fXOwP+mHRBCE/p+Orp3TGOYgfPbYZl8UuHOwgzLrnUnmCx57zNlo/NQ1dfZ3QVkDxg+2aI9t9ott35z//ms7ltnuWGa7ctbb899/7ejaOcJfg/avEKZvtv9A8eaLwuf9q2aYZNNCT+exzd7q90/sWGa72PbNxbZvnt44v/+cQlerz8Wrh1eLYQhRCdb/b6Ly2x3LbBVvvrjZ/gPxr/RAHXfQ/hUifooCd4pz7lhmm+X3vUEYBhb6+sYwB2GnRTmu1V9cnG3HMtuHf/FzMTYDaA3f4hpe/csz+l9c2BudN44YbIggCP0wBPwkKr/tvHFEwE+qx2YRSLQefvT3CTa2gJ+DgRkDYqW/cfWDPSxHOa7VP50fsPoRu1dTWdiWUGf0r34GLFAIgrD6/RNCMOKUxjAHsXsVz/T1z/HXzbMx2PTQ+NEPw6AWHKL60d8/YhgG1Y+InAHLDqPcvxYccEP0INWP8K8QBkEQYjBB+1cIX3mwuhB73Hq0g2/p+VU/uoX7RaYJ3uV8pTzspOzfClt2Rzmu1a9+ho2fA0te/OX/vflpve6/P520fvLFyW+23Di+bcY/7l47KszmvvgtL6+f6PBdRz979+tPbHcss/1u+eyaiOP0/RPtd//+F/FUXaBLfxsAQwxm3Twb/VLMAD9H184R655Z70wSO1mDumHHMtv5778mdLIe2+wNunX/nUvEgmyI8a4B8TwYfma9M2ndPBvdfr6xP2jRK1Nn2u5Y9oH7vh+04Vt2ffjCV4tsty+flXbx+22TrZKDjtDxjvTlL+z+Mq36/qrEHTVgSAbVjzh9/6oZQi0o/CuEoc/C+e+/luqxWX9VQ0AOe5y4OPTkLucrIjh+dAtPz68yGj837xVfuJnVDqFg7/CkwhCMH+xBr/0Ip8YD6ujaOXT8jyum/+PYy4TK35GOd6xXLvzVrM932L/ZcuN4xNp/f7FbKD527pj1Zl2k481tNl9s7XO+L5xiv/v3v7z797/or1kMQ3/KEPih9Xr5/vgxONMX/jpY9SPY4JuKBYG4oEENZBCSvgfDT58wwrctfm6i6vL96Rc/mzXxnbJI4b97BsTPrHcmDY0fo6ofcc9Y/f4J8cuKEBIvg2GPW+eoTnmHJ4nguHAz6+a94pHgRxmtvtdDCXYMScD4GecWrnMIl15Ev/DckzuW2RqcBQ/Uvf64Yvq79coPNnzxBR3vqFz84YXAwwJ+OgO+nPh/b6Vdd2w88cHypWt64h3PL3nPO/An/cV3LLN96olfFQXu1N+6QfUjXofojx/hQtSbL1kJU4ROdpj4GaL6ESz2uf0H3wbbk/rXfsQvaDBsNeGxR46unSP29fenH03fN3fRWy9tWTY/55ojHe8Q+Pl/Fs35z/FNq5qj93w7acIX8z/ascx2xyevv/WXadX3L0cJqNC/AqS/ocGqH3pI/ND3B9+y/L4XV4jxg52jOuUYkiCCQxmtHiF+vOMzy1hWsPPVWxg/2NP+/VLr9UN0vOM9ry3BDivpeMe264de+dMfDGYbDD90/DH7GW/Q8Tu22U9pjT4h4IeOO3D8tUf2H9vh9d7jLu7H6XhHj/lvu/fFT9v1QwJdWq8fagxzeHvS841hDvrXwGk9/LRHHNYPyaD6EabQffHz6//9pdDJrp//XyruhH4nu+CD14Vtifbd/tkw8TPhsUf622nDPCGkCY890nnjiDAzQRD7V81ouv+NnDbMK7mwq+vG0Zee/73fj4vV3lv1v2nndYd7m/7xz8lTNFGOZOyxlnAHl1nPb9i1auu/n43x2dsY5tDot2TGX6ZVxzu2XDtISw2+GVX9PPLwQwb4Efe82Dawx7NzVKecr94SweEdnzkS/CRllu72jrxwM0vwbreQ4lCMn3HtvHPbBa+bZ7Pww39M//fL6+bZ3PPaUh/6U5LzBv05B8ePY9Dn738x84+bt34H4h11+Il3rHP6YM4/XnvhjdkV8Y50vGPOodkfTJ1XeN2RjnfMcf+6MVJ37UfY9Mc21h/bWD/zuwnr5tk4rJklbuLp3044unaO25aFdLzjhgXvZfhsE289MMCPYKGrXTfP5uK+5cIUpw3zLu5bvsX+w/Aja8TZhr71YP+qGXnntgufB6x+wo+s2fn5VGFK9P2lGsMc/mP9Z3FOsXoQSbDz86kdkYfpeEe3LQu/X/xRc/hBYXp36I5Q9110vCN9acns19/N91hzw/8QHe+YvOPDjdtWGHvtZ908m3XzbH7x0P8IH9bNsyEIQvgg7I2dn09dN89GwE+S84b60J+EkMT9IOBHOAq49MGm4x3zgk/udgvpBYd3ZFJmqdH4YViuS0sWlDXM2nlt1vYrbVGOZJz83w0bEQ/9xM8Q+NH6LieI5+KDT9B6+KHjj62b9NjWY7uFmanYY/fWT3r00UcmPPbIVPvlHXEnaL3iRvHmi9qYY1cPr45z+kaYIlQVLz//h8YwB6GnJmOPfz79LRE/v/zFQxMee+QXD/2PfkgGZ/pCwSF8dtm8QPz80M//x6B8efSXvxDwY3C+3x8/JRd26S/+i4f+57mnHqfjHam4E103jtLxjvtXzdCvgZrCHLbYf/jcU48L7Jnw2CNq763dUUdfev73q+0m0/GOVOwBj6n/N+GxRyY88mzA+aMgavuXf/vlhMceeWXS5MJruwbDz89+9jMhADEYIQw63nGL/YdNekVkY5iDeHdGU5iDEIb+nYG0Hsz0r/oEO6y8eni17M0SW3aDOMe2KMer53xmbvI8eimzS0syw/hlCnzjNbaEheJjQOtXP34/Ll43zyba1DfgOqyZJQQgTnFcP1e/+ulvoezoiDwsBCNWOfRAN1jr/1U80xe+jsGc97y2iIWgONF180L9YMqDdhtUhIK32H+oH0P/LlsII9pxrUGESc4b+sc8TIvll4HFPaPvASmyxf5D/cMt7ofyoN39G4Npjzv2WDR+6wE2NjY2tgzG+MHGxsbGlsGmwU9+cfXsbQF2P1yS/ftgY2NjY48J3zjvYfftqVOX0oeLn0pNq74Ly+q8z4d4nQs6dyX8jFdAlOdP3dHHZf9W2NgoONjbyf/cBdHB3k6yh4SNjYJ7Yo7Heu3z9Dl77vJVz3NBXueC84prDODS332qH57nL6nC0gqK2ziuHcJWjkvOyb3jt1/274aNjYK3HVA2aEnR2w4oZQ8JGxsFJ/n9FHc3pZVl2yFs47j82jq/cxd5njdi8E2rBUov/8KubtH3NA1f7HSZtV2FjY09c7NXGcOKnrnZS/aQsLFR8LLvz6TV1Omzw93/YldXt9H4SWloFh1fVrVih+usXRHY2Ngzt/hkAEr0zC0+soeEjY2Cl/zgHFtSoc8Ol7OBnV1dRuCH47jLIeHx2Xk1DFPLsjUME6POSk5TD70KC4iimZb2Hrmj6KOsQo3cIfRRTX273CH0EctyjS0Sjc/CysivHeUavleGZje0if5eGTqatdU1dY4yHpMLtVaEWpY1tnSxw3ia0pKq1LTKHQKEEN5NvRd+O6WaFsDBJpdWnL+oYjmJfWV45xsApOrqdc+zF8Kj4529/K9HxVE0bbaYhyuMH0mh1nE8kPi5lpR7LjJN9LWk4d5gOqAwfiSFWpZh/Awmmqaj4xPPePiFR8f5BFy+qLra06OVXGqAG685jrubnnv7bmp1zWjT1VTC+JEUah3HA4kf0wrjR1KoZRnGz9DS1DVcCo0pKi7lpOoeQYM+dmrSqEYrjB9JodZxYPxICuNHUqhlGcaPpHJL6oc/M8bPCIVaYqDWcWD8SArjR1KoZRnGj6Qwfiwh1BIDtY4D40dSGD+SQi3LMH4khfFjCaGWGKh1HBg/ksL4kRRqWYbxIymMH0sItcRArePA+JEUxo+kUMsyjB9JGYef4sqm/u7oWgghgT22POChlMulVSWy7xBsY93WsVr2lqNvlvu17PsE21gP//gSg2BpqezfwSh7exM2NrrPNjZEV9cA81y/3jsPhMSKFcT27brP69cTNjYDODFR/q9mjJFSm9x7Y6h2YmNDODkNMMOCBYSDw8DL2tgQavVQK9++nVixYtC/OjkN3Ma8veXfLXpeL3ezMdAEuXeIoadP720h/VuLfq8ydAtxcCAWLDCcoaurTx/V3wM2oaEXkcPD1WCzLpX7CxjnXbsIgiDKy4m4OOLrrwmCIOLiiLg4oriYgJDw9iYIgti6VTe9uJhISSFeeomws+tzUA3WSRCESiX/VzPHUbeIUMSP0E6Eg7t+veFfhRYiNIYXXiAIok9XolIRX35JEARhbU08/DDx8MPEhAnEb35DWFsTEBJxccTkycSf/0zk5hIEQbzwAmFjQzz1FDFhgm7x9et7P+u3sV275N8tesb4GdTTpxNz5xL/+7/ElCnEU08RDg6ElRWxdGmfeaytCTs7wtqamDBB15CED/pHXOxVbGyI69cNt+LkRPj59UGLlZWu0QqLt7X1mV/o3GTfOX09XA0261K5v4ARtrPTdRYLFuiOruBHH9V1Ma+9Rri6EuvW6f6alUW8/DLx9NN98POb3xB2dn2M8TM6IYSf7m7dsTbAj7094eGhm8fennjvPeJ3vyNOntS1mePH+6xEoyEyMnRnMFZWhJUVYWOj62sgJI4f1zWYlBSCIIjXXiPs7Ihnn+2Dn5//fIA2hvEzpBDCj709oa+TJwkrK+LZZwk7O+LAAQJCws6O+PWviTffJP74xz6DMfr4UamIdesMm4HYEdnZEaGhhtsVG63QbqdN67Pga69h/Mht8QhlZRG//S3R2Uk8/TSRkKD7q1pNqNXEnj0EQRBqNVFTMwB+0CtgzXjULSKE8CO2EAP8TJjQpwZqaSHUauLxxwlra2LmzD5DbQUFulZkbU1YWxMPPURMnKj7/MknBISESkU89hhRUEBUVurmFN3YSMBBqh/0jPEzlDdt0rEnPFxXdhgUH2L187//S1hbEwRB/PnPugE3rZZQq4nMTKK7m1CrB2YGQRAnThi2HwP8GFQ/SHq4GmzWpXJ/AeMsHKGAAOLnPyeysggIiZIS4tFHdee2QjE0dPVjY0Ns397ntOLbb+X/XmY66hYRWvjJz++tjyEkCIL40596W0toqO5E0tWVSE/XtZk//rH3zDQ2lti2Tbfs9u3EI48QH33U57z1sceI3/6W+PWvia++IgiCWLeOUKmI994jHn2UKCkh4H38eHgMfNqLjDF+BrW9PTFjBvHoo7oqeelSYsIEXa8iziPiRzidFWpl4U/t7YRKRfz618SdOzr8iG0gJkY3j4AfgiCWLydUKl1z7Y8fgybU0CD/zunr4WqwWZfK/QWMsFpNrF5NEATh7ExkZfU5cRBmEM5qxeqnqAhXPxYQWviBkCAIQqHoxQ9BEK+80vtXseUI57bC57Ky3hlUKoIgCHd34s9/Jv7zHyIsjHB3J/74x94ZxIE4giCefZawtiYef1zi2g96xvgZ1FlZuupH7FusrHpPaCAk1Grib38jXn+deO65PtWPtTWRmqqbRx8/YrMUbz8R8XPiBAH7lewQVz8IWjxNgJAICyOWL9dVOeKVG6FAFs5T1q0j3n13WNd+kDw5Nc1Rt4iQw49YAUNIEAQxYwZB071/DQvTtRmCIFxde6sf/cWFdtXURDQ1ES+/TLz8MqHR9M4gDP0fOUIQw772I7i7W/6dc98YP4Na7FvEVmSAH7HNDFj9CB4mfl55pfeS9tDXfgQLFyyR8XA12KxL5f4Cxln/CAnHT/+v+qO03t7Eu+8S8H6ZLMwgVD91dcTDDxN37hAQEg0NRG2t/N/LTEfdIkIOP1DqzreuLuKZZ4jvvtP9V7+FwPv4AYAoLycefpiwsuqzrJUV8cgjvdWPtzdRXk7MnUv86ldERwcB71c/LS2957ZtbUR5ufz7pK8xfoaylRXxs58RR44Qzzyjm0IQfQ6itTXx0UfExInEU08RBEFYWREPP9xnZOWxx4jf/Y7YuZP4zW9612CAH4ON9q9+duwgnn1WN6W8nGAY+fdMXw9Xg826VO4vYJyHj5/JkwfGz1NP6bx0KbF0KfHss8Tjj+suA4wdI6Wxh5/Jk4kjR3r/a4Cf997TLeXtPcD9svD+4Ju7u66Z/eY3xOTJxCOPELm5BITE+vW6GxYIQtfGhMEZxO6uxPgZypGRxEMPER99RMydS0BIfPcdQRC6z2KbERQXp2tpBgP7jzxC/PijIXKMws+iRbp/hVZkEAAaHq4Gm3Wp3F/ACAt3wVpZESdO9H4WvGdP72xBQb1nrMJfV64kICQiIw3PZMV5IiPl/3bmOOoWEUL46egwbBj6FqqTSZN66x6xhYj/nTpV11r6Lz51qm6elSt7Pwv+7jti0qTeAAZsY/27G1mN8TOoJ03qbS2TJxNr1+qO6eTJhm0jN5e4c6f3vwaPl4rtpLqasLIiJk/u0x48PQdoJMKGDDo0wfrdGjIergabdancXwB7BEZKCOEHe9jG+MEevYcrIrekvr+bWtdAaIWOed6K5Z6TPQx9U/T/yR6Dvhn2uQEPpVwuKC1mWXzIhjJq+wdCq4bmzbK3HH1ryYmy7xODQ8bz8oehb4Z5VvYY9E3Rzw7/+A5MKtTeoorfeC0p1N5VjN94LSn8xmtJoZZl+I3XksI/uGAJoZYYqHUcGD+SwviRFGpZhvEjKYwfSwi1xECt48D4kRTGj6RQyzKMH0lh/FhCqCUGah0Hxo+kMH4khVqWYfxICuPHEkItMVDrODB+JIXxIynUsgzjR1IYP5YQaomBWseB8SMpjB9JoZZlGD+SwvixhFBLDNQ6DowfSWH8SAq1LMP4kRTGjyWEWmKg1nFg/EgK40dSqGUZxo+kMH4sIdQSA7WOA+NHUhg/kkItyzB+JIXxYwmhlhiodRxD4yejtOXTwzft9sRgD9PLjidmlrWY+6ih1opQyzKMH0lZCD+dWjr0blVAfJkF7B9T4hVRaJltDdOOlzONXSQosbyg2lzpjVrHMTR+Pj+eKHuHPuZ88EKWuY8aaq1oZPhp7gCq25XmyHqP6wXnYktl73z07XI1d/QruZxUUdXYbZJDZhx+MvJrR2ZlcLbsCTnmPHdfzIh3+IPkBQfi7PbEdAPaJC3+gVeMWmO3J2are7LsB25M+HuPFNkzfcx5xfEEyx+pkVc/AfFldntiNnukekQUYg/HwmE2ddekE2rnrUNXP/YHb2L8DF8Cfg4EZpp7Q6i1opFVP9t90u32xBy8mCV7yo8JnwrJs9sTs9IxySSHzEKDbwJ+AuLLhr+xcS6MH1EYP0YJ48coCfjJLkfrogiyamjTYvw8+ML4EYXxY5QwfowSxo9RwvgZF8L4EYXxY5QwfowSxo9RwvgZF8L4EYXxY5QwfowSxo9RwvgZF8L4EYXxY5QwfowSxo9RwvgZF8L4EYXxY5QwfowSxo9RwvgZF8L4EYXxY5QwfowSxo9RwvgZF8L4EYXxY5QwfowSxo9RwvgZF8L4EYXxY5QwfowSxo9RwvgZF8L4EYXxY5QwfowSxo9RkhM/BWUN/Z1dqBlwur6dVNkYP0ZJwI/kjh2Zs4vqzLTmETuneNCQ8DvfjJKAnx+8Us19yFBrRRn5tSNYaoPLXYyf4UvAz7KjCSY5ZJnGHDJc/VhOuPoRhasfo4SrH6OEqx+jhAffxoUwfkRh/BgljB+jhPFjlDB+xoUwfkRh/BgljB+jhPFjlDB+xoUwfkRh/BgljB+jhPFjlDB+xoUwfkRh/BgljB+jhPFjlDB+xoUwfkRZGj8M8N6/ysbGZvPJcGMWy9rz+XfVbZS5ohq2MH6MEsaPUcL4GZbItrKkuLi4+JtlDZ2SMzOdDQmFjUPPU3JTuc5LbaLopIXxI8rC+OlMd5i/9ACEMCn8Rg2EEPYUxMXFxcXF5TdACCHUVhfnqxNu3r2rTiiogxBCCIpzs3sobXl+NmBgV1PZrbi4O+nZPTTsaatMiouLS0pp67Fc6YbxY5RQwA/ZWX83QWhkcUWNpIyRSArjZxgquT7lw8W+V+NibkTsUp6VnL3tXuCv1lyRWCXGj9mEFH60DdF2r828e/+/ueEHP1rrHxcXMPfP/4itgBCWLvvnv09cu3E3zP+ZlzaVQAjrriydt1XTXbF3mV1VR8ORrz8OVN046+10Kzf31NfTfS5G+J3Z8KNHimWChxg/RgoF/FSn+3+4dHtcXFxc0O7J736qruqQMZihhfEjJa7b5bPZh/VIwTHtPrs/t7GxefMVxcH0ahq2OL798ncbv/3A5l92q04BtmbbjJf+5+mXP17v0NxdsnfBzE9tbTc6XC3PvvLpB/+0sbGZOmd7ZQ+F8WM+IYUfCGF1kreNjc2cL/ZVa+GZNV8ejIuLi4s7t+Gf6wNzISzd8e36HhpC2Hj4zT+cuNWuPvLhSucUClbuXWZXlebxid0ZXedRevZ96y9D4uIiLrpNXO1kseAxfowSIvix+8Ff+Jx9Zf9610TQUrh76Xybd96yXevRDrmWioRVH1rb2Ni89felac3dMoaK8SMl0LJmypdxehO68zzX7z4PIewpC3/513YZHS2ObxMeiU0c1H674tPcLlKv+infsmBOQTsNu0tWTlwQVtcFIQw+sOJoVBnGj/mEGn4E+W74+Nu4XvzExcUVN3Tr4Qe2Je1ctfLQkokLbnVBODh+4uLi4rIqLRY2xo9RQg0/jXkRn+z1B10NmqYuqK1f996iSzUtJ5esdS5tgxDmBKzZ4mSubmE4wviREmj5eurSUL3erC1k3dcnoiGEkMlbTLx9p6XF8W0itAhCCE/s2pbe2Qc/u9csbeqBUHN34lOrhAxOu3j4QEgRxo/5hBR+CvwWHw2IV6vVm5d8mwhhvPPG9zeHqNVqtVrd2MXo4wfC2k3//f2Ta0MghDr8dNz7+r/TrsYmXwlwTciO2vieIijijlqtzq9usUzwEOPHSKGGn/IkjwV7L5G16k+mvWv96stPPvZ3/9zqVYo1cRBCCBsLfXYcNOqOGBNLTvyUVbf0d25x/YDT9a0MzbXgtR8203P967MOlnZDjtYGhIZ31/gu/uIEhLD2lvKJFzZXUgPhZ4Zw0nofP3T5uude81C3QQhPff2BX3qtLPiR3LEjc16J9CGzpEurmgvKGgb76wKHeEvih2XakiJUKpUqKbMCQghhl1qlU0kTCWF3XlYWy+lmLkq9kVrZAyGEsKcg/a6Whk1l90JVqsibd7so2NVUeF2lUqlU0ZlVlgke3sfPdu80cx811FpRRn7tCJba6JqMEn4KN3340YW71Vme3/wQkEK3ls/75/v+5W3KT+duim6AEIbvfHNPQKqMoere+XYs0SSHLLNAM/yZx0j1AyGEMFW5yNra2vr1fzlF5EPIRB7+1tra2nrKV5UQQtjuv8Q6vhJCCP2dT+Z1U0Kl0y0AACAASURBVBDWHn7n3x+u2NHYVemyf0cb0K1jhbW1tbX1asd4CsKqtIuHggssFj+ufkTh536MEq5+jBIK1U99XvjMydaCfLMghLCrrmDJVGtrG5s1U78Kr4MQFm6ztra2tlZsDJbzyg8efBsnwvgRhfFjlDB+jBIK+BlDwvgZF8L4EYXxY5QwfowSxo9RwvgZF8L4EYXxY5QwfowSxo9RwvgZF8L4EYXxY5QwfowSxo9RwvgZF8L4EYXxY5QwfowSxo9RwvgZF8L4EYXxY5QwfowSxo9RwvgZF8L4EYXxY5QwfowSxo9RwvgZF8L4EYXxY5QwfowSxo9RwvgZF8L4EYXxY5QwfowSxo9RwvgZF8L4EYXxY5QwfowSxo9RkhM/NfXt/Z1f2jDgdH27huVh/BglAT+SO3ZkLiiTPmSWdHVdW3FF02B/XWjZd76NdQn42eGbbu6jhloryiyoHcFSm9zkf+fbGJKAn8+PJZrkkGUVaoY/M65+LCdc/YjC1Y9RwtWPUcLVj1HCg2/jQhg/ojB+jBLGj1HC+DFKGD/jQhg/ojB+jBLGj1HC+DFKGD/jQhg/ojB+jBLGj1HC+DFKGD/jQhg/ojB+jBLGj1HC+DFKGD/jQhg/oj47nCDsDezhG+NnmML4MUpjGD/Yxnr4x8YoodZxDI2fkNuVsh+IkXnGruhZu6Nl2fT1tBpzHzXUWtFo8INtlMcYfoQBATQ9c1e03R55+oih/dXpO8M/NkYJtY5jaPzIooz82lGuIau8dc7eGM/IIpPEU9fUaZL1mFCotaKR4cfjeqHsmT5wv7Q7epbcMQzm3f5qkxwyC+GH5fhuQFvGrZ2guqFjmDNnl7fa7Y25dKvcrCGlZNeMYClAscM/NkYJtY7jwcNPD2B2nr3ndr1wk0dqXlXb6OPB+JHUyPDDsJyZsr5C097RTY1s2fo27VrlnX0BGaYNqaC8ySTroWjTdE0Wwo8lRdFMS3vPMGc+H1+62ilp3/mMjh7KfCGNLDHMJ9Q6jgcPP9Hq2pgMjX9saUZpy3FVbg/JjDIejB9JoZZljS1dLMuNbNm4zLqvTt/ee15dUG3KnYxaXz2u8dPeTTmF5u08ey8ivcYxONd8IaGWGKh1HA8YfmiG+ykwsxsw/rGl9a3ayPSa1KKmUcaD8SMp1LJsxPhp7SI3eaS4XS+8ldvgEVFowpBQ66uNw09jS1d/F5Y3DjhdLtc1dlTUtkrP1tS5x199J0ez77w6raDhUGBGVHqNmULKLKiVfbfou7iiSfYY9F3f3FlW3SJ7GPrOyB/hIWto6ToVnHsjraqxpcs1PD+vvLmoquXghcy6ps7RxFNa1Sz7PjEwaq0ItSwrq26pbzb6oGsaO48EZd/MqHEJy7ubW+dyNS/6nsn6JdT66uxCzfBnJliW6++K2tYBp8tlLaCbWrslZ7ud13Dmaj7Dck6heXmVbTTDngrJa+8mzRFSVqFG9t2i7+q6Ntlj0DdFM/XNnbKHoe+M/NqRLciwnJZkGJZjWc4vuqS2uUd/yoitaeiQfZ8YGLVWhFqW1Td3UjRj7FI5Fa1BieUMy/lEFRdUt1E0u9PvXmOb1iQhodZX5xbXD3/mB2rwLSG7vqOHhhB6RBZlV7RCCAtrOkY/Rj+gUBsWQG3YhH2wBt9ECYNvo18PxINvwxBqWdY4osG3rPLWxnYAIfSLKS6q7YAQ5le1l9aZ5uij1leP32s/HM/zPA8hvJBQPvqh+aGFWmKg1nFg/EgK40dSqGXZyPAjSsSPCYVaXz1+8SPq8q2KuwWN5osHopcYqHUcGD+SwviRFGpZhvEjKYwfGJOhicuqM188EL3EQK3jwPiRFMaPpFDLMowfSWH8wJtZdbGZ5m24qCUGah0Hxo+kMH4khVqWYfxICuMHZpa1hKVUmy8eiF5ioNZxPKj4cbte2NQBRr8eiPEzDKGWZRg/ksL4gTmVbVeTq8wXD0QvMVDrOB5U/LheK2ztJEe/HojxMwyhlmUYP5LC+IGVjV2BN837SxCoJQZqHQfGj6QwfiSFWpZh/EgK4wc2tGvPx5WaLx6IXmKg1nFg/EgK40dSqGUZxo+kMH5gp5b2iSo2XzwQvcRArePA+JEUxo+kUMsyjB9JGYef9k5tf5dUNg04XS43t3XX1Lcbtcip4FyzhpRVoJF9t+i7rLpZ9hj03dreU6Vpkz0MfWfk145+JadCcivqOkwST0VNi+z7xMCotSLUsqxK09ba3jPixU8G5xZWtZo2JNT66pyiuuHPTHT1kP1dWtU84HS53Nqh1TR0GLXI6dC8zm4zhpRVoJF9t+i7vKZF9hj03dEFquvaZA9D3xn5taNfyenQvOqGTpPEU6lplX2fGBi1VoRallXXtXV0gREvfuxydqWR/ZikUeurc4rqhj/zgzn4BiH0iCjkeN5M8UD0hgVQGzZBc/Ctra2tdXTyjcisrG0Y5UoEVVSb971QIxBqrQi1LBvl4NupkLzmTtPctS8Ktb4aX/uBEONHbqGJnyuRd7zCMxDxnZRMuXeJoVBrRahlGcaPpDB+IITQ60YRy2H8yCY08RN4PfnM1XxEfDs5Q+5dYijUWhFqWYbxIymMHwgh9I4qYrmRNxRJoZYYqHUcGD8YP6MXalmG8SMpjB8IIfSJKmZG0VAkhVpioNZxYPxg/IxeqGUZxo+kMH4ghNA3uoRmMH5kE8YPxs/ohVqWYfxICuMHQgi9o4oxfmQUxg/Gz+iFWpZh/EgK4wdCCP1jSymaNVM8EL3EQK3jePDw8/XW7dt90jB+LCnUsgzjR1IYPxBi/MitBws/uUc8w6dMe99+u98+/9RdypjjV/PPBN3a5Z3shPFjTqGWZRg/ksL4gRDCgPhSEuNHPj1Y+MnZf8LrHZu3Zqw5tM0tZtbkf727/fLqaTbvb4s/hfFjTqGWZRg/kjIOPxTN9Hd5TcuA0+VyVw/Z0Nxl1CL+MSWdPZT5Qsoq1Mi+W/RdqWmVPQZ9awFd19ghexj6HuXg28JP56x3uXPmav4ZP9e/TXh+guKH0Q++yb5PDIxaK0Ity+oaO7SAHvHijqrcupZu04aEWl+dW1w3/JmJlvae/i6uaBpwulxuaO6q0rQZtYjPjcLaxk7zhZRZoJF9t+i7pLJZ9hj03dTaXVHbKnsY+jYZftzdXrB65fmFh0aPH9n3iYFRa0WoZVlFbWtTa/eIFz8SlFVSY+KkQK2vzi6qG/7MD+zg28XEci3FmCkeiN6wAGrDJg/W4Fv+mav5ny2YPn9nwKELdz+1fWPhyWT7t/4+fXcKvvZjVqGWZXjwTVL42g+EEF5KLO8hMX5k04OHn8NeV5avP7DxTNyX+y+fuJp/xj909e7QExg/5hRqWYbxIymMHwghvHSrogdg/MimBw8/JjfGj6RQyzKMH0lh/EAI4ZWkim6MH/mE8YPxM3qhlmUYP5IaX/jhOY7nWJ6leYbiaa1oVWJJV2dn7xSG5BmK5xieY3lT/BADaomBWseB8YPxM3qhlmUYP5J6wPHD8zzf3cxWpTO54XSikoo+TEXsJYM3kZe+Ic8uAb72gq857Wj1Xir+l7ywmry8nrq+m4pyoBPPMNmhbPkdrkPDcyN8Ngi1xECt48D4wfgZvVDLMowfST1Q+OF5nmdpqruzuVhN37tARewFHrOBUtFrZ1vgbAtcpwPX6cBt1qB2nQFcpwPnqcDZts/iSgV1dRt9252tVvPadp6hhlkboZYYqHUcaOLn5s2b8aNTxI2YuLhRrkOn5PQcuXeJoVBrRahlGcaPpB4Q/PAMyVal0Xc8qdCtwHNuH2b4LqJCt1KxRxn1RbYwhi1J4DTZXF0e39U4mLmmUq4ujy1LYovjmaxg+uYpKvxH4PdZHxq5zSQvraMTlWxxPN/TNnR4qCUGah0HmvgZ/Ur2ns+gGNO8TaOuqdMk6zGhUGtFqGUZxo+kxjB+eJ7jacA1FNGxx4DLtPv1zVTgPpu6soFJ9mHLkniy25SbZGm2MpVJ9adCNgPPj3s3qlRQ13ez1fd4WssP9LN1qCUGah0Hxo+kMH4khVqWYfxIakzih+dYrrGIuetJBqwUqUNe/JJOOM0WxXIdRnylkcegbWNLb9G33cngTcB1hhAGeXYJnXCarUzhGUp/ZtQSA7WOA+NHUhg/kkItyzB+JDX28MO111AhW3oHwdzt6BRfvrvZkjEYiCe7mMwrwO8zMSrSfylblSbOgFpioNZxYPxICuNHUqhlGcaPpIzDT11TZ38XlDUMON3EbmirzbxVf2VPj8sMoFQA70+o2GNsZSoc6d1ophfHcpocOsmVPLccKBVapW1zwMaaO1frNI2ZBbWW2EXDdlF5o+wx6FvT0FFa1Sx7GPrOyDfBIdvuk1ZV126SeIorm2TfJwZGrRWhlmWlVc2aho4RL37wQmZ+hYkPuoX66mE7q1Az/Jnlq35Ymo4/CZRThNqCvuVs4os6JhXPsUzmld5KSLUhJ7dU7qD6CLXzVlz9SKoOVz9SwtWPpMZ29TPgVLN+JZ6lmZyr5PnlQKkAXvPpW85cS4X5NmdC8T0tTHogefYzoFT0uM1mUnx52sSNacRCrePA+JEUxo+kMH4khfFjhHiqm4rYA5ynAqWCDFjJtVSM+MFPWcTzPK9tp67tBEoFcJ5Cnl/OdTbIHRSE6HUcGD+SwviRFMaPpDB+hiuuvoBUfQeUCuC9gEk7h07pYKx4lmZLE8nAlbpbEorjZYcoah3HmMYPz9J8VyPXXsPV5bFVaWxJgug97jHawvv/LbvNaXK4phK+q5FnSGPjwfiRFMaPpDB+hiWuLhd4fwKUCuD3GddazfMjP4ooiOd5HnRQwd8BpQK4TGOyguWNB7WOY8zhh9e2s2VJdKKSvPgl8JgN3GYBt5nAdTpwmaZ7s4azLXC2dTnk0OU8/f5/pwLX6cB1BnCbBTxmk0Ff0zdPMUVxw7xpE+NHUmMUPzzVw2my2fI7THoAnXCaCt8h+MTps3XB+8T/UhF7mNSzTFYop8nmtR0jCwnjR0I8x7FFcaSvPVAqqMj9vFbihQJjSDzH0He9gbMtcJtJ3/UewSmwqYRax4E4fnhtG1uZymSqqNijVOhW4LOgz2s13GYBX3sycBV56Rvq2k4qYu/AvraTvLyevPgV8LUHnh/3WYP3J+Tl9VTMESbtHFuWNOAILcaPpNDHD9dey9XlskUxTHoAHXuUvPIt8Jpv8Fov0YUnF3WemTrYX4Hnx+TFr6gbB+gUXyY/kq1K51orJYeIMH4kxNWogbsdUCroOEeepU24ZhTEcyxTECW8LoHJuCRXGKh1HMjih624S4XvAO52+m+4AEoF8JpHXd9N37vA1efxZJfhW9IHNsMzFM+QPK3lqR6uoZDJDqUi9gCfhX1fSzgVuNtRodvYstv67R/jR1LI4odrraITnIDXfF2JbPAmSe8FpGojHX2Ivu3BFsawFXcHduktOtmHTlSSqo26W7F6PQW4TANuM4H7bOraLrbq3mAhYfwMJa61UtizdOxRntaaarVIiec5JisEKBXAcy5XlSpLDKh1HAjhh+e4pmImO7Th0o5eMLjPJq9spG+7s/mRbE0G39Nikp/huL9Fnu9pYWuz2PwI+o4HFbIZeMwRqyIqYh+TqeKaS+sakBsGQK0VoYMfnmO41sp29TUy9jgZ8IXuiRGXaaT/MlK1kYpyoO94MvkRbG0m390MR9SWeNDJNRayhdFMih8dfZgM3kSeWw5cp+se9vD7lIo+zOSEcU0l+m9gwfgZVDwNyItfA6WCUm18UNkjiGdp+ra78MoGy7wiyECodRyI4IfraqIj9wHPueL5KRnwBZOp4rsaearblMgZRDzP81QP39nA5ISRgat7X9PuObf10la+3QQ345lQqLUiJPDDsUxxPHn5W+A1D7hM096vb+jb7lxbNa9t46lunqVNfPrCMTzVw2vb+M4G5l4g8F+q33LIC2uY/AgBQhg/g4rNDQcu08jzK/getPaRmUSF/QCUCjrhtOU3jVrHIS9+eJZmq+9RkT/pktZjNhX2I5MRJO8TZjzPc62VTJaKurZLfIk7dfUHtiyJp4z7MV8zCbVWJC9+uNZKJlNFXtCdNJA+C8nQrcxdb7Y2y/J3unJNJUzqOSrsR/LsYl3t5fspk+xTn5ss+223+kIGPywtjHWw+ZEWOM1EQZwmBygVwGU6r7V0GqPWcciIH66lggrZAtxmCmeLdKKS72riWUp6SUuJZ2m+u5lO9tXR0WUaGfQ1V5crd1zItSK58MNT3XTCmd7fefFZyBbH8z0tPEPK25XxLMVr29jKFPLCl0JsWrdZVNh2Dpky2jj8VGpa+zuvpH7A6Ua5LsoVKBVkyBaE3uFmfjF3vYBS0Ry4qbK6afT7cPjOL22w5OYkXVHbWljeaOmNFuZrwo5rhXE2X3s6yY3rapS7RQwlXttO3/EQLzvXhRyoyM2U8aih1ooy82stusXa1oqi4sob3p2eC3VFc/hOtigWqfJCFFujpqIOCk+zdLva1V49WpGbVVnbIu8hyyrQDH9mc1U/fHcT8LUHrtO5ppJRrmpsiWdp4GsPlArWsiezqJ23Wrj64XmOKYwGXvOFW4boJDe+p3XAH2pCTTzP8aCDuXdBd3XKcy6bd12uyFFrRRauftiaDPLc57qhtsvruaYSxO/U5TmWa6+lY4+Jv8PJZIXIGxISg29s+V3gMp180O84GFBU3HGgVNC33S1Zp6PWcVgSP7y2jU71B24zgbMtpdrIVqRYZrumFddUSoVsAcopwGUqnejMdzWM7Aaq0Qi1VmQx/PCgg05yFUZryYAv2MIYy2zXVOI0WWTIFuFlZnTkPhnH4pDAD53iK1yEHydXffTF5l0HSgUZstWSp0419e331Bl3kZE6I8sy+OF7WinVRuHxGkYdxJPy3243YvFUD1sUK1y1Ii+s4TrqLBzA+MQP11xOBqwU3mTBpJ0fo/dJ8bSWKbihu17la8+WJlr+9AUigh/h5+PY4rhRrmcA8WxJiMOf3razs1u0N7CEgrDY8e1doUVDL1Tu+fFS70zTBzOQuJZyoFSQvvaWrPxq6tsjo2LOXM1HxDExsebGD8/zXHMZGbgKKBXkuWVsRbJZN2cxcbVZZNBa3UBcbaYlX0817vDDc1xtJun3GVAqyMDVXK2Fugjzieusp0K3AeepwG0Wkx1i+cFDJPBDXlgDlAqupXyU6xlALOm4dNGJPAghqCpqvHfl4MRnHn3q+ReX+FdmXvHxj/GZZj3vRmfc3m8PAwZ25kcoVnukJHi/9ecJjz/7wiJlandpwpyP3rK2nhpQYK5TS54GQKkAHnMseTftOMQP11JO+i8FSgUVsoXvapLlXM9M4rXturvGvT/h6vMttt1xhR+e59i868B9NlAqqGu7+e4W823LkuKpHjrVXxgPoG+5WPjNzmjgx+8zoFSYp4zlckJP/ufFGa6qyJIuCPWqnzse6/721tEqCCG8scpufQ8N2+4FPvPhT/V61U/4wU2Ho81+N4QwfmLJgaDxhh++s548vwIoFVTo9/L+LruZxIMOKvqg8Jgh11xmGbiOK/ywRXHA3Q44T6ETz5hvK3KJyQ0HHnOAsy1zx9OSd+6hgR9fe6BUmO/xl7ZKdazH9mcmLsls74OfNVeEF5kMip+O0tgl/3nn3XmrK1rN+CAIcLPD+DEffniySxjdpUK2jOmLPUOLZygqygEoFdTl9Za5IDF+8MNWpgC3WUCpoFPPjt1ffhlCPMewlanAdQZwnsqkB0JLDeGigZ/AVUCpMMdD5jzHlFfXQAhhd8oM4g/R1bDY8e3tl3NhH/wkLrNb3UVxpZGnnvzvPgE/n7mkikfglsc3a9zNNc7LsxRQKoD7LJ6y3M+HD4afvR7R6w/4vjvdfs0O5/UHfE8FZ783a8mAwFj41a7PNx8bE/hhcsKAcgp5dvFY+Z3cEYtr1wi3AtO33S3Qg4wT/PDdLWTASuA8hY4/aY71oyMm8wpwnQG85lnsoWYk8EMFbwJKBVtxd5Tr6S+eo4Md19nY2Ni88f5a/4IeCLXVzu+98NrXQTV6+NGeWj/73f+8u9J+2RMfONRDCDT+H/7x1S+81NfPrLexsXlv5oKkEnNlGtehEZ6U5imJWw/au01WgQ0fP//vN0/99ZU3/vrKGw5+CeJsb380d/vp0C3Hg2w/WYM4frj6fOAxGygVbGXKg3S9ZzBx9QXAbSZwmWaObDJQTX17bl5+GjJKuJ1mjq9JxxzR1ZRghL+yM1bEMyQddwIoFWTQ15BjLLBFJPBDJyqBUkEnuY3HG6+LYoFSQao2DPaiF4blsitaj17OvpJUaar9M8TgG0EQv/3Dc3+a+Prf31ZMfP2d3a4Rm44E2C3deOZqvoNfwvoDvn995Y3drhHCzBsP+f/1lTfWH/A9EpCMIH54hqJCtwLlFDrByeQrR1b0HU/gbEuqvjP3MFFNfXt8fLyZxmNH4MgoUz9/w/NsaaLu5fRyvBrY8uKpHjJgJVAqmGQfC9xFiQR+2NJE4DKVCtnyQI6rDi068QxQKuibpwZES1l9197zGZdvVdS1mvK27GHi51Rwtt3Sjau2Owl/EvDz9W43oR4SvNs1Aln8cM1lwHMu8P7ELDdVoiqusx6cXQzcZnJ1eWbd0AOPH54GVOg24GzLZF427ZpRFleVDtztSP+lvPnfQWUcfoorm/o7p6huwOnDd0VBfo/XJ8DdjmurNt9XRVA8SwvnGpq0Gwb75E52zcGAe58fT7gQW3gjuUxworoqKaO6v1NyajIK6/o7a5BDk1tcNxh+1h/wFfCz2zVi4yH/T1b/+I//TF1/wNfxcob5Oo6YmNi8kvpRtqL+rg8/DpQKKsrBYpdSERF91xsoFQ2q3SbfpQatKCY2Vnbq6OPHtF+wNDOtx3UW8F004O/PPqjiGZIK2aJVKqoTgszafoormzILaoc/s9neeM3zdLwjUCromw/4xT0DMfmRQKmgLn7Z/4e3S+s617vc3eyRejW5Kjy1Ojy1Ojyl+nx8mX9saX+7Xis8fTWvv08G5+49n9HfP3inDoifzzcfW7Xdae4X244EJP/gFPLlThdh+qrtTicu3RM+v/qvDwxsEvyYvvrhGOEFi2y9eYsABMV3NwNnW+A63ay3wD3w1Y9w1YdO9hkPVw31xRbHA6WCvPiVuTeExOAbhJAHncKPPLJV6ePkChDfrgEu04DLVLZGPdg8Z2NKlGH5tS09nEn3yRCDb888/6LgCU88+bTVX4XPUxd+Kc7wrw9mG8xvgo7jRoxreL5/bOm11Oqb2XX9nVzYVKLpLO3nyoYuhh24shF+z4I8u9iE+61XnTVqtVqtLugY8jlx0FVfUi3P84nUlW+BUsEWx5tvE4Ph5/D5O9+fvDLdft2Xu1y+P3nlxCX1YOcon28+9uk3+xHBTzegOa43y3iqB7hMA862XLs5bqij6irLKBRfjQ0hhJBjhBt2uOYys24HFfxACOkUP6CcQl3ZgMivaZlbVNwJoFRQ1/cOMQ/H8WV1nd43in2ji7uByV6JMfRzP2t2KI8Hpc/9YtvL/3y3f31jDvxERcdmFjdWNXYX1XTkVLb1t7q05XZeQ3+nFzeT9MBJzKiDgFJhlptlu0t3fzBx3QmVSuXkdVY9xB1CXU2FtzKrTB/AMMTcCwRKBXPb3XybGAw/+7xiVm13+u+MzxZ9vWfVdqejgSm/fvy3QkPafjpUnM32kzUbD/lvOhr4nt3AN/dbGD9XkiouJpSLzUm46YC8sGZ0O6nO49jB1h4GQggbop1PxpAw++g3O2vbS/cus6syxZ10JcE/hmaYfmxQeIaMSQ8w+Zr1hRB++O4m4akFKuF0/8GoB0k8x7IlicLwCNdQIDk/x/E3s+uvpZrswthg+HHwS/j+5JUP5yzfcPCs8O/3J68IPnklU5jn0ccmiBXSM8+/+NAvHh59x2GOwTcmyRUoFUxWsGlXCyGEnTnzf//m2Xst98uu8p9WfbbZVjFp4uurvJJp2OW/xO7LTWvfsl53Ld3/W+e46vTg7U6HVli/+vyTHwXUdUHYE71r/sRJ1s//YcKzCx1MHx6EEEKmKBYoFXTsUTOtHw45+PbEk08//ts//P7ZP/910puT3nxvj3vUTudrAmaOX0z7/uSVZ55/ccvxIGHmnc7Xnnn+xe9PXjkamCIjfliOj1JrdvilZ5e3kjTLZF4GSgUd7zi6nVS63v5jjVAjl3uuWerdo6t7Kvcum56akqtWZ9W2C31dd6larVarixu6IYQM2dnYWFugztK0dzSWl9WWFavVmTUt3RBCSHcUqNVqtbqmk+9qrDy/8Y1NLuElTSSEZJVarVar1abAGlt809ztByKFHwgh11gk/AoLneSG+I9njFg8z7OFMcB1OnCZxhbFyjKsPBh+djiHr9ruNKDFaz9bHS/rL7L+Jx808UNFHwJKBVsUa9rVQgghpMuSrq6Y+toMu43qNghh+aa5M5M1WqY5e9Y/7BNauvyXTNx2royCsFqHH/+Fa91bIJvns/rlr66Alhv2k7bWMPC28xcnbhSaITwIIWQrUoqdPvV28/KLKTaVYzI08Vl1olWJZdExA9968MSTTz/7p4kv/v3tP/7t1aOBKfNW/SAOsh06d3vVdqftp0P1Lx9uOhq4arvTAd+E0bQik1z7ae4gQ+9WHb6UXRzuCpQKJtV/dOvrj5/yvcvsqjoq1/77hZ9cz3sf3/nOytPNkExy/eLzLR4q1SH76V/VdMLGovDp/553RhWep8nfMflv3zl4nvNysF17BEIy5vBpJ5VK5bTppY/cc0vSj30+afke16SyzoKoE1NWKFUqpcLqrZRR/4QCW50OlArq6vejXdGQQgs/UHi3kttM4DyVybiE1G8em0Q8x7I1GcDzY6BU0Hc85QpjPLx0R7iZhS2MNu1q9VUbvMrGbkc7Vb57zdKqDgjZ2u2vo590jgAAEEZJREFU2oVquvyXTDyTBqEefr51joMQwrQzE5f4d9F3lj8/8+pt9c5P/3kpw1xPk7BlSfWnZ+ddOlZU22EqR6bXhqdUiz4XXRQVPTB+fjxzVah+xLrn9Xemfn/yyvGLaeZrRZFRMV8r74zeq51uz9kXs3x/cM7JxYw6aHTHoXTJqxNenvSqtbW19cRnp+vhRzf41lO28qXpQYWVK95Y5qdWq9XqnzbMjitobiwK+e6ECkIIoebgHOukash01s37bGM5hFDbolar1bEeb/xKca8Nph9770R0OWSB81frnNRqtVodstla8qX+kuLqcoHLNCp40yjXM7SQww/P0kxWCHCdDlym0rc9HqRROJ7n2PxI4aW5dOwxGR+iHhf4SfEDSgWTHmja1UIIeyqSD0dWQQhhvtPs+Q6dTPma/0wOKW5pL4l/660vsnqk8JPnYz3nB29v70shGeZ7zxKbH2mKsaOhNNjg28ZD/gu/2rV4/YG9HtHf7Pde/eMZYfri9QfEd2f864PZBjYJfkb/pZo7SZfwAr+YkpLrHkCpoFP8Rre+QasfHX5AxdqXZwTll9v/w26Ht7e3t7d3YHBdO9kfP7Cnaema3eWsNnTPpuVHvL1PbXtJHz8MOLlq2QZvnUY//sZV3wNKBRX24yjXM7SQw48gtjheuBGOuuHAk51j/l44nudpLZPqL/xKFW3OC8LDUU19+42oGNewbEQcE2t6/LBZwUCpoCKGurNjpOo4u/hlKysrK6sZCU0QwvLdn03+5I1/WVlN9s2thbAneOMHftkQQqjJVu31vyP8CyGE2X4fbAzu7Gk9MO+3z1lZPffX1/ZfSTVDeBBCSN9yAUoFk3rWTOuHQ177+dPE15948uknnnz6sQlPTHjid8LnyVPmizP89ZU39Oc3ye37o8SPlmRiMjQb3VNKNJ0QQiYrWHgefHQ7aVD8rHn1b4cjk1PDPf8+d28dbHNb8N/Vyjvl5eUV1bUkww2KH9C6zm5lQHl5uuqn3/5Kca8NZjnP2OAUVtehjT7xlc3OuPLy8vLy8k5ytDfVsYXRQKmgYo6Mcj1DC1H88BzHVqQIdyKQF79kK82VpZYR11pBXf0BKBXAfTaTqZL9N8Vr6ts1Gk0tOtJoTI4frr0WKBXA3U7yZXqj1v3Bt+Epz2fJpM0RNITNpdFLNx80U0zCjxuZ9SfRhn7uZ+Mhf+Eyz6Q33+tf3yCIn6t3q25m12lJ3Z2MbOktU9z51pl8M7aH4iCEsKvodmIxA7syEmO6qe7cxLioSxe8vYPyhBsKYGO0t7e3t7f/pavN3QzoqErJrYQQQtiTFRPS0A0hAxJvq7sgbClO9Pb29g4Lu+0f2UxBhioP9vaOzO+EsCPpfvVT1DjaQSMq5jBQKhj1xVGuZ2ghih9BXGc9efFLoJwi3EE7Fn/Xlqe0THYIUCqAUgG8F7CVKXJHBCF67ypmWc4cL90hL34FlAq20Bx3H+ir2nH7d7VGhN9wYKqVlZXVxH99EFtkthetKhXAfbZZXxw5GH6OX0zb6xE95/PNGw/5L/p6z5e7XPZ6RAsW353x84d+IZREgh/6xS9lx4+BeBoAl2lAqeA6zf7uGdTEs4ww+GTul8QjjR8IIQ/a6WRf4DEbKKeQAV8w6YE8abkfJhiNeJZhi2JJ1UbgbAucp9DRh7lWeR4B6a9xgh82PxI4TyEvr3+QriBKimcZKmIvUCrotHNm3dBg+NntGrF4/YEBLV77+Xq3m/4i3+z3Rg0/EEIq5ihQKuhEpWlXi77YkgSgVJABK839tirj8JNVqOnvzPzaAaeb0IX3UrvOfg6cbYVfFGZLEniGRPZNGDxLcw2F5KW1QtGj9ZxXejPY3LvIKGcWmP2QoRBSQUZml9ci4D6b02TL3SgsJ66hAHh/0u0xvyAz09yHLGaQG69lcWRUjKnbT4bWZTrwWchr2+Q+qpYTz1Ck6jugVFTEXzR31mcYww4Zqp/enUJ2MnnXyUvrgFIBnG3Ji18yqWe5jjoLbHr44rtbmIzLVMgW4fezSf8lTPp5vrMhy5w/AzwCjZPqh+c4+uZJoFSQqo0886DdxD+YhNKHinIw95NzD/w733iGpEK3AeepTOYV064ZZXHVauAxmzy7mO80+29MoD74ZiCeZZjsEOA5DzhPFWoL6vputvoeT2t51hK/jzRASBzL01quoVB4QSFQKoByCnCbRd/1FG8xwPgZWmbCD4SQp7Wk7yKgVDDJvhb4/RJ5xfM8k3sNKBXAzY4zf98h4Mf5ai4iNv3v/UDIFkQJN7BwPeOiAOJZhgxcDZQK+paLBTY3xvAjiCc72dJEKvqQcH0MKBWk7yIqfCeT6m/JYRaupZzJvELd+In0X6IDj8tUKnQbm3fN4MQB42domQ8/EEK2Kg14zAHudkzxTTNtAhGx1enAYw5wncEWRFlgczX17TU1NZXI6G56jsm/I88xVNRBoFRQwZvG4q1PRolnSOHnx8hL3/CkufJRX2MSP6J4GjA5YeSFNcBtpu7KkFIBPD6mb55iym7zXY08reUZiufYUT05xPM8x/IsxdNaXtvO1mTQyT5kwIreWsd1BvBZRKf4DVauYvwMLbPiB/Icc9sdKKcAt5lcY/GYf4ZsIPE8z3U3k772QKmg405Y5oVVqLUiM2UZr20nzy0HSgWVqOQ5ZF9SPVrxPM/khgGXqcDdjqvPtcxGxzZ+RHGtlWxxPJ2oJANX3qeCAigVwO9T8tI3VOQ+OsmNyQ5hK5LZ2kyuvZbrHOqiEc9QXHst11DIVqYwudfou97UjQOkaiN5djFwnd67cl97KuogkxvONRQOnfAYP0PLvPgRTusSnICzLfBZwFaN7WfIBhSnyRFKcOr6bh50WmajqLUic2UZz3NCAe08lU44LftDe+YQz7FMThjwmA2cbZmsYItR9gHBj77opor2JH/yygbh+r+J7TKVvLSWSfVjjXmgD+NnaJkbP1C4jBy+AygVwGUaW5Vm1m1ZWHx7LfCaB5QK8soGS3aOqLUis2YZW5kiPAZE3/Ew31bkElsUK5xY07ct+u0eQPxQNNPS3gMhhDzHdWi4mgwmP4JO9qFjjlDBm6ngTeTZxcIwxaB2n02eXUxe/IoK3kRF7qdvuTC54WxFMtdWM7IbqDB+hpYF8AMh5KkeOlEJXKcD1+l0sveDcC8cxzLp54G7HXC2pSL28d3Nltw4aq3IrFnGcyybHyk8gEhFH+a7HpBnUXmym0k5K1y8oJN9LFzbPdD4QUYYP0PLMviBwiBDeqDudpXAlVxXkwU2aibx3S1k0FfCd6FvnrL8nZ+otSILZBnXXgu85gOlgjy3zDIX580rlqZCtgiDOkxOmOW3j/FjCWH8DC2L4Ue3uap03Z0jPguZtPN8tzy/hz1i8WQXkxGku9/y7BI2P1KWpw5Qa0UWyDKe57nGIlLosj0/ZtIDxuqlII5lcq8B/6VAqSD9l7HF8bLcVYHxYwlh/AwtC+MHQsjTgIrcpxtr9fyYLTT9IyNmEqfJJs8t0xVwqo0y3g2MWiuyWJbxHEtHH9IdAs+Pufo8y2zXVOK6msRbtMiLX8n4TgeMH0sI42doWR4/EEKeY9jCaPLil8It++Tlb9mCG7wWrcYsigcdbEkCdfUH4Q28ZMBKJidM3vuAUWtFlswynmXYghvkhdVAqQCuM6gbB8bE/SxcUzGd5Aq8PwFKBen3GZN2Xt4hxLHxzjdjnVkgfwz6NurVRhbZP2jFI2dIueWl8Ze1ztOAUgGcpwCv+cy9AJ4G5ks5Y8XTgEkPAD4LxCfbKm94ZeWUjd9DNogtn2XZOaW1YY66xuMyjQxczdbloPkuSq69hrpxALjOEJpQ46Xt2VkFWYUyH8Ex88634QtXP5JC7bxVlupHXzzoZO5dIFXfCTfXAq95VMQ+JlPF1eXJgiKeBlxDIZOpoiL2CeeqWuepZNBaJu0cOs/eo9aK5MoyrrWSvnkK+CwSXkdJBW9iskO5phLZb63kOYZrKWfyIqiwH3UPLHrMoaIcuNpMRF5AhQffLCGMn6ElO34ghDzP8yzF1hdQ4Tv13mcxHfgsZG65mPuHT0RxnQ1Mkhvw+0w8UQVKBRm4qi7rFs+QSL2yAbVWJGOW8TzHa9vpjEvA42PxTSik/1Im1Z+T4xZtHnQw2VfJ8yt6XwfjNoOOP1FbWoTUixswfiwhjJ+hhQJ+RPE8z3XUlcVepGKOkIGrgYvwnosp5IXVVMQ+OtmHybvOVd/jWitHWRjxDMW1VnG1mWzBDTrVn4pyoC5/oyu/lFPI8yuoGweY7BCBfHVNFnqXwfCFWitCIct40MkWxlA3DpDnVwhX6YDLVCpoLZ3kxpbf5ppKzXSthWdIrq2aq1Yzaecp1XfAbdb9N7MsosJ3MPcC+Y46yPOo9dUYP5YQComhL9Q6DqTwIygjv5bnOCGr6dsepM9CvQeTpwCXacBtJnCfTQatZe56MepLbHU6V5c7BJB4juWaS9kaNZN5hb7rTV76BnjMBm4zgct04Dyld+UeH9PxjlxzGU8D/RNVjB9JoZNlPMfyNGgvzyFjTwDPuboj6zwVuM4A7nak/1I6wYkpjOF6RnXHP08DtvQWk+JDXlp3vy1Nu78tW+r6XrYimad6eJYRi2bU+mqMH0sIncQQhFrHgSZ+9P/LMyRXl8vkR9C3nKmIveSldaT/Uv3xsZHYeSo4u5gMWktd300nnmHzI9jaTJ4auOli/EgKtSxrbOliWY6ntWxFMp14hlR9R55bbvgmMO9PqNCt1PU99C1n+o4nk3OVzY8c0Ex+BJ3qT992pyL3U2HbgcF7W1ynk/5LycvfUDFH2YIbg10gRK2vxvixhFBLDNQ6DvTxoy+eY3mqh9e2810NbLWavutDJyqpkC3kpXVDAcllOnlhDRX8HX3zFH3Hky2/y3fW89o2nurmOemHRjF+JIValgn4ET7zPMfTWh508F2NXH0+nXaeitxHen8yutMXWyrsB/qOJ1udznc28Np2nuoZ+tIOan01xo8lhFpioNZxjC38yCKMH0mhlmX6+BlMfE8rW5XOlt5islRMegAdf5KOOTKwY48xKWcZdRBbfJMtv8u1j+TLotZXY/xYQqglBmodB8aPpDB+JIValg0HPxYWan01xo8lhFpioNZxYPxICuNHUqhlGcaPpDB+LCHUEgO1jgPjR1IYP5JCLcswfiSF8WMJoZYYqHUcGD+SwviRFGpZhvEjKePwU1DW0N/ZhZoBp8vl/NKG3OJ62cPQd0Z+rewx6Du7qE72GAycU4xWSKgdshz0DhlqrQi5Q4ZYky5Ar6/ONOaQ4epnhELtvAy181Zc/UgKVz+SQi3LcPUjKTz4ZgmhlhiodRwYP5LC+JEUalmG8SMpjB9LCLXEQK3jwPiRFMaPpFDLMowfSWH8WEKoJQZqHQfGj6QwfiSFWpZh/EgK48cSQi0xUOs4MH4khfEjKdSyDONHUhg/lhBqiYFax4HxIymMH0mhlmUYP5LC+LGEUEsM1DoOjB9JYfxICrUsw/iRFMaPJYRaYqDWcWD8SArjR1KoZRnGj6SMws//B+L2DscwlAT3AAAAAElFTkSuQmCC" alt="" width="560" height="255" />
软件中的框架,是一种半成品; 我们项目开发需要在框架的基础上进行!
因为框架已经实现了一些功能,这样就可以提高开发效率!
下面是我做的struts的一个helloworld.简要介绍开发步骤:
1.引jar包。
一种很方便的引法:工程上右键BuildPath-->Add Libraries-->UserLibrary-->next-->右边的library-->点进去 直接new .加入你需要加入的jar包。这样只需加一次,后边的开发就可以直接引用了,不需要再拷贝。
struts需要引入:大家自己网上下载。
commons-fileupload-1.2.2.jar 【文件上传相关包】
commons-io-2.0.1.jar
struts2-core-2.3.4.1.jar 【struts2核心功能包】
xwork-core-2.3.4.1.jar 【Xwork核心包】
ognl-3.0.5.jar 【Ognl表达式功能支持表】
commons-lang3-3.1.jar 【struts对java.lang包的扩展】
freemarker-2.3.19.jar 【struts的标签模板库jar文件】
javassist-3.11.0.GA.jar 【struts对字节码的处理相关jar】
在这里说一下tomcat启动时,对于struts的调用顺序,就知道为什么这样配置了。
服务器启动:
1. 加载项目web.xml
2. 创建Struts核心过滤器对象, 执行filter à init()
struts-default.xml, 核心功能的初始化
struts-plugin.xml, struts相关插件
struts.xml 用户编写的配置文件
访问:
3. 用户访问Action, 服务器根据访问路径名称,找对应的aciton配置, 创建action对象
4. 执行默认拦截器栈中定义的18个拦截器
5. 执行action的业务处理方法
2.web.xml的过滤器的配置。写法基本固定。 struts2配置 ,struts核心功能的初始化,通过过滤器完成
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
3.开发action
处理请求的类 (struts中的action类取代之前的servlet)
处理请求, execute()必须返回String,方法不能有参数
import com.opensymphony.xwork2.ActionSupport; public class hello extends ActionSupport{//必须继承ActionSupport
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
System.out.println("访问action,,正在 处理 请求");
System.out.println("调用service");
return "success";//返回跳转的标记
} }
4.配置action
在src下建立一个struts.xml. 一个类需要在struts.xml中配置一个action.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
//必须继承struts-default,核心功能的初始化。下边有解释
<package name="xxxx" extends="struts-default">
//name是访问路径 class是对于哪个action
<action name="hello" class="action.hello" method="execute">
//返回标记是success
<result name="success" type=" ">/success.jsp</result>
</action>
</package>
</struts>
访问http://localhost:8080/工程名/hello;会返回success.jsp的内容。
struts-default.xml, 详解
struts2-core-2.3.4.1.jar/ struts-default.xml
内容:
1. bean节点指定struts在运行的时候创建的对象类型
2.指定struts-default包 【用户写的package(struts.xml)一样要继承此包 】
package struts-default 包中定义了:
a. 跳转的结果类型
dispatcher 转发,不指定默认为转发
redirect 重定向
redirectAction 重定向到action资源
stream (文件下载的时候用)
b. 定义了所有的拦截器
定义了32个拦截器!
为了拦截器引用方便,可以通过定义栈的方式引用拦截器,
此时如果引用了栈,栈中的拦截器都会被引用!
defaultStack 默认的栈,其中定义默认要执行的18个拦截器!
c. 默认执行的拦截器栈、默认执行的action
<default-interceptor-ref name="defaultStack"/>
<default-class-ref class="com.opensymphony.xwork2.ActionSupport" />
<interceptor name="prepare" class="com.opensymphony.xwork2.interceptor.PrepareInterceptor"/>
<interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
过滤器与拦截器
拦截器功能与过滤器功能类似。
区别:
共同点: 都拦截资源!
区别:
过滤器,拦截器所有资源都可以; (/index.jsp/servlet/img/css/js)
拦截器,只拦截action请求。
拦 截器是struts的概念,只能在struts中用。
过滤器是servlet的概念,可以在struts项目、servlet项目用。
struts理解的更多相关文章
- Struts简介、原理及简单实现
struts简介 Struts是Apache软件基金会(ASF)赞助的一个开源项目.它最初是jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目.它通过采用JavaServlet/ ...
- 《转载》struts旅程《2》
上一篇我们简单了解了struts原理,学习SSH,第一部是傻瓜式学习法,人家怎么做就跟着怎么做就ok.我们以登录为例,Struts配置步骤总结如下(如图2.1): 图2.2 1. j ...
- 谈谈你对 Struts 2 的理解
谈谈你对Struts的理解. struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子 ...
- 对spring,struts,hibernate及MVC的理解
对于spring,hibernate,struts等框架,刚开始的时候总是会很迷茫,不知道他们是用来做什么的. 1.对框架的作用理解 个人认为框架的作用是把代码进行了分类,减少了代码的耦合性. 如果不 ...
- 对Java框架spring、hibernate、Struts的粗浅理解
对 Struts 的理解:1. struts 是一个按 MVC 模式设计的 Web 层框架,其实它就是一个大大的 servlet,这个Servlet 名为 ActionServlet,或是 Actio ...
- 深入理解struts的运行机制
扫码关注公众号,不定期更新干活 在此申明本博文并非原创,原文:http://blog.csdn.net/lenotang/article/details/3336623,本文章是在此文章基础上进行优化 ...
- 对Struts的理解
1.struts是一个按MVC模式设计的Web层框架,其实他就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类.我们可以在web.xm ...
- Java面试题之谈谈你对Struts的理解
1. struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类.我们可以在web.x ...
- Struts学习之值栈的理解
转自:http://blog.csdn.net/hanxuemin12345/article/details/38559979 页面一个请求发送过来,依次经过一系列拦截器(处理公共部分,如:往数据中心 ...
随机推荐
- 原创:C语言打开、下载、删除网页,统计网页字符个数
本程序由本人在华夏联盟的ID闪电笨笨原创,首发地址:http://bbs.hx95.com/ 写此程序希望可以可以激发新手学习C语言的积极性! C语言代码实现功能如下: 1.实现 ...
- HT for Web基础动画介绍
在上一篇<基于HT for Web矢量实现3D叶轮旋转>一文中,我略微提了下HT for Web基础动画的相关用法,但是讲得不深入,今天就来和大家分享下HT for Web基础动画的相关介 ...
- ASP.NET Core实现OAuth2.0的AuthorizationCode模式
前言 在上一篇中实现了resource owner password credentials和client credentials模式:http://www.cnblogs.com/skig/p/60 ...
- 【从API学英语】-DriverManager
原文: The basic service for managing a set of JDBC drivers. NOTE: The DataSource interface, new in the ...
- [调整] Firemonkey TEdit 避免按下立即弹出键盘的问题
目前 Firemonkey 有一个问题,就是在 Edit 按下会立即弹出键盘,在红鱼儿的博客也提交了 QC: http://blog.sina.com.cn/s/blog_44fa172f0102vy ...
- JQuery的调用
在head标签中引用一个JQuery的文件用以制作鼠标点击动画,(JQuery包可从网上下载) JS包,脚本语言 <script language="javascript" ...
- Oracle 数据库基础学习 (六) 子查询
子查询在一个select中出现多个嵌套查询语句 1.在where子句中使用子查询(一般返回"单行单列" "单行多列" "多行单列"(可以提供 ...
- 说说Java生态圈的那些事儿
文章目录: 1.生态圈概述. 2.说说Java,高级Java,Java生态圈的衍生 3. 说说servlet.servlet容器.比较tomcat.jetty.tomcat.jboss: 1. 哪个项 ...
- 矩阵乘法&矩阵快速幂&矩阵快速幂解决线性递推式
矩阵乘法,顾名思义矩阵与矩阵相乘, 两矩阵可相乘的前提:第一个矩阵的行与第二个矩阵的列相等 相乘原则: a b * A B = a*A+b*C a*c+b*D c d ...
- linux下使用forever进行管理
何为forever:forever可以看做是一个nodejs的守护进程,能够启动,停止,重启我们的app应用.官方的说明是说:A simple CLI tool for ensuring that a ...