SpringMVC基础

embedded/2024/10/18 8:32:51/

目录

一:什么是SpringMVC

二:SpringMVC快速入门

1.导入依赖

2.创建核心配置类

3.创建controller关键类

4.创建访问的资源

tomcat-toc" style="margin-left:40px;">5.配置tomcat

6.浏览器测试

7.解决中文乱码问题:

  三:测试工具:Postman

1.软件介绍:

2.测试请求数据

 Get请求:

2.1:普通参数—参数名相同

 2.2参数为字符串数组

2.3参数为字符串集合

2.4日期类型

Post请求:

2.5普通参数—参数名相同

2.6普通参数—参数名不同

2.7参数为实体类型

2.8参数为实体类型嵌套实体类

2.9JSON数组—字符串数组接收,集合接收

2.10JSON对象—实体类接收

2.11JSON对象数组—实体类集合接收

3.测试响应数据

3.1POJO转JSON字符串

3.2POJO集合转JSON数组


 一:什么是SpringMVC

SpringMVC是一个基于Java实现了MVC设计模式的请求驱动类型的轻量级web框架,通过把模型--视图--控制器分离,将web层进行职责解耦,把复杂的web运用分成逻辑清晰的几部分,简化开发,减少出错,方便组内成员的配合

二:SpringMVC快速入门

1.导入依赖

创建Maven项目,并导入对应的jar包,在pom.xml文件中导入以下两个依赖

<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.31</version></dependency>

2.创建核心配置类

在src包下创建两个包,分别为config包和controller包

在config包下创建SpringMvcConfig核心配置类 

java">
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.view.InternalResourceViewResolver;@Configuration//表示为一个配置类
@ComponentScan("com.lcyy")//扫描包
public class SpringMvcConfig {//创建一个视图解析器到IOC容器中去@Beanpublic InternalResourceViewResolver internalResourceViewResolver(){InternalResourceViewResolver resolver = new InternalResourceViewResolver();//设置视图的前缀resolver.setPrefix("/pages/");//设置后缀resolver.setSuffix(".jsp");return resolver;}}

在创建ServletConfig类

java">import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;public class ServletConfig extends AbstractDispatcherServletInitializer {//加载springmvc配置,放到IOC容器中去@Overrideprotected WebApplicationContext createServletApplicationContext() {AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();ctx.register(SpringMvcConfig.class);return ctx;}//配置tomcat需要接收到的哪些资源@Overrideprotected String[] getServletMappings() {return new String[]{"/"};}//加载spring配置@Overrideprotected WebApplicationContext createRootApplicationContext() {return null;}
}

3.创建controller关键类

java">import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
public class UserController {//访问的是视图@RequestMapping("/save")public String save(){return "success";}/*** @ResponseBody 添加这个注解表示为在视图显示json字符串* @return*/@RequestMapping("/save2")@ResponseBodypublic String save2(){return "hello";}
}

4.创建访问的资源

在webapp下创建pages包,在包下创建名为:success.jsp的jsp文件

<%--Created by IntelliJ IDEA.User: 22818Date: 2024/5/12Time: 13:23To 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 我是Springmvc
</body>
</html>

tomcat">5.配置tomcat

6.浏览器测试

运行tomcat,在浏览器输入localhost:8080/save 和  localhost:8080/save2,对应的结果分别如下:

7.解决中文乱码问题:

在ServletConfig类下,重写getServletFilters()方法(此为过滤器),定义编码格式为utf-8

java"> /*** 解决中文乱码问题,使用过滤器(输入(服务器向外发送为输入))* @return*/@Overrideprotected Filter[] getServletFilters() {CharacterEncodingFilter filter = new CharacterEncodingFilter();//设置为utf-8filter.setEncoding("utf-8");//返回过滤器return new Filter[]{filter};}

  三:测试工具:Postman

1.软件介绍:

