SpringMVC学习笔记1——Intellij使用SpringMVC实现第一个HelloWorld程序(使用Maven导入依赖)

一、创建Maven程序

1.new project

填写程序的Maven坐标

选择自身maven根目录,其他默认即可

修改项目信息,点击finish即创建完成

修改目录结构,在main文件下新建一个src文件夹并设置成Source Root文件目录

一个Maven管理的web项目就创建完成!

二、添加相关依赖

点开pom.xml文件可以看到默认是有junit依赖的

这里我们要使用SpringMVC框架,导入spring-webmvc依赖,来到Maven Repository,搜索

点击第一个然后选择

4.1.1.RELEASE

版本,进入后赋值粘贴maven地址:

<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>4.1.1.RELEASE</version>
</dependency>

为了统一对spring jar包版本统一管理,我们使用

    <spring.version>4.1.1.RELEASE</spring.version>

这样springmvc的jar包就导入进来了!

三、配置SpringMVC

在src目录下(不一定在这里,也可以在别的地方)新建springmvc.xm:

在web.xml配置前端控制器,并将springmvc.xml配置文件加载进来:<web-app>里面加上以下代码:

    <!--springmvc前端控制器-->
    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--contextConfigLocation配置springmvc加载的配置文件(配置处理器映射器、适配器等)-->
        <!--如果不配置,则默认加载/WEB-INFO/servlet下名称为-servlet.xml(springmvc-servlet.xml)-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <!--放在src文件夹下,所以就是classpath:...-->
            <param-value>classpath:sprinmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

如果还要让springmvc控制器能接受中文请求的话还得配置springmvc自带的编码过滤器

    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

     加上后如果web-app报错如一样,把web.xml文件上面的

     

     删掉就可以了!

四、编写处理请求的处理器

src下新建一个控制器类cn.jxufe.controller.HelloWorldController

package cn.jxufe.controller;

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

//加上注解就是一个控制器了!
@Controller
public class HelloWorldController {

    //使用RequestMapping来映射来自jsp的请求

    //返回值会通过视图解析器解析为现实的物理视图 即文件prefix + 返回值 + suffix,这里就          
    //是/WEB-INF/success.jsp
    @RequestMapping(value = "/helloworld", method = RequestMethod.POST)
    public String helloWorld() {
        return "success";
    }
}

value就是发送请求时访问到这个控制器这个方法的url,method指明需要的请求方式。

然后在到springmvc下配置视图解析器:

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
        <property name="prefix" value="/WEB-INF/"> </property>
        <property name="suffix" value=".jsp"> </property>
    </bean>

五、新建success.jsp并运行!

修改index.jsp

<html>
<body>
    <a href="helloworld">to success.jsp</a>
</body>
</html>

新建success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>成功</title>
</head>
<body>
    <h1>Hello World!</h1>
</body>
</html>

配置好tomcat然后运行:

发现启动失败:

查看日志

可以知道当我们访问index.jsp时也是向diapatcherServlet发送请求,dispatcher扫描控制器映射,发现映射中没有符合名为index.jsp的控制器,所以就会出现错误。

具体原理可以看这个

把web中的/*改成/helloworld,重启tomcat

发现就可以启动了:

<%--index.jsp--%>
<html>
<body>
    <form action="/helloworld" method="post">
        <input type="submit" value="to success.jsp"/>
    </form>
</body>
</html>

点击to successful.jsp

成功!

后加:

其实前面web.xml的配置可以直接吧 / * 改成 //*表示管理所有请求不管时jsp、html、jpg什么的,而 / 表示只管理url没有后缀名的请求。

或者可以改成类似于 /*.do这样的,后缀名为 .do 的请求都要被安排!

web.xml文件中的<load-on-startup> 标签表示的是该DispatcherServlet在服务器启动时就被加载(实例化并调用其init()方法)!

猜你喜欢

转载自blog.csdn.net/qq_38016931/article/details/81209486