最近在某培训网站上购买了一个SpringMvc教程,视频中讲解使用的Eclipse,然而本人使用的IDEA,IDE的不同也让我的学习之路充满了坎坷,写这篇文章的目的就是为了帮助新人在搭建SpringMvc环境中尽量避免我已经踩过得坑,让你能体验到SpringMvc的魅力。
写在前面,本人也因能力有限不能保证所有内容完全正确,如有纰漏还希望各位大佬多多指点。
1.什么是SpringMvc
SpringMvc应该是目前java网页开发最受欢迎的框架,他的运行原理如下图
首先由客户端发起请求,由前端控制器进行拦截,前端控制器将URL发送给URL映射器,URL映射器根据URL地址进行路由,将Controller中的某一个方法封装成一个handler对象,返还给前端控制器,适配器收到前端控制器传过来的handler对象,执行其中的方法后返回一个ModelAndView对象,前端控制器再次将ModelAndView传给视图解析器,视图解析器解析ModelAndView中的逻辑视图得到物理视图并且使用模型渲染,将经过渲染的物理视图返还给前端控制器,控制器再对客户端进行响应。
2.Hello SpringMvc
现在就使用IDEA来创建一个SpringMvc项目。
1. 新建项目
这里填写一下项目名称,路径,包名等信息,不做过多解释,下一步。
Finish
等待maven构建好项目。
2. 添加引用
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.25.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
添加引用后等待maven导入依赖包,如果过慢或失败,修改国内镜像后重新Reimport
3. 项目加入框架
在弹出的对话框中选中SpringMvc。
如果对话框中没有Spring栏如下图。
先删除SpringMvc后重新选择,操作如下
重复之前的步骤对项目添加SpringMvc框架。
此时项目结构如下
4. 配置SpringMvc
dispatcher-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
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-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">
<!-- 这其中包括了映射器RequestMappingHandlerMapping和适配器RequestMappingHandlerAdapter -->
<mvc:annotation-driven/>
<context:component-scan base-package="com.yyl.europa"/>
<!--
映射器
1.接收Url返回handler
使用Url与spring ioc容器中的注解比较
-->
<!--<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
</bean>-->
<!--
适配器
1.接收handler
2.返回ModelAndView
要求控制器必须有@Controller注解
-->
<!--<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
</bean>-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/view/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
此处踩过的坑:
①. servlet-mapping中的servlet-name报错
检查项目的web.xml配置路径是否正确。
②. web文件夹没有小蓝点,可能导致的问题为编译出的项目没有dispatcher-servlet.xml。
检查这两处路劲是否为项目对应的web.xml和对应的web文件夹路径
5. 新建Controller及实体类
红框为需要注意的点
6. 编写测试jsp页面
7. 配置tomcat
踩过的坑:
①. 如果此处点+没有可以添加的 这个
在下图所示位置添加。
output directory的红框是我遇到的坑中坑,注意编译后的输出目录一定要指向tomcat的目录。
8. 启动!
输入内容点击GO之后
控制台成功输出。
简单的介绍先到这里,有再想起来需要注意的点后会及时补充,并且如果有其他问题欢迎评论提问。