1.模块构建
使用maven骨架创建模块(注意选择合适版本的maven以及其对应的配置和私服仓库);
在project structure里补充其缺失的java文件夹;
配置pom文件:
1.删除name url;修改编译版本为1.7;删除依赖和相关bulid配置
2.导入需要的坐标依赖和配置(主要包括servlet\springmvc\json坐标依赖和tomcat7运行插件)
<!--导入servlet和springmvc的坐标依赖-->
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<!--导入json坐标依赖-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.9</version>
</dependency>
</dependencies>
<!--加载tomcat7运行插件-->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>80</port>
<path>/</path>
<uriEncoding>UTF-8</uriEncoding>
</configuration>
</plugin>
</plugins>
</build>
2.编写后台接口并测通
(1)创建配置类config
主要是两个:springmvc配置类+servlet容器初始化配置类---基本为固定写法
解析注解:
springmvc配置类下三个注解,作为表现层框架只需要扫描controller包即可
//该注解表明是一个配置类
@Configuration
//该注解用来扫描对应的controller
@ComponentScan("controller")
//该注解可以使mvc来把json数据转换为对象处理
@EnableWebMvc
spring配置类下两个注解,精准扫描除了controller包外的其他包即可
//该注解表明是一个配置类
@Configuration
//该注解用来扫描对应的除了controller包的其他包
//写成数组形式
@ComponentScan({"service","dao"})
servlet容器初始化配置类无需注解,固定写法
(2)创建pojo包(或domin包),写对应的实体类book
主要包括三个部分:形参声明+tostring方法方便打印+get\set方法
(3)创建controller包---bookcontroller---使用restful风格简化书写
//该注解表明是一个bean
@RestController
//提取公共访问路径
@RequestMapping("/books")
public class BookController {
//表明动作行为,保存方法是post
@PostMapping
//传参需要使用注解RequestBody
public String save(@RequestBody Book book){
System.out.println("book save ==> "+ book);
return "{'module':'book save success'}";
}
//查询全部是get动作
@GetMapping
public List<Book> getAll(){
System.out.println("book getAll is running ...");
List<Book> bookList = new ArrayList<Book>();
//模拟后台传参数据给浏览器做响应
Book book1 = new Book();
book1.setType("计算机");
book1.setName("SpringMVC入门教程");
book1.setDescription("小试牛刀");
bookList.add(book1);
Book book2 = new Book();
book2.setType("计算机");
book2.setName("SpringMVC实战教程");
book2.setDescription("一代宗师");
bookList.add(book2);
Book book3 = new Book();
book3.setType("计算机丛书");
book3.setName("SpringMVC实战教程进阶");
book3.setDescription("一代宗师呕心创作");
bookList.add(book3);
return bookList;
}
}
最后使用postman测试跑通即可
(4)页面处理
解决问题:springmvc拦截了所有资源可能使得前端页面无法正常访问
处理:
添加springmvcsupport配置类,并在springmvc配置类里加载扫描(数组形式)
springmvcsupportconfig
@Configuration
public class SpringMvcSupport extends WebMvcConfigurationSupport {
//设置静态资源访问过滤,当前类需要设置为配置类,并被扫描加载
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
//当访问/pages/????时候,从/pages目录下查找内容
registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");
registry.addResourceHandler("/js/**").addResourceLocations("/js/");
registry.addResourceHandler("/css/**").addResourceLocations("/css/");
registry.addResourceHandler("/plugins/**").addResourceLocations("/plugins/");
}
}
(5)绑定页面与后台controller功能
前端使用ajax传递数据,发送异步请求提交,模拟数据(前端发来数据,不进行数据库持久化处理;后端模拟数据,不是数据库存的,请求后在前端浏览器响应)