1. Postman 是一款功能超级强大的用于发送 HTTP 请求的 测试工具
2. 做 WEB 页面开发和测试的人员常用工具
3. 创建和发送任何的 HTTP 请求 (Get/Post/Put/Delete...) 

2.测试请求数据

 Get请求:

2.1:普通参数—参数名相同
java">/*** 普通参数--参数相同(get)* @param name* @param age* @return*/@RequestMapping("/commonParam")@ResponseBodypublic String commonParam(String name,Integer age){System.out.println("name = " + name);System.out.println("age = " + age);return "success";}
 2.2参数为字符串数组
java">  /*** 参数为字符串数组(get请求)* @param hobby* @return*/@RequestMapping("/arrayParam")@ResponseBodypublic String arrayParam(String[] hobby){//封装到数组里System.out.println("hobby = " + Arrays.toString(hobby));return "success";}
2.3参数为字符串集合
java">/*** 参数为字符串集合(get)需添加@RequestParam* @param hobby* @return*/@RequestMapping("/listParam")@ResponseBodypublic String listParam(@RequestParam List<String> hobby){System.out.println("hobby = " + hobby);return "success";}
2.4日期类型
java">  /*** 日期格式* @param date* @param date1* @return*/@RequestMapping("/dateParam")@ResponseBodypublic String dateParam(Date date,@DateTimeFormat(pattern = "yyyy-MM-dd") Date date1){System.out.println("date = " + date);System.out.println("date1 = " + date1);return "success";}

Post请求:

2.5普通参数—参数名相同
java">/*** 普通参数--参数相同(get)* @param name* @param age* @return*/@RequestMapping("/commonParam")@ResponseBodypublic String commonParam(String name,Integer age){System.out.println("name = " + name);System.out.println("age = " + age);return "success";}
2.6普通参数—参数名不同
java"> /*** 普通参数--形参名不同,起别名* @param username* @param age* @return  返回给前端*/@RequestMapping("/commonParamDifferentName")@ResponseBodypublic String commonParamDifferentName(@RequestParam("name") String username, Integer age){System.out.println("username = " + username);System.out.println("age = " + age);return "success";}
2.7参数为实体类型
java"> /*** 参数为pojo(实体类)类型(post)* @param u* @return 返回给前端*/@RequestMapping("/pojoParam")@ResponseBodypublic String pojoParam(User u){//封装为了实体类System.out.println("user = " + u);return "success";}
2.8参数为实体类型嵌套实体类
java"> /*** pojo嵌套使用(post)* @param u* @return*/@RequestMapping("/pojoContainPojoParam")@ResponseBodypublic String pojoContainPojoParam(User u){//封装为了实体类System.out.println("user = " + u);return "success";}
2.9JSON数组—字符串数组接收,集合接收
java"> /*** 理论上get请求可以发送json数据,但一般用post请求发送json数据* @param hobby* @return*/@RequestMapping("/jsonArray")@ResponseBodypublic String jsonArray(@RequestBody List<String> hobby){System.out.println("hobby = " + hobby);return "success";}/**请求* JSON对象数组,用pojo实体集合接收* @param list* @return*/@RequestMapping("/listPojoParamForJson")@ResponseBodypublic String listPojoParamForJson(@RequestBody List<User> list){System.out.println("list = " + list);return "success";}
2.10JSON对象—实体类接收
java"> /*** 请求* @param user* @return*/@RequestMapping("/pojoParamForJson")@ResponseBodypublic String pojoParamForJson(@RequestBody User user){System.out.println("user = " + user);return "success";}
2.11JSON对象数组—实体类集合接收
java">/**请求* JSON对象数组,用pojo实体集合接收* @param list* @return*/@RequestMapping("/listPojoParamForJson")@ResponseBodypublic String listPojoParamForJson(@RequestBody List<User> list){System.out.println("list = " + list);return "success";}

3.测试响应数据

