2017年9月开始接触Java Web的学习,被要求使用SpringMVC框架进行开发。由于之前使用过Android Studio进行Android App的开发,实在是太喜欢JetBrains的IDE,所以决定使用IntelliJ IDEA来进行环境的搭建。
为了搭建环境,翻查过很多博客,看到写法都有写参差不齐,对于一个新手来说可能会很吃力。
于是在这里对SpringMVC的IntelliJ IDEA环境搭建流程做一个简单记录,此处使用的是2017.2.3版本。
由于本人是初学者,有写的不对的地方希望可以加以指正,谢谢。
点击Create New Project
来创建一个新的工程,在配置项中选择Spring MVC
就可以了,IntelliJ IDEA会自动下载最新版本的SpringMVC框架所需的包,点击Next
之后就是输入工程的名称,这里随便取一个名字叫“testmvc”好了。
工程创建好之后,会看到这样一个目录结构。
首先第一步,我们需要在“WEB-INF”目录下新建两个Directory,分别命名为“lib”和“classes”,并且把工程根目录下的“lib”文件夹下面的包全部复制到新建的“WEB-INF/lib”下。
接下来开始对IntelliJ IDEA进行一些设置。
点击File -> Project Structure
,在弹出的窗口左侧选择Project Setting -> Modules
,打开对Modules的设置并切换到名为Paths
的tab下。选择Use module compile output path
,手动将输出路径改为刚才所新建的“classes”文件夹路径。
然后再切换到名为Dependencies
的tab下,将新建的“WEB-INF/lib”路径添加进去。
下一步,在窗口左侧选择Project Setting -> Artifacts
,将输出目录改为“web”文件夹,再右键点击窗口右半侧选择Put into Output Root
,将所需的库转移到输出根目录下。
到这里,我们对IntelliJ IDEA的配置就暂时告一段落。接下来我们对SpringMVC的几个文件进行一些修改或编写,来写一个Hello World测试一下配置是否正确。
首先是web.xml
的修改,其实IntelliJ IDEA已经帮我们完善了很多配置工作,在这里只需要将“url-patten”标签下的内容进行修改,具体原因还有待学习,网上对此也有很多说法。这里编写Hello World测试改为“/”就行了。
<url-pattern>/</url-pattern>
会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url
<url-pattern>/*</url-pattern>
会匹配所有url,路径型的和后缀型的url(包括/login,.jsp,.js和*.html等)
<?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_3_1.xsd"
version="3.1">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
接着我们来配置一下dispatcher-servlet.xml
,在此之前先在“src”目录下新建一个包用于存放controller,在“WEB-INF”目录下新建一个目录用于存放view,名称可以任取。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
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">
<!--访问静态资源-->
<mvc:default-servlet-handler/>
<!--开启注解-->
<mvc:annotation-driven/>
<!--spring自动扫描该包下面的controller-->
<context:component-scan base-package="com.oshinoshinobu.controller"/>
<!--视图解析器-->
<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
表示spring会到这个包里面去扫描controller。而视图解析器表示会根据注解@RequestMapping
的方法返回值,获取一个“prefix + returnVal + suffix”的视图。
如:返回值为“hello”,则得到“/WEB-INF/jsp/hello.jsp”。
到这里,配置文件算是解决了,我们来写点代码。
先修改一下index.jsp
的内容,添加一个超链接。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Index</title>
</head>
<body>
<a href="hello">Hello SpringMVC</a>
</body>
</html>
再在“WEB-INF/jsp/”下新建一个jsp文件,这里取名为“hello.jsp”。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Hello</title>
</head>
<body>
${msg}
</body>
</html>
视图创建好了,我们还需要一个控制器。
在“src”路径下自己建立的包里添加一个java文件,来编写controller。
package com.oshinoshinobu.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class HelloController {
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String helloWorld(ModelMap modelMap){
modelMap.addAttribute("msg","Hello World!");
return "hello";
}
}
下面我们来运行一下看看效果,点击Run -> Edit Configurations
来配置Tomcat。
新建一个Tomcat的Local Server。
切换到Deployment
的tab, 添加一个新的部署。这里建议把Application context
修改为项目名称,有助于区分。
Tomcat配置好之后如图所示,很多设置都是默认的不需要修改。
如果是第一次配置,还需要点击Configure
来添加Tomcat,选择相应的安装路径即可。
运行一下。
常见问题
1. 运行报错,找不到mvc:default-servlet-handler
声明
解决办法是将dispatcher-servlet.xml
里面的文件头重新添加一下,尤其是xmlns:mvc="http://www.springframework.org/schema/mvc"
。建议将这一行删除之后,在变红的mvc
字段上使用“Alt+Enter”组合键来添加。
2. 看起来一切都正常,就是404
解决办法是重新配置一下Project Structure
里面的设置,修改输出路径,添加lib,修改输出文件夹,少一步就会404。
3. 修改了配置文件之后,依旧说有错误
建议是Build -> Rebuild Project
,往往可以解决。