1.采用Spring MVC的好处

Dispathcher Servlet必须做如下的事情:

1.根据URI调用相应的action

2.实例化正确的控制器类

3.根据请求参数值来构造表单bean

3.调用控制器对象的相应方法

4.转向到一个视图(JSP页面)

SpringMVC提供了Dispatcher Servlet

使用基于XML的配置文件,实例化控制器

自动绑定用户输入,正确转换数据类型

可以校验用户输入,支持国际化和本地化,

支持多种视图

2.SpringMVC的DispatcherServlet

相当于调度员Servlet

配置部署:

 <?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
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_3_0.xsd">
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern> /</url-pattern>
</servlet-mapping> </web-app>
load-on-startup 如存在,在程序启动时加载,
如不存在,在一个请求时候加载 springMVC的配置文件,可以放在WEB-INF下
也可以放在任何地方,用init-param加载该文件
 <?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
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_3_0.xsd">
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/springmvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
</web-app>
3.Controller接口(传统风格控制器,要实现Controller接口)
2.5以前开发控制的唯一方法是org.springframework.web.servlet.mvc.Controller接口
只有一个方法handleRequest,而他的实现类只能处理一个单一动作Action
  ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) 
而基于注解的控制器可以控制多个动作,无需实现任何接口 4.SpringMVC第一个应用
1.目录结构
spring-webmvc-x.y.z.jar包括了 DispatcherServlet

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAASkAAAGjCAIAAAD/0HRrAAAgAElEQVR4nO2dbXAUVaK/82W/82GrvN6qLVzELGVqb9aouEbMpXZLEa5rfLlsJXvxwkUcxatFSETAhA0EgiPoMgsibK3EyC4xKHERJYSXVORSAdyy9h9dWPMnV5JUeJm8TBwTkumZCZ77oWe6z+k+p6cnk5nT0/k9dYqa7jmnuxPmyTnd0+fXOUQec5a/LXHvAMglJ61b/7JpvVbM78I9MJ1Jo3sdh9azi+sMFdLsXrMnR6XQ12Ve6WlO574BSMjUu7d70+u7N72+e5M30l8X6a8b73576Mvtfac3/P8jq3dv8hJCin97UK2ZTve6fIVx55o9cdO6fIUx5fR1AEhiku61tbV5vV7uW69Xvln7+/Pku//hF0q5NLrX5SvU3WIWYjR7mO4QgIwzGfdaW1vz8vJyc3NFFcpX7yKDn/ALIR/+z9dzlr89Z/nb7574kt++y1eYYxgaqv5oI8ZE65s9tG1m0Zg1nN0BkHaSdk8Vr6SkxMK9Z577A7n6Z2FJQJfPE9eCGS5SaiRab+jpdNPimlFvcncHQNpJzj1NvNLSUgv3fr20jnS/TbrfXvrsvmUr9i1bUbdshfpi39IV+5Y9u2+p+vrZfctW7ONuwdQVGWzSFgXrbfR79Cr0fCDzJOEeLZ61e4t+c4Bcel0tTz69/+Pem6LyxJI/GRt3+Qpz6G5qsu6xY0qTUvEa/N0BkHaScM/r9eZSbN26VVTzX//9A3JxA7m44aFfNx78h3LwonLwH+GD/1D/1Yry0OJGTmNKmy5fITO2pE/ybKzXz/3UDeqXOanLoPzdAZB20vL93r2PNZEv19xf3FTXPlLXPrLv7Ejd2ZG69pG6syP72kfqzo7UnR25//FDgtb6ALDQ42H6PY/pUotwPb0ZfSVvbMndHQBpJy3u/cvCw/mLPt55dGjn0aGdzYM7jw7ubB7aeXRwZ/OguiZ/0eEkNykaDmKYCLKVdN3XMufhTyxK8tuDe8BtpPd+zqkD7gG3kS3uAeA24B4AcoB7AMgB7gEgB7gHgBzgHgBygHsAyCGb3PMUFcg+BACmDCe6d2b7XK0QQmoW3Gouso8RgFRxnHtNL86mF/v+3/GaBbdGxk/4z771xtMPqy/gHnABmXbPIuiFEHKmdq7i36v49wY7ff4Ob89n677tPluz4Fb/2be++nCjp6hAfQH3gAvIqHsJg15O1RYowfN0WV88v2bBrW88/bCnqEAtbzz9cM2CW7nnfoLZ7s0ePShQT3ZBVBKQS+bcsxP0cqq6QPEfpsvEeLc25vQUFViNOTm3VbNpLsakCABkkiH3bAa9fFpdoPTUa6WpPN+imFqrfRotF6sjcgGBk8iEe/aDXprK85ROn1qayvOVnr3c4u/w8txTUfs6LSUC7gGHkgn37Ae9HHhxttLpVTq9TeX56gtzEYrX5fMxoZ3ENAylMwCbfdAQSMVZ3zHULf2R0rGuqTxf6djILZY9HjFF5JpOAXkhLgBIwVnu7Xjy1qbyfKVjHbdYiwdAduEs9wghdZ6fWBTZRwfAlOE49wCYJsA9AOQA9wCQA9wDQA5wDwA5wD0A5AD3AJAD3ANADm52b+HChbIPAQAhrnJvy5YtK8Vs2bIlzfvX7ielp0toK3EHKWBwlXsrV67sG1S0Yl5M5871R9lS8yX0R93ScygAIFnknnXQi8pzzz3XN6ior/sGleefZxafe+65NB4fM2WC92QyzB4ELNnhXsKgF5UVK1bQsnk8z9KLK1asELbkPAyaynqxs77ZY5gpaBCNWcN79jSYbmSBe3aCXlSWL19ODzIXLlxILy5fvlzQrsvniWvBDBcpNRKtN8/SjZkW14x5Ejxnd2Da4XT3bAa9EEIWLlz4n/+5VCsL4xhWipoLMs6Y93lz4eOLNvo9ehV6PuBo9+wHvags+Y8lFv3ekv9Ywm/W5SvMobupybrHjilNSsVr8HcHph2Ods9+0ItKaWkJfYJnXuQ3o7Tp8hUyY0v6JM/Gev3cT8tqomuqK/m7A9MOR7uXLIsXL6Zl+/Wvf00vLl68WNBOHwAWejxMv+cxXWoRrueHwfDGltzdgWmHq9x78qmn6EHmE088QS8++dRTyWxMNBzEMBFMDa5yr6KiovjxYlGpqKhIZmNwD6QXV7lnILX7OeEeSC9udg8AJwP3AJAD3ANADnAPADnAPQDkAPcAkAPcA0AOcI/D6nm3yD4EEdp0CXbeBMhC4B4hhLTV3HX61Z9qZdfimfRiW81dsg9QA+65B7hHCCGn1+Z1tdVd/fy9q5+/97cPt9eVldCLp9fmpWe3k7hFBu65B/e7ZyfopW3NnVc/fy/83cnAlw1ft+ypKyuhF9vW3JmeQ4N70xqXu2cz6OXk6juvfv5e4MuGwJcNXx/fq7qnLZ5cbeGeHtwSn5Snr6HmDTV7cgp9Pg9Vk6pW6OuiY2CotDPedszumY/BvDXgONzsnv2gl2Mvzfnbh9u/btnz9fG95+pr1hfPpxePvTRH0M4QBGFao8exNHuYMAptai07C5fVSbAd8wutIjO5HrNyHY5r3bMf9LJ63i27Fs+sKytRy/ri+WrR1uxaPJN/5TNBGhmhZDAYwndPd8VqO6x7dO+od32YbJEFuNO9ZINePnrmDvriyvri+fTiR8/cwW9myz1TUMQk3dO2Y3KPM6qEe1mAO91LNujl4LLbLa61HFx2u6AdHfHX7IufxTFjRf3kLRn3rLZjHnPSQ1Vu0BNwIu50L1kOLJllca3lwJJZwpacjBbxtRaje/HW+rUWetO2r7UIg31T/8WANAL3CCFkf+ks+uJKXVkJvbi/VOweAJMF7hFCSPvmgvrSH2tl1+KZ9GL75gLZBwhcCNzj4OD7OYF7gHsAyAHuASAHuAeAHOAeAHKAewDIAe4BIAe4lxJHtv2MW2QfF8gC4F5K/MV7VzgyYSgXjqx0g378u7QdTmpzi/XpXZkA7qXEodcKzO5daq26aKmfdgNmGm65pG7uTHH7U+AedUtqhu4uhXvZTHt7+40bN2xWbtx6dyg8oZZzvYE5y9/+b9+pnvM7LrVWXTjy/MHau0UNp7RTMcyHoCevp7CTpA/RNA0qh1lM/lBcnqkB94w0NDQ0NjYODQ3ZqfznzfeMhaJjoei4EtXcG1Oi40p0TIke2HKPqGEm3EtxLym5x8xsmixwb5rR0NAwMDDwxz/+8cqVKwkrv1tz7+h4dHQ8OjKuuzc6Fh0di46OR+tr7hU1pD7Y5igXwgSu0EM2zow/c+6L2T2bYTCG9fHKwmmGdE6MjzkMK28dnGdjDvHQt86MItjcj0kOq+GekYaGBkLI0NCQz+e7dOmSdeV3qu8NjkaDo5HgDd294I1IcDT67Y3oO9VzRQ1Z9/hRLjnmXoSvQcIxp/0wGF4l/k7NWTVUPaF7zs6zoX+lnngjbeP6lqjtmKvZBu4ZUd0jhFy/fn3Tpk3Dw8MWlfdsuG9oJBL4LjI0EtbcG/ouEhgJB0Yib1fdJ2po7PesprRTi7bcyzH+lbcZBmNYry1yd8qxy4Z7Ds+zYVebujR2GCGsZhe4Z0R1LxAI2On3dlb+vP/bcP+34f6g7l5/MDwQDPcHw7sq7xc1TKd75k+9vTCYKXRPJJ/D82zYftHYycU3ZsgdMFezCdwz0tDQMDg4aPN873dr7782rJzrDbxQ3/5Cfbvq3rVA+Nqwcj2gvLk2JffYvsx40kHVSNI9qzAYdp/6sZh3as6qYfZCfyzV6tpZnOPybLQfkPeXxfg/UejxFHL+65hq9oB7RpK6zul95YG+QeVcb6Co/H1VvCuDSt+g0jek9A2GX3/lAW4r9vs98cfOY7zUQrct9Hi0zw+b+5LQPSK81mK4esJ8sIw7NWfVUIdhsRPn5dmY3aPaMD+yUTFRNVvAPSNJfb9XWzGvt1/pHVCOfXXl2FdXegeU3gGlZ0Dp7Vd6B0JbXp432aOYxOV1kDKZ/a3DvZTYtHpetz902a90+0PdsX9D3f7QZX/osj9UsxruZRPM1wjpB+6lRHXZg5WriqrKiqrKiiqpf6tWFVWtKqoue3CyG4Z7mSU2gM3orxzuASAHuAeAHOAeAHKAewDIAe4BIAe4B4Ac4F5KIK8FTBq4lxIuzGtBTEumgHspMbm8FkIIfTviVHyhS08dSm2DiGnJFHDPSEbyWgwzBlL/hHKnzE4KxLRkCrhnJBN5LdzJBinRhZgWuJf1ZCSvRfAZtZkRwg8gQUwLYd1zaEyLBtwzkpm8Ft7NuzYzQkQBJIhpMbxwaEyLBtwzkpm8FpXYX09DOATz99SUESIOIDH+lbeZcYKYFvNMWuv/An61pIF7RjKT10IR/8tpMyNEGECCmBbCuOfUmBYNuGckE3ktzKXN+MfEZkaIMIAEMS2GF9zfkmVUREZiWjTgnpEM5LUQdoxoPs23zAgRBZAgpoV+4dyYFg24Z8QZeS0gg0gKCYB7KZG2vBaQOSTd1gL3UiNteS0gI8iIadGAewDIAe4BIAe4B4Ac4B4AcoB7AMgB7gEgB7gHgBzgHofV826ZTLM0JZ3I+uoXpBm4RwghbTV3nX71p1rZtXgmvdhWc5etrcA9kAxwjxBCTq/N62qru/r5e1c/f+9vH26vKyuhF0+vzbO1laxM+ALScL97bW1tXq83QZ01d179/L3wdycDXzZ83bKnrqyEXmxbc6etPcE9kAwud6+1tTUvLy83N9e62snVd179/L3Alw2BLxu+Pr5XdU9bPLnawj1e0olxPTtlpjk2ASU2Z9zQzjzzhclrMKSbgCzGze6p4pWUlCR079hLc/724favW/Z8fXzvufqa9cXz6cVjL80RtBMknVjHk2gzrTW9rPNC2KwUU7oJyFZc654mXmlpqbV7q+fdsmvxzLqyErWsL56vFm3NrsUz+Vc+RWkLtuJJRK+5SVnc/B+4l9240z1avITuEUI+euYO+uLK+uL59OJHz9zBb5aEe+Y3eK+5QSBwz6W40z2v15tLsXXrVuv6B5fdbnGt5eCy2wXtBEkntuJJeK+5QSBwz6W4071kObBklsW1lgNLZglbCpJObMSTcF/zgkDgnkuBe4QQsr90Fn1xpa6shF7cXyp2D4DJAvcIIaR9c0F96Y+1smvxTHqxfXOB7AMELgTucZjk/ZwAJAPcA0AOcA8AOcA9AOQA9wCQA9wDQA5wDwA5wL2UOLLtZ9wi+7hAFgD3UuIv3rvCkQlDuXBkZeb0m5IJu5iRJAO4lxKHXiswu3eptepiAv3ox++l9iQOuJe1wD0jST1/r3Hr3aHwhFq0Zz73nN9xqbXqwpHnD9beLWhH3Qmd4uc+afckPWwOmIB7RpJ67uyfN98zFoqOhaLjSlRzb0yJjivRMSV6YMs9gnbMLISUui64l7XAPSMNDQ0DAwM2n7f+bs29o+PR0fHoyLju3uhYdHQsOjoera+5V9CO655qBZUrIXpEMzckRviUcsM0J3O0jLmtcdo8PXPJNNsJJk8SuGekoaGBEDI0NOTz+S5dumRd+Z3qe4Oj0eBoJHhDdy94IxIcjX57I/pO9VxBO+6YU/048/JfiDH0hVOJ7x67EUL4/Z51YIzetVJz6c3VQJLAPSOqe4SQ69evb9q0aXh42KLyng33DY1EAt9FhkbCmntD30UCI+HASOTtqvsE7ehrLUynon+KRaEvoqAKrnucEam1e4aDY+fsJqgGkgPuGVHdCwQCdvq9nZU/7/823P9tuD+ou9cfDA8Ew/3B8K7K+wXtuLPOE7pnzJVgqk2Je9zAmPhm9IMWVANJAfeMNDQ0DA4O2jzf+93a+68NK+d6Ay/Ut79Q3666dy0QvjasXA8ob65NwT2r0BdeSAx1XqZnvTCVm32GzktrwnOV2oh6vB6PdsyiaiAZ4J6RpK5zel95oG9QOdcbKCp/XxXvyqDSN6j0DSl9g+HXX3lA0M6Oe0R4rUUQEqMNAvWsF3otbZw61DW7xw2M0dbzxptsNZAEcM9IUt/v1VbM6+1XegeUY19dOfbVld4BpXdA6RlQevuV3oHQlpfnpfVQpwyMG2UA91Ji0+p53f7QZb/S7Q91x/4NdftDl/2hy/5QzerscA+3tUgB7qVEddmDlauKqsqKqsqKKql/q1YVVa0qqi57UPYBJiI2fEWnJwG4B4Ac4B4AcoB7AMgB7gEgB7gHgBzgHgBygHsAyAHucUjmeQyxu6vwBRlIFrhHCCFtNXedfvWnWtm1eCa92FZzl6ghbsYCkwbuEULI6bV59EOe68pK6MXTa/NEDackqQhMT9zvXltbm9frTVBnzZ0Wz3xuW3OnqCHcA5PG5e61trbm5eXl5uZaVzu5+k6LZz6fXM13j5rho0+WM035MaSwNHtyCn3NsSk4sXnopvwUMB1ws3uqeCUlJQndO/bSHPohz+uL59OLx16aI2pI9XuieBVOCkusnmqdXgsnjtML17qniVdaWmrt3up5t+xaPLOurEQt64vnq0Vbs2vxTNGVT2Y2OTdehTMbXasneg2mBe50jxYvoXuEkI+euYO+uLK+eD69+NEzd4gaWrpnzlEhcA9ouNM9r9ebS7F161br+geX3W5xreXgsttFDa3GnPwsIbgHYrjTvWQ5sGSWxbWWA0tmiRqyxlhca+G2gHvTGrhHCCH7S2fRF1fqykroxf2lQvcAmDRwjxBC2jcX1Jf+WCu7Fs+kF9s3F8g+QOBC4B6HZO7nBGCSwD0A5AD3AJAD3ANADnAPADnAPQDkAPcAkAPcS4kj237GLbKPC2QBcC8l/uK9KxyZMJQLR1ZmTj+H34uGx6yIgXspcei1ArN7l1qrLibQj37mc2rz9lJyjzmMtDgC98TAPSNJPX+vcevdofCEWrRnPvec33GpterCkecP1t4taEc9+zLFT2fS7nGfDQ0kAPeMJPXc2T9vvmcsFB0LRceVqObemBIdV6JjSvTAlnsE7ZjnzqbUdcG9rAXuGWloaBgYGLD5vPV3a+4dHY+OjkdHxnX3Rseio2PR0fFofc29gnZc9wzJLkT4zGdmPf28da5ThidE06247k1p6ozxqOjtMj2+vmCs5lrgnpGGhgZCyNDQkM/nu3TpknXld6rvDY5Gg6OR4A3dveCNSHA0+u2N6DvVcwXtuGNOTrILLwBGf8VU4rvHboRw6rEKT3XqDP0kdw81V1FdyZlhzKvmUuCeEdU9Qsj169c3bdo0PDxsUXnPhvuGRiKB7yJDI2HNvaHvIoGRcGAk8nbVfYJ29Iee+dOvf9ZEATCG9doi1z3OiNRyzDnlqTNsO1OXxnb5wmruBO4ZUd0LBAJ2+r2dlT/v/zbc/224P6i71x8MDwTD/cHwrsr7Be2YMSe10tq9eM+UUfdSS51h5OXEaKgN9F+HoJorgXtGGhoaBgcHbZ7v/W7t/deGlXO9gRfq21+ob1fduxYIXxtWrgeUN9em4J4wAIYeilEfVersqctXyBugNvuMXYz50z1FqTPawfD+ClCHp/4mPB7ttyGq5kbgnpGkrnN6X3mgb1A51xsoKn9fFe/KoNI3qPQNKX2D4ddfeUDQzo57RHitxXD1hPmw5uTk5BR6PLxzutia2IrJXGuh6yTpHnUczOEZFRNVcyFwz0hS3+/VVszr7Vd6B5RjX1059tWV3gGld0DpGVB6+5XegdCWl+el9VCzALePG1MB7qXEptXzuv2hy36l2x/qjv0b6vaHLvtDl/2hmtXT3T3c1mIB3EuJ6rIHK1cVVZUVVZUVVVL/Vq0qqlpVVF32oOwDlEds6IpOTwjcA0AOcA8AOcA9AOQA9wCQA9wDQA5wDwA5wD0A5JA17gU7W3rqZwQ7W2QfiDzY2UaZ/uJsoLFxw8ovBkzrL27b/VbjMCGE9H3x1oLjFzN7VNlM1rjXUz8jeH5OT/2MBPXY23+NE0zN6/mfYf2eRnnfDZsEk+HeNx8s2L1hwe4Pzqbk3sVtuzdw3ho+vXL3hgV0aTzdx1Y5ezz2Fm/X7PZ3b1iwe8O2bwSbjf0gsUN1BBlyL6mbJLl0bJzRUz8jcdcnuPWeup8/4QfXMFHA/od8apWw2FpG3UvQlSVwr++Ltxbsfmvb8YRd4kBj44Zt35jaxmy8uG238V3zASTarHXNjJMh92xODsh5tmVu1Uf5Gz+Zs/n4P21vn7Hjrz/Y/fecZ1uINub8bE7PXsuuTzTtpdlj1z3uHANbwD1R5cTD0eHTK3d/cJZZxdgo2kLfF29ZdYnMZqete3ZCUG5ZUMUt6rsdG2cEP7ut0zcJ9+h7epPq98zN2Yky+si02WMc39JTfajZaXZiTrjHyc7HiaWnMANjU+ILZwY4Xcfj4f1cNLp7jAnaUJAeyFF6DDQ2qiPVGAndO3vcPKq8uI228ZsPzCNSQgYaG99q/OIDiyErtdlp6x6xF4LyL7uXiYo67Oz0WQ47+ed79GeKPd+zOt3jT1iL9aAchelV9AeZnkBqL+aEu9Y4F47aFT9VhZt9Ympr+LlYeO6dPU6dvH3zgcm9i9tMp2eJ3ONZYegJ+e7RZ5LmM1LDZqeze8RGCMoPNj6yrqXKXH6w8ZFgZ0uHd4a/5bZOr7jr4/V7bEdmd8AWc5QJNyDUR1S1x2i1Xp3FlPdgGbXAPU5jv2d+Q/D3gPkzI5oFy1WP557wA933xVsLjn/APTGzdk/wrp1+jz0Yto5ps9PZPTshKD/Y+IioEEI6Ns7wt9zWsVHoHvXJMvRCFkEJFjD9hZosYhaCExXGj83MrHv87BPjZgU/V4xk3dv91kre5VBL9zhXWQxbFm9hoLFR5J55s9PWPTshKKfL/9W6qMPOjnWiYafwvM6QZpLgWgs3sciQLNLl8xllFtlOmj1sLJfVa+ZnsRpzMqEQPK/42Se8zdI/F0uiMafqGzvmHGhsNH6jwJrDDg6NHZr+LtVKqA11LdR6s1YbkYOzrnO2Pn/PpfdWi0rr8/cEO1vOr5vhP/xP59cZuz7TORqnc9BO1Lhf/LFVOeeDhrBL/rUOq+scSbvHHKah7/KYv4Pk/chqaz37hPOnxxziqcG/1qJ/n7byi9Pc65zqxZht36hyUhdm4nLGJTGfpBnf1b+4E6Bf+BHpTbTDnobu2fx+r7lk9oVt/6aWv7Mv/r7t35pLZhNCRO5lAIc/82fSWPxcguuc2cn0dM8mhxf+UC0fL/zh4UfiZeEPDz8SW0MIOb9uhloyfXBujf2x/Lm0+1qGT690wAeX/W6Dd6+MiOl7X0u2Q38j4CZs/VyxEWaWd3rOA+4BIAe4B4Ac4B4AcoB7AMgB7gEgB7gHgBzgHgByyBr30pDXwk5UkIvNW2bSERuB55VIImvcs5HXIgpoEdd2hHaEEJF7GYlsgXuScNb9nBbYyGsRBbTwcdbNmTbds/UWyA6cNY8htbwWUUALH7gH5OKmvBZRQAsxR6dQ08rpSej0WNWUfSLKX/GZM1e4Nc1jYXZyu90x59RGthimzXKOk7MBMBW4Ka9FFNDCjU4xJJWYKxiyT8T5K7oLutesR8K2zEc+efemJrKF+yvR1qJ/TRtuymsRBLTwo1OoDxq/gmkEy6lj+LCa1lm0NVRL4lrLVEe2sH9JeD8jv1MGKeKmvBZBZIPgxI5xL+HnPnH+iqV75raZcc9OZAvtnlAxOpYGTA1uymsRBbRwo1MMY05zBXOel3X+Stw9pmazL9518NqyWROTGHNOSWSLcLgQc9kUSwOmBmdd50wlr0Uc0MK/XMD8lRdekDBs3lCH6x5d0xDkwl6voK9r+IT9HjMETEdki/ESFecXZTp0MAU46/s9h+e1ADCFOOu+FkfntQAwpTjLPQCmD3APADnAPQDkAPcAkAPcA0AOcA8AOcA9AOQA9wCQA9wDQA5OdO/M9rlakX0sAKQLx7nX9OJsi0UAXEOm3Wtra/N6vaJ3z9TOVfx7Ff/eYKfP3+Ht+Wxd5+GyM7Vz6ZLJowUgfWTUvdbW1ry8vNzcXFGFU7UFSvC8RTlVW2C5B2PciHlODNJHgEPInHuqeCUlJVbuVRco/sMWpW7pbeI9mEJPzLM9Mf8TOIYMuaeJV1paauHep9UFSk+9VprK8y2KsTEn8sCcNYL0EeAUMuEeLZ61e03leUqnTy1N5flKz15u8Xd47bmnYs4aQfoIkE8m3PN6vbkUW7duFdU88OJspdOrdHqbyvPVF+bCF48QTlCKOWsE6SPAMTjrO4a6pT9SOtY1lecrHRu5RSweIYQTlGLOGkH6CHAIznJvx5O3NpXnKx3ruCWBeABkFc5yjxBS5/mJRZF9dABMGY5zD4BpAtwDQA5wDwA5wD0A5AD3AJAD3ANADnAPADm4yr1PfQ9yi+zjAoCD29wLRyYM5cKRlWnRz/BEdwCSxFXuHd5RpIQnDOVSa9XFdOgH90BquMq9Q2/MH1eihtJzfsel1qoLR54/9MZ82QcIgI6r3Ht/2y9GxqKkujpUsWbwv57reax0dDyqlfe3/0L2AQKg4yr39nt/GRyLBm/wy37vLwXtmj05hb7m2PwjT7M+0cjqodDMY8oLfT5TE2b7SJEBRlzl3r7ahwIjkcbjHXs+PFe158Qzmw8FRiJPrPlTYCQSGInsq31I0K7Zo2mhamJ8LHmXzxNXSpugy7hHNzHYhxQZwMdV7u2peXggGBaVPTUPC9rRaROi16auydDvdWm1WPeQIgMEuMq931c/cm04TKqrQ+Vrrg+HN+/8+MlVf5z1aO314fD14fDvqx8RtEvkXpevUDNDU27y7mk1kSIzrXGVe29sWHRlKCwqb25YJGiXyD1qXZev0Fa/pw8+kSID+LjKvddefbR3QPn0q33vnt+18cSWJR9U/PwPy/95+1O9A0rvgPLaq48K2iUcc+rjzUKPx1a/R5/4IUUG8HCVe5vX/qq7X7ns55fNa38l+wAB0HGVe79d89j/Xg+JSvXLj8k+QAB0XOVeZcXjlS8/Xvly8asVxeqL+OviyorHKyuKZR8gAGyLIAUAAAw/SURBVDqucg+ALALuASAHuAeAHOAeAHKAewDIAe4BIAe4B4Ac3ORes0e/20u/Fww3aQFn4kT3zmyfq5Vk2sE9kE04zr2mF2dbLFoSd08H7gHnkmn32travF6v6N0ztXMV/17FvzfY6fN3eHs+W9d5uOxM7Vy6iLcN90A2kVH3Wltb8/LycnNzRRVO1RYowfMW5VRtgXjz9JiTTn3ABB3gRDLnnipeSUmJlXvVBYr/sEWpW3qbeA9899hJcrAPOIUMuaeJV1paauHep9UFSk+9VprK8y2KqbWo39MqYAgKHEQm3KPFs3avqTxP6fSppak8X+nZyy3+Di/cA9lOJtzzer25FFu3bhXVPPDibKXTq3R6m8rz1RfmIhCPCMeccduYBQBk46zvGOqW/kjpWNdUnq90bOQWsXhE2O95cKkFOBFnubfjyVubyvOVjnXcYikeAFmGs9wjhNR5fmJRZB8dAFOG49wDYJoA9wCQA9wDQA5wDwA5wD0A5AD3AJCDe9z7zJJIJCL7AAFgcJV7E9HoxET05s2Jmzcnvv/+5vff35yYiH7//c2//vWvJ0+eHL0xKvsYAdBxj3ttbW3RaMSs3/ff32xvbx8fHz916tTIyEg6D8E8eTcNmB8rzXnQNMgC3ONea2trJBLm6nfixImWlpaWlpYTJ06k8xDgHkgC97h36tSpSFiJRMLRSGQiGjHod+3q1Z7ubqnuYQYTYHCPeydOnAgrIa5+moEtLS3pPAS4B5LAPe61tLQoofGwEgqHlUiY0m8isXv6U5l1O/SUF/rZzbH0l0KPp5B50HNOoa+Lcc/QXF/kDw85RyAImzErTK+x3g5Gpk7CPe4dPXo0ND5u0C/K6nf06FFOS06HZHiEuj4vkEl/iVXRKmjuCZsL+r0un4d6xrt12IyVeza2AxyDG9xbtKWJLqx+4bh+0Zs3Jz755BPeBtS+heoUqF6K6qsMn/q4YPrquHuJm2s19J2aeixB4IV1v5d4O8ApuMG9Gb+opEtofEwJjStKKKww+k1MRD/++GPxZtQPbXyEyBmeGT/Eaq0uX2G8LuWejeaGPRs70Um4Z2s7wCm4wT1CyNPvL6dLTL8Qq1802tTUxGnc5fMxp0bEECfY7BF8iLt8hYUej6YeM+a00VyDcpUKlRGEzTCmsR2qeDtwz4G4xL2cLYvoMj52IzQ+poxr+inqV3+HDh3iNuek5wovWtDtDPFL1LUW3tWb2DpBlxgbg3o8CcJmLNyz2A7ccx5ucO9sxf3mMj52IzQ2FmL127dvn+yDtY9tZyBXduIG947+5sf/eGMRXY7+5sdjN0ZZ/UKRsOLz+WQfrH3sKoXbWrIUV7i3aIa53BgdNetnEQ3qPGy4Fxsro9PLStzgnsqr9pB9mADEcI97AGQXcA8AOcA9AOQA9wCQA9wDQA5wDwA5wD0A5OBE985sn6sV+60MT1M33O0RX6Tus6S+lWYm/QjuEdFaUnP52KrsjL6EGwTTHMe51/TibItFK5iZO0Y3zJPtRE0NDguqxW90pr3izKYFQEim3Wtra/N6vaJ3z9TOVfx7Ff/eYKfP3+Ht+Wxd5+GyM7Vz6SLcNNPTNXtyPB5mWoH6VmL3LLwxutfMdq5wDyRDRt1rbW3Ny8vLzc0VVThVW6AEz1uUU7UF4s1Tn/hmT8wM4zSahO5ZacOpRs8ignsgGTLnnipeSUmJlXvVBYr/sEWpW3qbxS6MwSlab6dPrGPPxEwRDtanZ1xFdfsE53s43QNcMuSeJl5paamFe59WFyg99VppKs+3KJz2MdnoEWYsP8y6W2NOFfUTPmOqimA7cfvQ74FkyIR7tHjW7jWV5ymdPrU0lecrPXu5xd/h5bunjTWZBBVq2Y57grgVYjE0Ve3zwD2QBJlwz+v15lJYTKI78OJspdOrdHqbyvPVF+YiFo+Q+DUWphNjlpPq9yyqGbfD5kHAPZAYZ33HULf0R0rHuqbyfKVjI7dYi0dIbJzIJvnlGHso07kYG+pnESbGfL/HyW6Be8A2znJvx5O3NpXnKx3ruCWxeABkD85yjxBS5/mJRZF9dABMGY5zD4BpAtwDQA5wDwA5wD0A5AD3AJAD3ANADnAPADnAPQDkAPfwMBEgB1e5N7mgF7gHpOAe9yYf9AKADLLGvTQGvQAgg+xwL71BL9SMH9OjmtX3OM+EBiBFssC9tAe9ME8wN8ilykjnusA+MDU43b1MBL3oyqn9G33dxaAjJsWCKcPR7mUo6IWf/8DN84R7YMpwtHsZCnqhxpy+ZtMqPX+TXQAgNRztnn1SCnphM3XZiyrx7HdcagFTjUvcSynoxWogiUEmSBcucY+kEPRieVsL3APpwj3uTRrLkSTcA+kC7gEgB7gHgBzgHgBygHsAyAHuASAHuAeAHOAeIYR86nuQW2QfF3AzcI8QQj71PRiOTBjKhSMrM6ef8HmbMtDvNtAflm2jMkgOuEcIIYd3FCnhCUO51Fp1MYF+zNP8UvoKPiX3DA8VTPleALiXEeAeIYQcemP+uBI1lJ7zOy61Vl048vyhN+YL2lFPk07xI5i0e8YHvuuKGJ/+ad024WHhrp50AfcIIeT9bb8YGYuS6upQxZrB/3qu57HS0fGoVt7f/gtBO/pJ7ql1XVPoHm+FuG3Cw4J76QLuEULIfu8vg2PR4A1+2e/9paAd1z0q4oXzSGn6o8w+ato8WZdxRK9c6PN5mFb8B1DTQRfUHpo9nD1yJk7FJ/KLkmw4u0LaTVLAPUII2Vf7UGAk0ni8Y8+H56r2nHhm86HASOSJNX8KjEQCI5F9tQ8J2nHHnGzEC2n20CkUeuILk/2iV+K7x26ECOuZ3qX7U24uTZfPE39fOyKzexY9JdJuJgvcI4SQPTUPDwTDorKn5mFBO/oih/kjTggxDybj7xrWa4tcpzgj0oTuGTs56ij5IRl6z8Tp98xJNuYDQdpNcsA9Qgj5ffUj14bDpLo6VL7m+nB4886Pn1z1x1mP1l4fDl8fDv+++hFBO2bMSa20di9uRfrc0+rzTyONw8RYFU4PZjjfo5Ns+D8u0m7sA/cIIeSNDYuuDIVF5c0NiwTtbLhnHnNSJ4FMEIz+caVc4AxQm33Gvst8nbPQNI5UF+jTMMPxULvjjTmNSTbacSLtZrLAPUIIee3VR3sHlE+/2vfu+V0bT2xZ8kHFz/+w/J+3P9U7oPQOKK+9+qignR33iPBai+HqCeNATk5OTqHHw/pluiBCXWsxXrNhDse4b25bfXe8fs94wcTsHtJukgTuEULI5rW/6u5XLvv5ZfPaX8k+QAeDtJvJAvcIIeS3ax773+shUal++THZB+hckHYzaeAeIYRUVjxe+fLjlS8Xv1pRrL6Ivy6urHi8sqJY9gE6ktgQE2k3kwTuASAHuAeAHOAeAHKAewDIAe4BIAe4B4Ac4B4hyGsBMoB7hCCvJSEIhkgDcI8Ql+W1pMMRuJcG4B4hLstrAVkC3CPEfXktIBuAe4S4MK9FtFPDsTV7cgp9zbERa2w2PXfcilCWNAD3CHFFXgursGinnGPTZ7gbbCK8vSGUZeqAe4S4L69FtFPOnHp6hjv3tWEPCGWZMuAeIS7OazEeZ+ru6csIZUkRuEeIy/JarHaapHsIZUkncI8QV+S1JHOtha6TpHsIZZk64B4hyGtJCEJZ0gDcIwR5LYlAKEs6gHuEIK/FAoSypA24B4Ac4B4AcoB7AMgB7gEgB7gHgBzgHgBygHsAyAHuEfbJxtz7gwGYelzl3pntc7WSTDu4ByTgHveaXpxtsWiJ4cnGBO6BDJA17rW1tXm9XtG7Z2rnKv69in9vsNPn7/D2fLau83DZmdq5dBFvG+4BCWSHe62trXl5ebm5uaIKp2oLlOB5i3KqtkC8eXrMiQwSkCGywD1VvJKSEiv3qgsU/2GLUrf0NvEe+O4hgwSkFae7p4lXWlpq4d6n1QVKT71WmsrzLYqptajf0ypgCAqmHke7R4tn7V5TeZ7S6VNLU3m+0rOXW/wdXrgHHIKj3fN6vbkUW7duFdU88OJspdOrdHqbyvPVF+YiEI8Ix5zIIAHpxNHu2adu6Y+UjnVN5flKx0ZuEYtHhP0eMkhAOnGJezuevLWpPF/pWMctluIBIAeXuEcIqfP8xKLIPjoAjLjHPQCyC7gHgBzgHgBygHsAyAHuASAHuAeAHP4P2nJ8Hm+XdtwAAAAASUVORK5CYII=" alt="" />


