使用IDEA构建第一个springMVC项目Helloworld

刚接触springMVC,写一篇博客记录一下,以免后面就忘掉了。。。

一、新建spring mvc

使用IDEA的话可以很快的搭建起一个spring MVC的项目模版,很多需要的配置文件以及目录结构IDEA都会帮我们生成。

首先新建一个工程,选择spring-->spring MVC,如果选择了download,IDEA会帮我们下载需要的库。

使用IDEA构建第一个springMVC项目Helloworld_第1张图片

给项目起一个名字 

使用IDEA构建第一个springMVC项目Helloworld_第2张图片 

点击finish之后,IDEA会帮我们下载库,下载完成之后就能看到工程的详细目录以及其中包含的文件。

使用IDEA构建第一个springMVC项目Helloworld_第3张图片 

使用IDEA构建第一个springMVC项目Helloworld_第4张图片

二、配置项目

点击菜单栏的run-->edit configuration

使用IDEA构建第一个springMVC项目Helloworld_第5张图片 

选择tomcat local 

 使用IDEA构建第一个springMVC项目Helloworld_第6张图片

先打开server选项卡,给服务器起一个名字,选择tomcat的路径,还可以选个默认浏览器什么的,其他的暂时不需要改动。

使用IDEA构建第一个springMVC项目Helloworld_第7张图片 

然后打开Deployment选项卡,创建Artifact

使用IDEA构建第一个springMVC项目Helloworld_第8张图片 

如果最后如下图所示的话就OK了 ,最后apply 点击OK即可。

使用IDEA构建第一个springMVC项目Helloworld_第9张图片 

从工程目录中我们可以看到,工程中包含一个index.jsp文件,我们可以试着运行一下这个项目,看能不能出现index页面,如果试过之后会发现,其实这时候服务都没有启动,看一下输出日志,可以发现是因为spring的原因,再去环境配置看看。

使用IDEA构建第一个springMVC项目Helloworld_第10张图片 

打开project structure,artifacts会发现配置有报错的地方,

使用IDEA构建第一个springMVC项目Helloworld_第11张图片 

使用IDEA构建第一个springMVC项目Helloworld_第12张图片 

解决这个问题点击fix(看上图)将对应的库加载进来就可以了,apply,点击OK即可。 

使用IDEA构建第一个springMVC项目Helloworld_第13张图片 

这时候再次运行该项目,就可以看到index已经运行出来。

使用IDEA构建第一个springMVC项目Helloworld_第14张图片 

三、 添加controller

到此位置,只是配置了一下环境,测试了在当前环境下能运行jsp文件,还没有MVC的东西出现,现在就开始添加controller。在src下面新建一个包,名字可以任意但包是一定要建的,因为springMVC是没办法运行在默认包下面的,我这里叫做horizonhui.mvc.controller

使用IDEA构建第一个springMVC项目Helloworld_第15张图片

 在该包下面新建一个class文件,HelloController。

使用IDEA构建第一个springMVC项目Helloworld_第16张图片

代码如下:

在这段代码中,包含几个注解,@Controller就声明了这是一个控制器,@RequestMapping说明了url路径。 

package horizonhui.mvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("mytest")
public class HelloController {
    @RequestMapping("/hello")
    public String hello(){
        return "/WEB-INF/jsp/hello.jsp";
    }
}

上面我直接写了一个jsp文件的路径,但是我们前面并没有建立这样一个jsp文件,所以我们在WEB-INF下新建一个jsp目录,然后新建一个hello.jsp文件。Spring并不限制你必须创建在WEB-INF下,但是这样更安全,因为WEB-INF目录用户是不能直接访问的,毕竟View里边可能会有一些代码

 使用IDEA构建第一个springMVC项目Helloworld_第17张图片

<%--
  Created by IntelliJ IDEA.
  User: Horizonhui
  Date: 2019/1/23
  Time: 10:13
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


    Hello World!

 此时我们可以通过http://localhost:8080/mytest/hello.form这个url来访问hello.jsp,至于form是个什么东西,我们去看web.xml文件,在url-pattern中指明了*.form,当然我们可以改。

使用IDEA构建第一个springMVC项目Helloworld_第18张图片 

将url-pattern改为/即可 ,这样我们就可以通过这个访问http://localhost:8080/mytest/hello

使用IDEA构建第一个springMVC项目Helloworld_第19张图片

 但是,大家可能已经发现了,不管是更改之前还是更改之后,都是404.。。

使用IDEA构建第一个springMVC项目Helloworld_第20张图片

使用IDEA构建第一个springMVC项目Helloworld_第21张图片 

在这里,其实我们访问的url没错,不管是有没有form,这不是问题所在,我们时尝试通过controller来访问的jsp,controller所在的包也是我们自己建的,说到这你可能知道了,spring找不到我们的controller。从上面的web.xml可以看到,IDEA默认帮我配置了一个名字叫做dispatcher的Servlet,这个Servlet使用org.springframework.web.servlet.DispatcherServlet这个类来处理,那我们就去找dispatcher-servlet.xml这个文件。在beans里面加上这段,指明我们的controller在哪。

使用IDEA构建第一个springMVC项目Helloworld_第22张图片 

到这,再次试一下访问hello.jsp,可以发现helloworld已经出现了。

使用IDEA构建第一个springMVC项目Helloworld_第23张图片

其实,上面我们建的hello.jsp就已经时属于view的部分了,我们在建立controller的同时就将view建立出来了,但是一般来说Controller代码的返回值是成字符串“hello”就可以了,不需要.jsp,也不需要前边的路径,而我们返回的是“/WEB-INF/jsp/hello.jsp” ,这就要在配置文件中设置前缀和后缀了。

四、进一步配置dispatcher

还是找到dispatcher-servlet.xml,配置ViewResolver,加入以下代码,指明前缀和后缀,这里改了不要忘记该controller的返回值。 class 指定ViewResolver的实现的类,你可以根据不同的情况,使用不用的ViewResolver,这里指定是 org.springframework.web.servlet.view.InternalResourceViewResolver

使用IDEA构建第一个springMVC项目Helloworld_第24张图片

        
        
            
            
            
            
        

 此时我们就可以直接返回“hello”了。

使用IDEA构建第一个springMVC项目Helloworld_第25张图片 

五、通过 Model向View传值

将controller文件改成如下代码,通过建立一个Model向View传值

package horizonhui.mvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("mytest")
public class HelloController {
    @RequestMapping("/hello")
    public String hello(Model model){
        model.addAttribute("name","horizonhui");

        //return "/WEB-INF/jsp/hello.jsp";
        return  "hello";
    }
}

同时更改hello.jsp文件,接收来自controller的值

<%--
  Created by IntelliJ IDEA.
  User: Horizonhui
  Date: 2019/1/23
  Time: 10:13
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


    Hello World!
    <%--修改这个地方,接收controller的数据--%>
    ${name}


此时,再次运行该工程,就可以看到jsp页面中显示了从controller过来的值,至此一个简单的springMVC项目就完成了,最初生成的index.jsp其实我们就在也没有用到了。

使用IDEA构建第一个springMVC项目Helloworld_第26张图片

你可能感兴趣的:(Java,web,spring)