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

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

一、新建spring mvc

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

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

给项目起一个名字 

 

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

 

二、配置项目

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

 

选择tomcat local 

 

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

 

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

 

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

 

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

 

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

 

 

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

 

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

 

三、 添加controller

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

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

代码如下:

在这段代码中,包含几个注解,@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里边可能会有一些代码

 

<%--
  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" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    Hello World!
</body>
</html>

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

 

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

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

 

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

<context:component-scan base-package="horizonhui.mvc.controller"/>

 

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

其实,上面我们建的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

        <!--指定视图解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <!-- 视图的路径 -->
            <property name="prefix" value="/WEB-INF/jsp/"/>
            <!-- 视图名称后缀  -->
            <property name="suffix" value=".jsp"/>
        </bean>

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

 

五、通过 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" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    Hello World!
    <%--修改这个地方,接收controller的数据--%>
    ${name}
</body>
</html>

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值