2.部署描述符文件和SpringMVC配置文件

2.1 部署文件

没有init-param,所以放在WEB-INF下

<url-pattern>/</url-pattern> 将所有的URL映射到该Servlet上

 <?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
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_3_0.xsd">
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> </web-app>

2.2 SpringMVC的配置文件

2个控制器类

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean name="/product_input.action" class="app03a.controller.InputProductController"/>
<bean name="/product_save.action" class="app03a.controller.SaveProductController"/> </beans>

3.Controller

 package app03a.controller;

 import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller; public class InputProductController implements Controller { private static final Log logger = LogFactory
.getLog(InputProductController.class); @Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
logger.info("InputProductController called");
return new ModelAndView("/WEB-INF/jsp/ProductForm.jsp");
} }
 package app03a.controller;

 import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller; import app03a.domain.Product;
import app03a.form.ProductForm; public class SaveProductController implements Controller { private static final Log logger = LogFactory
.getLog(SaveProductController.class); @Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
logger.info("SaveProductController called");
ProductForm productForm = new ProductForm();
// populate action properties
productForm.setName(request.getParameter("name"));
productForm.setDescription(request.getParameter("description"));
productForm.setPrice(request.getParameter("price")); // create model
Product product = new Product();
product.setName(productForm.getName());
product.setDescription(productForm.getDescription());
try {
product.setPrice(Float.parseFloat(productForm.getPrice()));
} catch (NumberFormatException e) {
} // insert code to save Product return new ModelAndView("/WEB-INF/jsp/ProductDetails.jsp", "product",
product);//路径,模型名称,模型
} }
 package app03a.form;

 public class ProductForm {
private String name;
private String description;
private String price; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}
 package app03a.domain;
