搭建Spring MVC 入门程序

<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; 今天使用Spring&#160; Tool Suite 搞了一个 SpringMVC超级入门的程序,没想到碰到了一些跟SpringMVC无关的问题,在此记录一下,给后来者和自己一个借鉴。 <br />Spring MVC Hello World <br /><font color="#ff0000"><strong>一、准备开发环境和运行环境:</strong></font> <br />☆开发工具:Spring&#160; Tool&#160; Suite <br />☆运行环境:tomcat6.0.20 <br />☆工程:动态web工程(spring-3.x-mvc) <br />☆spring框架下载: <br />spring-framework-3.1.1.RELEASE-with-docs.zip <br />☆依赖jar包: <br />1、&#160; Spring框架jar包: <br />为了简单,将spring-framework-3.1.1.RELEASE-with-docs.zip/<font color="#0000ff">dist/下的所有jar</font>包拷贝到项目的WEB-INF/lib目录下; <br />2、&#160; Spring框架依赖的jar包(可以根据关键字查找一下快速定位): <br />需要添加Apache commons logging日志,此处使用的是<font color="#0000ff">commons.logging-1.1.1.jar</font>; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 位于 \projects\ivy-cache\repository\org.apache.commons\com.springsource.org.apache.commons.logging\1.1.1\目录下 <br />需要添加jstl标签库支持,此处使用的是<font color="#0000ff">jstl-1.1.2.jar和standard-1.1.2.jar</font>; <br />分别位于\projects\ivy-cache\repository\javax.servlet\com.springsource.javax.servlet.jsp.jstl\1.1.2和 <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; \projects\ivy-cache\repository\org.apache.taglibs\com.springsource.org.apache.taglibs.standard\1.1.2,目录下</p> <p><font color="#ff0000"><strong>二、&#160; 前端控制器的配置dispatcherServlet</strong></font></p> <p>在我们的<font color="#0000ff">web.xml</font>中添加如下配置:</p> <p><font face="Arial">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; <br />&lt;web-app xmlns:xsi=&quot;</font><a href="http://www.w3.org/2001/XMLSchema-instance&quot;"><font face="Arial">http://www.w3.org/2001/XMLSchema-instance&quot;</font></a> <br /><font face="Arial">&#160;&#160;&#160; xmlns=&quot;</font><a href="http://java.sun.com/xml/ns/javaee&quot;"><font face="Arial">http://java.sun.com/xml/ns/javaee&quot;</font></a> <br /><font face="Arial">&#160;&#160;&#160; xsi:schemaLocation=&quot;</font><a href="http://java.sun.com/xml/ns/javaee"><font face="Arial">http://java.sun.com/xml/ns/javaee</font></a><font face="Arial"> </font><a href="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&quot;"><font face="Arial">http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&quot;</font></a> <br /><font face="Arial">&#160;&#160;&#160; id=&quot;WebApp_ID&quot; version=&quot;2.5&quot;&gt;</font></p> <p><font face="Arial">&#160;&#160;&#160; &lt;!-- Spring mvc的主servlet --&gt; <br />&#160;&#160;&#160; &lt;servlet&gt; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;servlet-name&gt;<font color="#9e7c7c">helloController</font>&lt;/servlet-name&gt; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;load-on-startup&gt;1&lt;/load-on-startup&gt; <br />&#160;&#160;&#160; &lt;/servlet&gt; <br />&#160;&#160;&#160; &lt;servlet-mapping&gt; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;servlet-name&gt;helloController&lt;/servlet-name&gt; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;url-pattern&gt;/&lt;/url-pattern&gt; <br />&#160;&#160;&#160; &lt;/servlet-mapping&gt;</font></p> <p><font face="Arial">&lt;/web-app&gt;</font></p> <p><strong>load-on-startup</strong><strong>:</strong>表示启动容器时初始化该Servlet;</p> <p><strong>url-pattern</strong><strong>:</strong>表示哪些请求交给Spring Web MVC处理, “/” 是用来定义默认servlet映射的。也可以如“*.html”表示拦截所有以html为扩展名的请求。</p> <p>自此请求已交给Spring Web MVC框架处理,因此我们需要配置Spring的配置文件,默认DispatcherServlet会加载WEB-INF/[DispatcherServlet的Servlet名字]-servlet.xml配置文件。本示例为WEB-INF/ helloController-servlet.xml。</p> <p>然后<font color="#0000ff">创建&lt;servlet-name&gt;-servlet.xml文件</font>,这里对应的就是helloController-servlet.xml,放在web.xml的同级目录</p> <p><font face="Arial">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; <br />&lt;beans xmlns=&quot;</font><a href="http://www.springframework.org/schema/beans&quot;"><font face="Arial">http://www.springframework.org/schema/beans&quot;</font></a> <br /><font face="Arial">&#160;&#160;&#160; xmlns:xsi=&quot;</font><a href="http://www.w3.org/2001/XMLSchema-instance&quot;"><font face="Arial">http://www.w3.org/2001/XMLSchema-instance&quot;</font></a><font face="Arial"> xmlns:mvc=&quot;</font><a href="http://www.springframework.org/schema/mvc&quot;"><font face="Arial">http://www.springframework.org/schema/mvc&quot;</font></a> <br /><font face="Arial">&#160;&#160;&#160; xmlns:p=&quot;</font><a href="http://www.springframework.org/schema/p&quot;"><font face="Arial">http://www.springframework.org/schema/p&quot;</font></a><font face="Arial"> xmlns:context=&quot;</font><a href="http://www.springframework.org/schema/context&quot;"><font face="Arial">http://www.springframework.org/schema/context&quot;</font></a> <br /><font face="Arial">&#160;&#160;&#160; xsi:schemaLocation=&quot;</font><a href="http://www.springframework.org/schema/mvc"><font face="Arial">http://www.springframework.org/schema/mvc</font></a><font face="Arial"> </font><a href="http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"><font face="Arial">http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd</font></a> <br /><font face="Arial">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><a href="http://www.springframework.org/schema/beans"><font face="Arial">http://www.springframework.org/schema/beans</font></a><font face="Arial"> </font><a href="http://www.springframework.org/schema/beans/spring-beans.xsd"><font face="Arial">http://www.springframework.org/schema/beans/spring-beans.xsd</font></a> <br /><font face="Arial">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><a href="http://www.springframework.org/schema/context"><font face="Arial">http://www.springframework.org/schema/context</font></a><font face="Arial"> </font><a href="http://www.springframework.org/schema/context/spring-context-3.0.xsd&quot;"><font face="Arial">http://www.springframework.org/schema/context/spring-context-3.0.xsd&quot;</font></a><font face="Arial">&gt;</font></p> <p><font face="Arial">&#160;&#160;&#160; <font color="#d16349">&lt;context:component-scan base-package=&quot;com.hunter.spring3.introduce&quot; /&gt; <br />&#160;&#160;&#160; &lt;mvc:annotation-driven /&gt;</font></font> <br /><font face="Arial">&#160;&#160;&#160; &lt;!-- ViewResolver --&gt; <br />&#160; <font color="#d16349">&#160; &lt;bean <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; class=&quot;org.springframework.web.servlet.view.InternalResourceViewResolver&quot;&gt; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name=&quot;viewClass&quot; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; value=&quot;org.springframework.web.servlet.view.JstlView&quot; /&gt; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name=&quot;prefix&quot; value=&quot;/WEB-INF/view/&quot; /&gt; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name=&quot;suffix&quot; value=&quot;.jsp&quot; /&gt;</font> <br />&#160;&#160;&#160; &lt;/bean&gt; <br />&#160;&#160;&#160; &lt;/beans&gt;</font></p> <p>说明:</p> <p>1)所有请求都要由DispatcherServlet来处理,因此映射到&quot;/&quot;上面(包括静态页面),</p> <p>&lt;load-on-startup&gt;不加经测试也未见出错,而且如果要修改spring-servlet.xml的配置位置或名字,</p> <p>可以加</p> <p>&lt;init-param&gt;</p> <p>&#160;&#160;&#160;&#160;&#160;&#160; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; <br />&#160;&#160;&#160;&#160;&#160;&#160; &lt;param-value&gt;/WEB-INF/spring-servlet.xml&lt;/param-value&gt; <br />&lt;/init-param&gt;</p> <p>但一定要放到&lt;load-on-startup&gt;前面,否则xml校验出错(经测试)。</p> <p>2)在spring-servlet.xml中,引入了mvc和context两个命名空间,其中&lt;mvc:annotation-driven/&gt;表示这里使用注解进行开发,&lt;context:component-scan&gt;指明注解所在的包名,InternalResourceViewResolver这个类的配置,说明逻辑视图转换成物理视图的前缀和后缀,其viewClass的属性如果是jsp的话经测试,不设置也可。</p> <p>3)InternalResourceViewResolver:用于支持Servlet、JSP视图解析; <br />iewClass:JstlView表示JSP模板页面需要使用JSTL标签库,classpath中必须包含jstl的相关jar包; <br />prefix和suffix:查找视图页面的前缀和后缀(前缀[逻辑视图名]后缀), <br />比如传进来的逻辑视图名为hello,则该该jsp视图页面应该存放在“WEB-INF/view/hello.jsp”;</p> <p>&#160;</p> <p><font color="#ff0000"><strong>三、编写Controller层</strong></font></p> <p><font face="Arial">package com.hunter.spring3.introduce;</font></p> <p><font face="Arial">import org.springframework.stereotype.Controller; <br />import org.springframework.web.bind.annotation.RequestMapping;</font></p> <p><font face="Arial"><font color="#0000ff">@Controller <br /></font>public class HelloWorldController {</font></p> <p><font face="Arial">&#160;&#160; <font color="#0000ff">@RequestMapping(value={&quot;/hello&quot;,&quot;/&quot;}) <br /></font>&#160;&#160;&#160; public String handler() { <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return &quot;hello&quot;; <br />&#160;&#160;&#160; } <br />}</font></p> <p><font face="Arial"></font> <br /><font color="#ff0000"><strong>四、编写jsp</strong></font></p> <p>在<em>/WEB-INF/创建view目录,在view下</em>创建hello.jsp即可用如下地址访问:</p> <p><font color="#ff0000"><strong>五、启动web容器,此处为tomcat ,也可换成jetty等等</strong></font></p> <blockquote> <p>(观察RequestMapping配置的路径)</p> </blockquote> <blockquote> <p><a href="http://localhost:8080/&lt;context-path&gt;/hello">/hello&quot;&gt;http://localhost:8080/&lt;context-path&gt;/hello</a></p> </blockquote> <blockquote> <p>或者</p> <p><a href="http://localhost:8080/&lt;context-path&gt;/">/&quot;&gt;http://localhost:8080/&lt;context-path&gt;/</a></p> </blockquote> <p>&#160;</p> <p><font color="#ff0000"><strong>六、问题记录</strong></font></p> <p><strong><font color="#ff0000">1.spring tool suite 启动tomcat后 404错误</font></strong></p> <blockquote> <p>首先删除当前spring tool suite 下建立的所有Server,并且将服务器与应用的关联也要一并彻底删除。然后重新添加一个外部服务器。先不要将应用与该Server绑定,双击该服务器或者右键open,进入属性编辑器中,这时会发现“Server Locations”中选项都是可选的了,可以选择一个你希望发布到的路径。如我希望将项目发布到我本地自行安装的tomcat下。<strong><font color="#ff0000"><a href="http://static.oschina.net/uploads/img/201411/12165008_t5om.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://static.oschina.net/uploads/img/201411/12165008_MgQ6.png" width="244" height="129" /></a></font></strong></p> </blockquote> <p><strong><font color="#ff0000">2. jar包<a href="http://blog.csdn.net/kelingbest/article/details/7600976">will not be exported or published. Runtime ClassNotFoundExceptions may result</a>。导致启动时 Class not&#160; found :org.springframework.web.servlet.DispatcherServlet</font></strong></p> <blockquote> <p><font color="#000000">起初建立web工程后,引入jar包是通过右键项目 ADD External Jars的方式引入的,导致 WEB-INF/lib目录下无实际引用的jar。</font></p> <p><font color="#000000">直接复制所需要的jar,手工粘贴到lib下,这样sts会自动的加载到路径下。</font></p> <p><font color="#000000">ClassNotFound 问题得到解决,</font></p> </blockquote> <p><strong><font color="#ff0000"></font></strong></p>

转载于:https://my.oschina.net/u/989066/blog/343617

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值