3.1POJO转JSON字符串
java">/*** 响应:JSON转字符串,响应给前端* @param user* @return*/@RequestMapping("/toJson")@ResponseBodypublic User toJson(User user){User user1 = new User();user1.setName("张三");user1.setAge(18);user1.setAddress(new Address("广州省·","深圳市"));return user1;}
3.2POJO集合转JSON数组
java"> /**响应*pojo集合转json数组* @param* @return*/@RequestMapping("/toJsonList")@ResponseBodypublic List<User> toJsonList(){List<User> users = new ArrayList<>();User user1 = new User();User user = user1;user.setName("张三");user.setAge(25);user.setAddress(new Address("陕西省","西安市"));User user2 = new User();user2.setName("李四");user2.setAge(20);user2.setAddress(new Address("陕西省","安康市"));User user3 = new User();user3.setName("李非");user3.setAge(21);user3.setAddress(new Address("陕西省","汉中市"));users.add(user);users.add(user2);users.add(user3);return users;}


http://www.ppmy.cn/embedded/42059.html

相关文章

Python全栈自动化测试-Python基础07--分支结构if

目录 前言 一、单项分支 二、双向分支 三、多向分支 四、巢状分支&#xff08;嵌套分支&#xff09; 五、if中的判断条件 1.条件--固定值 2.条件--运算符 总结 前言 在Python编程中&#xff0c;分支结构是一种至关重要的控制流机制&#xff0c;它允许程序根据特定条件…

Go 处理错误

如果你习惯了 try catch 这样的语法后&#xff0c;会觉得处理错误真简单&#xff0c;然后你再来接触 Go 的错误异常&#xff0c;你会发现他好复杂啊&#xff0c;怎么到处都是 error&#xff0c;到处都需要处理 error。 首先咱们需要知道 Go 语言里面有个约定&#xff0c;就是一…

QCustomPlot - 柱状堆积图

参考链接 显示柱状图的值 QCustomPlot下载 下载地址&#xff1a;https://www.qcustomplot.com/index.php/download选择版本2.1.0 QCustomPlot.tar.gzQCustomPlot 的使用 解压下载的文件 把qcustomplot.h和qcustomplot.cpp放到自己的项目工程&#xff08;复制文件并qt 的目录…

如何看待云计算的第三次浪潮?

如何看待云计算的第三次浪潮&#xff1f; 来自云栖大会的演讲你如何看待云计算的第三次浪潮&#xff1f;云计算的第三次浪潮将会给社会带来怎样的变革&#xff1f;开发者在云计算的第三次浪潮中将会有哪些机遇和挑战&#xff1f;机遇挑战 来自云栖大会的演讲 在2023云栖大会上…

C++并发:构建线程安全的队列

正文 线程安全队列的完整的类定义&#xff0c;其中采用了条件变量&#xff1a; #include <condition_variable> #include <memory> #include <mutex> #include <queue> template <typename T> class threadsafe_queue {private:mutable std::m…

PY32F403系列单片机,32位M4内核MCU,主频最高144MHZ

PY32F403系列单片机是基于Arm Cortex-M4核的32位通用微控制器产品。内置的FPU和DSP功能支持浮点运算和全部DSP指令。通过平衡成本&#xff0c;性能&#xff0c;功耗来获得更好的用户体验。 PY32F403单片机典型工作频率可达144MHZ&#xff0c;内置高速存储器&#xff0c;丰富的…

逻辑图这么搞, 哪个老板不拿你当个宝,有图有真相。

逻辑图作用在于把复杂的文字描述&#xff0c;抽象出来&#xff0c;形成可视化的图表&#xff0c;便于用户快速阅读&#xff0c;这种图在o B和to G的项目中经常用到&#xff0c;这次给大家分享一批。

Mac SourceTree配置ssh git仓库

一、准备条件 1、Mac系统电脑 2、安装好SourceTree 3、获取ssh git仓库地址 二、配置步骤 1、打开终端命令行 ssh -t rsa -C "xxx""xxx"代表注册git仓库时&#xff0c;使用的用户名&#xff0c;可以是字符串也可以是邮箱地址。 如果遇到输入密码&#xf…