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. AppBox下调用HighCharts画曲线

    例子见本博文件下载. 注意                xAxis: {                    categories: [<%= xAxisCategories %>], ...

  2. Navicat导出opencart2.3数据字典

    步骤请参考:http://blog.csdn.net/maquealone/article/details/60764420 运行SQL:   备注:opcml是数据库名称. select TABLE ...

  3. JMeter--使用URL回写来处理用户会话

    如果测试的Web应用系统使用URL回写而非Cookie来保存会话信息,那么测试人员需要做一些额外的工作来测试web站点 为了正确回应URL回写,JMeter需要解析从服务器收到的HTML,并得到唯一的 ...

  4. SpringCloud初体验:七、gateway 网关服务如何做token验证

    说说背景:假如有一个用户服在用户登录后,生成一个token给到客户端,用户每次请求时都需要这个token,于是每次都会在网关 gateway 校验,校验通过后网关从token中解析出userId,然后 ...

  5. 静态编译opencv3.4.0

    问题: 编译了静态库之后可以不要那么多dll 解决办法: 其实和编译动态库的区别就在于: Cmake里面操作的时候,去掉下面这个选项的勾勾 BUILD_SHARED_LIBS

  6. ORACLE11g 安装中xhost: unable to open display 问题解决纪实 (go)

    http://blog.csdn.net/mchdba/article/details/62235761 1,Xhosts报错 安装好vncserver,本地pc笔记本能通过vnc viewer远程连 ...

  7. Eclipse-Java EE

    1.1 下载JDK 在Java官方网站下载最新版本的 Java SE:  http://www.oracle.com/technetwork/java/javase/downloads/index.h ...

  8. qt 中文乱码

    首先呢,声明一下,QString 是不存在中文支持问题的,很多人遇到问题,并不是本身 QString 的问题,而是没有将自己希望的字符串正确赋给QString. 很简单的问题,"我是中文&q ...

  9. CentOS7 安装mysql(YUM方式)

    1.下载mysql源安装包 shell> wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm   2 ...

  10. BASIC-4_蓝桥杯_数列特征

    示例代码: #include <stdio.h>#include <stdlib.h> int main(void){ int n = 0 ; int i = 0 ,  max ...