您的位置:首页 > 编程语言 > Java开发

搭建Spring MVC 入门程序

2014-11-12 00:00 211 查看
<p>        今天使用Spring  Tool Suite 搞了一个 SpringMVC超级入门的程序,没想到碰到了一些跟SpringMVC无关的问题,在此记录一下,给后来者和自己一个借鉴。 <br />Spring MVC Hello World <br /><font color="#ff0000"><strong>一、准备开发环境和运行环境:</strong></font> <br />☆开发工具:Spring  Tool  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、  Spring框架jar包: <br />为了简单,将spring-framework-3.1.1.RELEASE-with-docs.zip/<font color="#0000ff">dist/下的所有jar</font>包拷贝到项目的WEB-INF/lib目录下; <br />2、  Spring框架依赖的jar包(可以根据关键字查找一下快速定位): <br />需要添加Apache commons logging日志,此处使用的是<font color="#0000ff">commons.logging-1.1.1.jar</font>; <br />           位于 \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 />            \projects\ivy-cache\repository\org.apache.taglibs\com.springsource.org.apache.taglibs.standard\1.1.2,目录下</p> <p><font color="#ff0000"><strong>二、  前端控制器的配置dispatcherServlet</strong></font></p> <p>在我们的<font color="#0000ff">web.xml</font>中添加如下配置:</p> <p><font face="Arial"><?xml version="1.0" encoding="UTF-8"?> <br /><web-app xmlns:xsi="</font><a href="http://www.w3.org/2001/XMLSchema-instance""><font face="Arial">http://www.w3.org/2001/XMLSchema-instance"</font></a> <br /><font face="Arial">    xmlns="</font><a href="http://java.sun.com/xml/ns/javaee""><font face="Arial">http://java.sun.com/xml/ns/javaee"</font></a> <br /><font face="Arial">    xsi:schemaLocation="</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""><font face="Arial">http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"</font></a> <br /><font face="Arial">    id="WebApp_ID" version="2.5"></font></p> <p><font face="Arial">    <!-- Spring mvc的主servlet --> <br />    <servlet> <br />        <servlet-name><font color="#9e7c7c">helloController</font></servlet-name> <br />        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <br />        <load-on-startup>1</load-on-startup> <br />    </servlet> <br />    <servlet-mapping> <br />        <servlet-name>helloController</servlet-name> <br />        <url-pattern>/</url-pattern> <br />    </servlet-mapping></font></p> <p><font face="Arial"></web-app></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">创建<servlet-name>-servlet.xml文件</font>,这里对应的就是helloController-servlet.xml,放在web.xml的同级目录</p> <p><font face="Arial"><?xml version="1.0" encoding="UTF-8"?> <br /><beans xmlns="</font><a href="http://www.springframework.org/schema/beans""><font face="Arial">http://www.springframework.org/schema/beans"</font></a> <br /><font face="Arial">    xmlns:xsi="</font><a href="http://www.w3.org/2001/XMLSchema-instance""><font face="Arial">http://www.w3.org/2001/XMLSchema-instance"</font></a><font face="Arial"> xmlns:mvc="</font><a href="http://www.springframework.org/schema/mvc""><font face="Arial">http://www.springframework.org/schema/mvc"</font></a> <br /><font face="Arial">    xmlns:p="</font><a href="http://www.springframework.org/schema/p""><font face="Arial">http://www.springframework.org/schema/p"</font></a><font face="Arial"> xmlns:context="</font><a href="http://www.springframework.org/schema/context""><font face="Arial">http://www.springframework.org/schema/context"</font></a> <br /><font face="Arial">    xsi:schemaLocation="</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">        </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">        </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""><font face="Arial">http://www.springframework.org/schema/context/spring-context-3.0.xsd"</font></a><font face="Arial">></font></p> <p><font face="Arial">    <font color="#d16349"><context:component-scan base-package="com.hunter.spring3.introduce" /> <br />    <mvc:annotation-driven /></font></font> <br /><font face="Arial">    <!-- ViewResolver --> <br />  <font color="#d16349">  <bean <br />        class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <br />        <property name="viewClass" <br />            value="org.springframework.web.servlet.view.JstlView" /> <br />        <property name="prefix" value="/WEB-INF/view/" /> <br />        <property name="suffix" value=".jsp" /></font> <br />    </bean> <br />    </beans></font></p> <p>说明:</p> <p>1)所有请求都要由DispatcherServlet来处理,因此映射到"/"上面(包括静态页面),</p> <p><load-on-startup>不加经测试也未见出错,而且如果要修改spring-servlet.xml的配置位置或名字,</p> <p>可以加</p> <p><init-param></p> <p>       <param-name>contextConfigLocation</param-name> <br />       <param-value>/WEB-INF/spring-servlet.xml</param-value> <br /></init-param></p> <p>但一定要放到<load-on-startup>前面,否则xml校验出错(经测试)。</p> <p>2)在spring-servlet.xml中,引入了mvc和context两个命名空间,其中<mvc:annotation-driven/>表示这里使用注解进行开发,<context:component-scan>指明注解所在的包名,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> </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">   <font color="#0000ff">@RequestMapping(value={"/hello","/"}) <br /></font>    public String handler() { <br />        return "hello"; <br />    } <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/<context-path>/hello">/hello">http://localhost:8080/<context-path>/hello</a></p> </blockquote> <blockquote> <p>或者</p> <p><a href="http://localhost:8080/<context-path>/">/">http://localhost:8080/<context-path>/</a></p> </blockquote> <p> </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  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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: