写在前面:
要创建一个SpringMVC项目,首先博主使用的工具是STS,使用eclipse也是和STS非常相似的哈,推荐使用STS。在这里我使用的是mac环境,但是具体的软件操作是一样的,不需要担心,耐心按照步骤去做就不会出错的。
关于SpringMVC的相关知识可以查看:
详解SpringMVC
在这里我们就不过多赘述了,直接放干货。
在空白处点击右键,new --> other --> Maven project
输入存储路径,最后一层是项目文件名;选中如图第一种创建方式
点击next之后,分组选根据自己需要输入,Artifact id需要和上一层写的名字相同,选择jar是创建JavaSE项目,war是创建JavaEE项目,pom是创建总体的文件,还需要在里面继续创建Maven module,Maven module是war包的,我们可以直接创建war包的,当项目模块很多是选择pom
错误原因是我们缺少一个配置文件,解决方法是在项目名上右键,Java EE Tools --> 第二项
之后就可以看到报错消失了,并且发现在webapp下多出了一个web.xml文件,这个文件很重要!!!
接下来我们连接tomcat,首先你需要有tomcat哈,如果没有可以去往:
tomcat官网 http://tomcat.apache.org
下载tomcat即可,很小下载很快。
在工具栏中找到performance,左侧选择Perject Facets --> 选中如图中间红框 --> 版本选择到3.1 --> 右边勾选上你的tomcat
到这里创建一个项目的模型就完成了,接下来我们开始正式布置我们的内容。
打开如果看不见内容代码,只需要切换展示模块,如图,选到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,选择如图选项
我们将前端界面放到webapp下,static/**.html , 根据你的页面设置名字哈,页面代码我会在后面放出来。
在刚创建的Servlet的xml文件中,我们首先需要选中下方模块,在其中勾选上如图内容
代码:
<?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 >/*
springDispatcherServlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring/mvc/spring-*.xml
1
springDispatcherServlet
*.action
到这里我们配置文件部分就完成了,接下来来写具体的java代码,实现一个简单的登录功能。
首先展示一下我们的包结构:
代码:
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;
}
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;
}
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());
}
}
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());
}
}
Java代码部分也编写完成啦,最后一步是测试结果了!
我们输入一组测试数据,点击提交,又回到了登录界面,但是数据不见了,说明数据已经正常传到后台去了,因为我们设置的重定向路径还是regist.html。
查看后台结果,可以看到,我们的数据确实是正常的传回来了,对应我们的service层和controller层方法,都没有问题。并且中文也没有出现乱码,说明我们的编码拦截器也生效了。
至此一个完整的SpringMVC项目就搭建完成了,并且实现了前后台的交互功能,复杂的项目也只需要将功能完整一下就可以了。整理不易,期待你的一键三连哦~(手动狗头)