这几天一直想用idea重新学一下Spring,重温一下Spring的知识,今天我想用idea创建一个SpringMVC项目。
一,首先新建一个Spring项目,勾选如下
点击Next
填写projectname
之后再点击fineshed。
二。idea会帮我们创建一个SpringMVC的模板,下面是项目结构
lib文件夹下是idea自动回我们下载好的jar包
三。此时我们添加一个tomcat
添加一个tomcat
之后在Deployment 中添加我们这个项目
添加完项目是这样
点击Apply , OK
四。之后我们可以运行tomcat了
运行之后,发现起不来,麻蛋,idea的模板原来还起不来,后来查了资料,
参考这篇博文,找到了解决办法
http://www.cnblogs.com/wormday/p/8435617.html
在这篇博文中说我们要看一下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项目就写到这里,方便以后自己回忆,如果有什么不对之处,请指出来,谢谢
不积跬步,无以至千里
不积小流,无以成江海
