创建SpringMvc项目流程--史上最详细步骤教程


目录

  1. 创建一个Maven项目

  2. 编辑配置文件

  3. 编写Java代码

  4. 测试结果

创建SpringMvc项目流程--史上最详实步骤教程

写在前面:
要创建一个SpringMVC项目,首先博主使用的工具是STS,使用eclipse也是和STS非常相似的哈,推荐使用STS。在这里我使用的是mac环境,但是具体的软件操作是一样的,不需要担心,耐心按照步骤去做就不会出错的。

关于SpringMVC的相关知识可以查看:
详解SpringMVC
在这里我们就不过多赘述了,直接放干货。

1. 创建一个Maven项目

在空白处点击右键,new --> other --> Maven project
输入存储路径,最后一层是项目文件名;选中如图第一种创建方式

点击next之后,分组选根据自己需要输入,Artifact id需要和上一层写的名字相同,选择jar是创建JavaSE项目,war是创建JavaEE项目,pom是创建总体的文件,还需要在里面继续创建Maven module,Maven module是war包的,我们可以直接创建war包的,当项目模块很多是选择pom

finish之后,项目就出来了,但是看到报错了,不要慌

错误原因是我们缺少一个配置文件,解决方法是在项目名上右键,Java EE Tools --> 第二项

之后就可以看到报错消失了,并且发现在webapp下多出了一个web.xml文件,这个文件很重要!!!

接下来我们连接tomcat,首先你需要有tomcat哈,如果没有可以去往:
tomcat官网 http://tomcat.apache.org
下载tomcat即可,很小下载很快。
在工具栏中找到performance,左侧选择Perject Facets --> 选中如图中间红框 --> 版本选择到3.1 --> 右边勾选上你的tomcat

到这里创建一个项目的模型就完成了,接下来我们开始正式布置我们的内容。

2. 编辑配置文件

首先我们打开这个项目的pom.xml文件

打开如果看不见内容代码,只需要切换展示模块,如图,选到pom

在这里我们需要做的事情是在这份配置文件当中写入依赖,可以配置到我们所需要的帮助文件,平时是通过导入jar包完成的,现在需要通过写依赖来完成。常用的依赖可以在:
常用maven依赖总结
中查看,在这里我直接将我的代码展示出来:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>spring-demo</groupId>
    <artifactId>springdemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>spring-example</artifactId>
  <packaging>war</packaging>

    <properties>
        <project.spring.version>5.2.12.RELEASE</project.spring.version>
        <project.lombok.version>1.18.16</project.lombok.version>
        <project.junit.version>4.12</project.junit.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${project.lombok.version}</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${project.junit.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${project.spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.12.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.12.1</version>
        </dependency>

    </dependencies>
</project>

写好之后可以在,Maven dependence 中查看到:

接下来我们需要在src/main/resource中创建spring/mvc/spring-mvc.xml(文件结构在下一张图) , 我们要在这里配置servlet,建议xml文件命名为springmvc-Servlet.xml , 这里是博主大意了,后面的项目我都改过来了。
创建过程是,在mvc文件夹上右键,搜索spring,选择如图选项

接下来点击 Source模块,编辑内容,如下:

代码:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">


<context:component-scan base-package="com.dyit" ></context:component-scan>
<!-- 基于注解的驱动 -->
<mvc:annotation-driven />
<!-- location="static/" 指的具体的本地的地方 mapping="static/**" 指的是映射的网页地址的 -->
<mvc:resources location="static/" mapping="static/**"></mvc:resources>

</beans>

配置完servlet,接下来我们打开web.xml文件,首先是修改版本号为3.1 , 接着我们在这里配置一下刚刚写好的servlet的拦截请求相关配置,并且我写了一个字符编码拦截器(),这个拦截器可以处理中文乱码问题,复用率非常高之后我们每个项目可能都需要。

代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd"
    version="3.1">
    <display-name>spring-example</display-name>
    <filter>
        <filter-name>charset</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>
    </filter>
    <filter-mapping>
        <filter-name>charset</filter-name>
        <url-pattern >/*</url-pattern>
    </filter-mapping>

    <servlet>
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/mvc/spring-*.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!-- Map all requests to the DispatcherServlet for handling -->
    <servlet-mapping>
        <servlet-name>springDispatcherServlet</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>
</web-app>

到这里我们配置文件部分就完成了,接下来来写具体的java代码,实现一个简单的登录功能。

3. 编写Java代码

首先展示一下我们的包结构:

  1. 编写实体类:User
    这里写了lombok的注解 ,

代码:

package com.dyit.spring.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@AllArgsConstructor
@Data
@NoArgsConstructor
public class User {
    private String username;
    private String password;


}
  1. dto传输层:HttpResp
package com.dyit.spring.dto;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@Data
public class HttpResp {
    private int code;
    private String msgString;
    private Object results;
    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",timezone="GMT+8")
    private Date date;

}
  1. Service层:UserService
package com.dyit.spring.service;

import com.dyit.spring.entity.User;

public interface IUserService {
    void addUser(User user);
}




package com.dyit.spring.service;

import org.springframework.stereotype.Service;

import com.dyit.spring.entity.User;
@Service
public class UserServiceImpl implements IUserService {

    @Override
    public void addUser(User user) {
        System.out.println("add"+user.getUsername());
        System.out.println("add"+user.getPassword());
    }

}
  1. 接下来是最重要的Controller层 :Controller
package com.dyit.spring.controller;
import java.util.Date;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.dyit.spring.dto.HttpResp;
import com.dyit.spring.entity.User;
import com.dyit.spring.service.IUserService;

//这里应该是@Controller  由于博主电脑不知名原因只能写成带包的,大家不用这样写
@org.springframework.stereotype.Controller
public class Controller {
    @Autowired
    private IUserService iUserService;
    @RequestMapping("/regist.action")
    public String regist(User user) {
        iUserService .addUser(user);
        System.out.println("regist:"+user);
        return "redirect:static/regist.html";   
    }
    /**
     * @ResponseBody注解就会被扫描到,把此注解下的内容变成json
     * @return
     */
    @RequestMapping("/findAll.action")
    @ResponseBody
    public HttpResp  findAll() {
        return new HttpResp(2001,"查询成功",new User("anmin","123"),new Date());
    }
}
  1. 页面:register.html

Java代码部分也编写完成啦,最后一步是测试结果了!

4. 测试结果

我们需要从页面上开始运行,之后浏览器启动可以看到:

我们输入一组测试数据,点击提交,又回到了登录界面,但是数据不见了,说明数据已经正常传到后台去了,因为我们设置的重定向路径还是regist.html。

查看后台结果,可以看到,我们的数据确实是正常的传回来了,对应我们的service层和controller层方法,都没有问题。并且中文也没有出现乱码,说明我们的编码拦截器也生效了。
至此一个完整的SpringMVC项目就搭建完成了,并且实现了前后台的交互功能,复杂的项目也只需要将功能完整一下就可以了。整理不易,期待你的一键三连哦~(手动狗头)


原文链接:https://blog.csdn.net/weixin_44587820/article/details/113407166?utm_medium=distribute.pc_category.none-task-blog-hot-6.nonecase&depth_1-utm_source=distribute.pc_category.none-task-blog-hot-6.nonecase&request_id=