这几天一直想用idea重新学一下Spring,重温一下Spring的知识,今天我想用idea创建一个SpringMVC项目。
一,首先新建一个Spring项目,勾选如下
点击Next
填写projectname
之后再点击fineshed。
二。idea会帮我们创建一个SpringMVC的模板,下面是项目结构
lib文件夹下是idea自动回我们下载好的jar包
三。此时我们添加一个tomcat
添加一个tomcat
之后在Deployment 中添加我们这个项目
添加完项目是这样
点击Apply , OK
四。之后我们可以运行tomcat了
运行之后,发现起不来,麻蛋,idea的模板原来还起不来,后来查了资料,
参考这篇博文,找到了解决办法
在这篇博文中说我们要看一下Tomcat Localhost Log的日志,我们发现:
好嘛。ClassNotFoundException ,原来是缺少类,在这篇博文中,他说少配置,idea真操蛋,模板居然都不能用,那我们按照博文中写的配置一下,
按照如上图所示,将相应的配置引入,我是用的是第一种,之后就能正常启动了,我访问index.jsp也没有问题
五。下面我们来写一个Controller,并且来访问一下
我们在src新建了一个包com.taoj.controller 并且在其下新建了一个类
package com.taoj.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/hi")
public class HelloController {
@RequestMapping("/say")
public String sqyHello(){
return "/WEB-INF/jsp/say.jsp";
// return "say";
}
}
现在我们先写 return "/WEB_INF/jsp/say.jsp";
此时我们重启项目,访问一下 404
应该是因为没有say.jsp ,那么我们新建一个say.jsp
say.jsp内容如下:
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2019/5/23
Time: 21:31
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
Sqy Hello World
</body>
</html>
现在去访问还是404,
接下来我们在dispatcher-servlet.xml配置扫描包的语句就好使了
<!--扫描包-->
<context:component-scan base-package="com.taoj.controller" />
现在我们访问 http://localhost:8080/mvc/hi/say.form
应该就能正常访问了,那么如果我把Controller中的return 语句写成 return "say";之后呢,访问时行不行,答案是不行,因为我们还没有配ViewResolver
那么我们来配置一下ViewResolver
也是在dispatcher-servlet.xml中配置:
<!--指定视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 视图的路径 -->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!-- 视图名称后缀 -->
<property name="suffix" value=".jsp"/>
</bean>
现在访问:http://localhost:8080/mvc/hi/say.form
结果如下:
------------------------------------------------*******************************------------------------------------------------------------
------------------------------------------------*******************************------------------------------------------------------------
这里我加一个问题,就是我再后来练习这个demo的时候,将上述dispatcher-servlet.xml中 prefix中的值 :
/WEB-INF/jsp/ 中 前面的 / 忘写了,也就写成了 WEB-INF/jsp/ 调试的时候总是找不到 后面的jsp ,后来才发现是这里少写了一个 / (斜杠) ,以后记住了,原来Spring 这里还没有考虑到这里忘写 / (斜杠)的问题,但是这只是一个Demo,一般情况下都不这么用的,这里记录一下,方便学习。
------------------------------------------------*******************************------------------------------------------------------------
------------------------------------------------*******************************------------------------------------------------------------
六,我再写一个Controller的sayLove方法:
package com.taoj.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/hi")
public class HelloController {
@RequestMapping("/say")
public String sqyHello(){
// return "/WEB-INF/jsp/say.jsp";
return "say";
}
@RequestMapping("/love")
@ResponseBody
public String sayLove(){
return "我爱你火星";
}
}
然后重启项目,访问http://localhost:8080/mvc/hi/love.form,结果如下:
输出了但是有乱码,乱码的问题我们再说。
使用idea创建SpringMVC项目就写到这里,方便以后自己回忆,如果有什么不对之处,请指出来,谢谢
不积跬步,无以至千里
不积小流,无以成江海