这几天一直想用idea重新学一下Spring,重温一下Spring的知识,今天我想用idea创建一个SpringMVC项目。

一,首先新建一个Spring项目,勾选如下

idea启动Spring的容器 idea怎么启动springmvc项目_spring

点击Next

idea启动Spring的容器 idea怎么启动springmvc项目_tomcat_02

填写projectname

之后再点击fineshed。

二。idea会帮我们创建一个SpringMVC的模板,下面是项目结构

idea启动Spring的容器 idea怎么启动springmvc项目_spring_03

lib文件夹下是idea自动回我们下载好的jar包

idea启动Spring的容器 idea怎么启动springmvc项目_spring_04

三。此时我们添加一个tomcat

idea启动Spring的容器 idea怎么启动springmvc项目_tomcat_05

 

添加一个tomcat

idea启动Spring的容器 idea怎么启动springmvc项目_tomcat_06

之后在Deployment 中添加我们这个项目

idea启动Spring的容器 idea怎么启动springmvc项目_idea启动Spring的容器_07

添加完项目是这样

idea启动Spring的容器 idea怎么启动springmvc项目_ide_08

点击Apply , OK

四。之后我们可以运行tomcat了

idea启动Spring的容器 idea怎么启动springmvc项目_tomcat_09

运行之后,发现起不来,麻蛋,idea的模板原来还起不来,后来查了资料,

参考这篇博文,找到了解决办法


在这篇博文中说我们要看一下Tomcat Localhost Log的日志,我们发现:

idea启动Spring的容器 idea怎么启动springmvc项目_idea启动Spring的容器_10

好嘛。ClassNotFoundException ,原来是缺少类,在这篇博文中,他说少配置,idea真操蛋,模板居然都不能用,那我们按照博文中写的配置一下,

idea启动Spring的容器 idea怎么启动springmvc项目_idea启动Spring的容器_11

 

idea启动Spring的容器 idea怎么启动springmvc项目_ide_12

按照如上图所示,将相应的配置引入,我是用的是第一种,之后就能正常启动了,我访问index.jsp也没有问题

idea启动Spring的容器 idea怎么启动springmvc项目_spring_13

 

五。下面我们来写一个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

idea启动Spring的容器 idea怎么启动springmvc项目_tomcat_14

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

结果如下:

idea启动Spring的容器 idea怎么启动springmvc项目_tomcat_15

 

------------------------------------------------*******************************------------------------------------------------------------

------------------------------------------------*******************************------------------------------------------------------------

这里我加一个问题,就是我再后来练习这个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启动Spring的容器 idea怎么启动springmvc项目_idea启动Spring的容器_16

输出了但是有乱码,乱码的问题我们再说。

使用idea创建SpringMVC项目就写到这里,方便以后自己回忆,如果有什么不对之处,请指出来,谢谢

 

 

不积跬步,无以至千里

不积小流,无以成江海