Fork me on GitHub

IDEA搭建maven与springmvc

昨天学了一下午springmvc的搭建,接着又做了几个小例子,觉得挺简单的。心想今天早上起来接着往下学,结果新建了一个项目之后,连最简单的Demo都运行不起来,想了想,还是给自己做个流程,以免以后自己忘了几个关键的步骤。

先新建一个maven框架的项目。

为解决下载maven骨架时网络过慢的问题,添加参数archetypeCatalog,值为internal。这样的话,项目就会加载本地的中心元骨架。

建立完成后,右击项目添加springmvc框架。

同时在pom.xml中添加如下依赖。如果不添加此段代码,则运行时可能报出 java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener
错误

在这里提供maven仓库的url:maven,可以很方便地查到很多版本的依赖

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>4.3.16.RELEASE</version>
</dependency>

在web.xml中,将servlet-name替换为HelloSpringMvc,同时在WEB-INF目录下新建HelloSpringMvc-servlet.xml文件。

在main目录下新建Java目录、controller包、HelloController类:

@Controller:注解,采用注解方式定义处理请求的controller类。
@RequestMapping():注解,定义请求的url及请求方法。
–return “hello”:该方法处理完请求返回的视图名称。

HelloSpringMvc-servlet.xml代码如下:

<?xml version="1.0" encoding="utf-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <context:component-scan base-package="controller"/>
    <mvc:annotation-driven/>

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp"/>
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

context:component-scan:指明要扫描的包的路径
mvc:annotation-driven:会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的。
注意:1、xmlns:mvc的导入url地址为http://www.spring.framework.org/scheme/mvc,若最后为scheme/cache,会报No bean named ‘cacheManeger’ is defined错误
2、xsi:schemaLocation中最后两个的导入地址最后也为mvc,若为cache,会报通配符的匹配很全面, 但无法找到元素 ‘mvc:annotation-driven’ 的声明的错误。
3、location属性的前两行不要忘记添加,否则会报javax.servlet.ServletException: Servlet.init() for servlet threw exception错误。
bean的讲解放在后面。

在WEB-INF下新建jsp目录,并新建hello.jsp:

servlet文件里标签中的两个属性,实际上都是为controller类返回的字符串服务的。”prefix”的值为相对地址的前缀,”suffix”的值为文件的后缀。如本次返回的hello,组合在一起就是”/WEB-INF/jsp/hello.jsp”。

运行Tomcat,最后得到如下结果:

-------------本文结束感谢您的阅读-------------