import java.io.Serializable; public class Product implements Serializable {
private static final long serialVersionUID = 748392348L;
private String name;
private String description;
private float price; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
}

4.View

ProductForm.jsp

 <!DOCTYPE HTML>
<html>
<head>
<title>Add Product Form</title>
<style type="text/css">@import url(css/main.css);</style>
</head>
<body> <div id="global">
<form action="product_save.action" method="post">
<fieldset>
<legend>Add a product</legend>
<p>
<label for="name">Product Name: </label>
<input type="text" id="name" name="name"
tabindex="1">
</p>
<p>
<label for="description">Description: </label>
<input type="text" id="description"
name="description" tabindex="2">
</p>
<p>
<label for="price">Price: </label>
<input type="text" id="price" name="price"
tabindex="3">
</p>
<p id="buttons">
<input id="reset" type="reset" tabindex="4">
<input id="submit" type="submit" tabindex="5"
value="Add Product">
</p>
</fieldset>
</form>
</div>
</body>
</html>

ProductrDetails.jsp

 <!DOCTYPE HTML>
<html>
<head>
<title>Save Product</title>
<style type="text/css">@import url(css/main.css);</style>
</head>
<body>
<div id="global">
<h4>The product has been saved.</h4>
<p>
<h5>Details:</h5>
Product Name: ${product.name}<br/>
Description: ${product.description}<br/>
Price: $${product.price}
</p>
</div>
</body>
</html>

5.测试应用

http://localhost:8080/app03a/product_input.action

5.View Resolver

View Resolver负责配置视图解析器

 <?xml version="1.0" encoding="UTF-8"?>

 <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean name="/product_input.action" class="app03b.controller.InputProductController"/>
<bean name="/product_save.action" class="app03b.controller.SaveProductController"/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>

视图解析器配置了前缀和后缀两个属性:

view路径可以缩短,仅需提供myPage,无需在写/WEB-INF/jsp/myPage.jsp

3.SpringMVC介绍的更多相关文章

  1. SpringMVC介绍之约定优于配置

    SpringMVC介绍之约定优于配置 所谓的约定优于配置就是指在程序开发过程中我们约定好一些规则可以使我们更少的进行配置和代码编写.就这么简单的一句话可能你还不是很懂什么是约定优于配置,没关系,看完后 ...

  2. Spring-mvc介绍

    Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2   spring-mvc结构 1 ...

  3. SpringMVC介绍及参数绑定

    本节内容: SpringMVC介绍 入门程序 SpringMVC架构 SpringMVC整合MyBatis 参数绑定 SpringMVC和Struts2的区别 一.SpringMVC介绍 1. 什么是 ...

  4. springMVC介绍

    http://www.iteye.com/blogs/subjects/springMVC —————————————————————————————————————————————————————— ...

  5. (转)SpringMVC学习(一)——SpringMVC介绍与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/72231272 SpringMVC介绍 SpringMVC是什么? SpringMVC和Stru ...

  6. 【Eclipse】springMVC介绍与配置

    SpringMCV介绍: Spring MVC是一种基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动的,也就是使用 ...

  7. SpringMVC介绍之视图解析器ViewResolver

    在前一篇博客中讲了SpringMVC的Controller控制器,在这篇博客中将接着介绍一下SpringMVC视图解析器.当我们对SpringMVC控制的资源发起请求时,这些请求都会被SpringMV ...

  8. SpringMVC介绍之Validation

    对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证.SpringMVC自身对数据在服务端的校验有一个比较好的支持,它能将我们提 ...

  9. SpringMVC轻松学习-SpringMVC介绍(一)

    Spring  MVC 背景介绍 Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 ...

  10. 000 SpringMVC介绍

    1.介绍 2.MVC 模型(Model)封装了应用程序数据,通常它们将由POJO类组成. 视图(View)负责渲染模型数据,一般来说它生成客户端浏览器可以解释HTML输出. 控制器(Controlle ...

随机推荐

  1. Python之进程(multiprocessing)

    一.multiprocessing模块简介——进程基于“threading”的接口 multiprocessing模块支持创建进程——使用threading模块相似的API.multiprocessi ...

  2. smarty学习——缓存

    存被用来保存一个文档的输出从而加速display()或fetch()函数的执行.如果一个函数被加进缓存,那么实际输出的内容将用缓存来代替. 缓存可让事物非常快速的执行,特别是带有长计算时间的模板.一旦 ...

  3. 通过HTTP协议发送远程消息

    通过HTTP协议发送远程消息 MSMQ一般情况是通过tcp协议进行通讯,但如果遇到端口被禁用或防火墙,则通过HTTP协议发送消息是一个有效的解决办法. 通过HTTP协议发送消息到远程服务器 publi ...

  4. javascript 变量定义

    一.javascript中,变量定义的位置与写在哪个<script></script>标签对内无关,只分前后顺序,写在前面的后面就能够访问,写在后面的前面会提示“未定义”. 例 ...

  5. Microsoft.Crm.Setup.SrsDataConector.RegisterServerAction 操作失败 Requested value 'Geo' was not found 的解决方法

    error installing ssrs data connector on sql server for dynamics crm 2011 I think the post title says ...

  6. 一个高效的敏感词过滤方法(PHP)

    $badword = array( '张三','张三丰','张三丰田' ); $badword1 = array_combine($badword,array_fill(0,count($badwor ...

  7. Redis在Windows集群中的错误

    创建集群: ./redis-trib.rb  create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:70 ...

  8. web服务器检测

    # coding=utf-8 import sys import socket import re def check_webserver(address, port, resource): addr ...

  9. appium 3-31626 toast识别

    1.toast弹窗,普通方式不能获取 例如使用getPageSource是无法找到toast的信息,uiautomatorViewer加载页面时间较长,也很难采集到toast信息 2.通过curl命令 ...

  10. ZooKeeper 集群的安装、配置---Dubbo 注册中心

    ZooKeeper 集群的安装.配置.高可用测试 Dubbo 注册中心集群 Zookeeper-3.4.6 Dubbo 建议使用 Zookeeper 作为服务的注册中心. Zookeeper 集群中只 ...