springmvc 和mvc模型

2022-07-16 10:39:48

mvc和springmvc的区别

从通俗的语言来说  springmvc中M是指的是与数据库进行交互的代码; V是与前端进行交互的代码;

C 就是业务的实现  ;且通常使用springmvc实现业务有接口而mvc里面只

三层里可以写任何代码 ;

mvc三层代码结构中之间是没有交互的; 其主要目的是解耦

是普通的类mvc是一种思想;在mvc中的m并不是与数据库进行交互的代码 ,在这\

在spring mvc中 表示POJO即普通JAVA对象,具有getter/setter方法的队形就可以称作POJO,POJO不担当任何特殊的角色,也不实现任何特殊的Java框架的接口

三,总结SpringMVC


–1,原理
–2,常用的注解


@RestController:接受用户的请求,并响应json数据
@RequestMapping: 和请求路径匹配
@PathVariable:获取restful里的参数值
@CrossOrigin: 解决跨域问题(IP不同或者端口不同)

–3,解析参数


SpringMVC 可以处理一个参数,也可以处理多个参数。如果需要也可以把多个参数,封装成一个java对象。
可以用GET方式提交数据,在Controller层直接用方法的 参数列表 匹配解析就可以了
可以用Restful方式提交数据,在Controller层,使用@PathVariable注解获取地址栏里的值,直接用方法的 参数列表 匹配解析就可以了
可以用POST方式提交数据,在Controller层直接用java对象接受请求参数就可以

–4,返回json串
以前的版本,使用@ResponseBody把数据变成json串,给浏览器返回
新的版本,使用@RestController把数据变成json串,给浏览器返回

SpringMVC解析POST提交的数据

–1,需求:解析form表单提交的大量数据

准备html页面

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>通过post提交数据</title>
		
		<!-- 在HTML中嵌入css代码 -->
		<style>
			/* 输入框的高度宽度 */
			input[type='text']{
				width: 280px;
				height: 30px;
			}
			/* 整体右移 */
			form{
				margin-left:50px ;
			}
		</style>
	</head>
	<body>
		<!-- method属性用来指定数据的提交方式,action属性用来指定数据要提交到哪里,
				name属性用来指定数据提交时的属性名 name=jack
				value属性用来指定要提交的具体值
		 -->
		<form method="post" action="http://localhost:8080/stu/add">
			<table>
				<tr>
					<td>
						<h2>学生信息管理系统MIS</h2>
					</td>
				</tr>
				<tr>
					<td>姓名:	</td>
				</tr>
				<tr>
					<td>
						<input type="text" placeholder="请输入姓名..." name="name"/>
					</td>
				</tr>
				<tr>
					<td>年龄:	</td>
				</tr>
				<tr>
					<td>
						<input type="text" placeholder="请输入年龄..." name="age"/>
					</td>
				</tr>
				<tr>
					<td>
						性别:(单选框)
						<input type="radio" name="sex" value="1" checked="checked"/>男
						<input type="radio" name="sex" value="0"/>女
					</td>
				</tr>
				<tr>
					<td>
						爱好:(多选)
						<input type="checkbox" name="hobby" value="ppq" checked="checked"/>乒乓球
						<input type="checkbox" name="hobby" value="ps"/>爬山
						<input type="checkbox" name="hobby" value="cg"/>唱歌
					</td>
				</tr>
				<tr>
					<td>
						学历:(下拉框)
						<select name="edu">
							<option value="1">本科</option>
							<option value="2">专科</option>
							<option value="3">研究生</option>
						</select>
					</td>
				</tr>
				<tr>
					<td>
						入学日期:
						<input type="date" name="intime"/>
					</td>
				</tr>
				<tr>
					<td>
						<input type="submit" value="保存" style="color: white;background-color: #0000FF;border-color: #0000FF;"/>
						<input type="reset" value="取消" style="color: white;background-color: palevioletred;border-color: palevioletred;"/>
					</td>
				</tr>
			</table>
		</form>
	</body>
</html>

准备Student类

package cn.tedu.pojo;
import java.util.Arrays;
import java.util.Date;
//充当了MVC的M层,用来封装数据(类里的属性名 要和 页面上name属性的值 一致,不然没法封装)
public class Student {
    private String name;
    private Integer age;
    private Integer sex;
    private String[] hobby;//多选
    private Integer edu;
    
     //注意:HTML网页上输入的日期是String类型的,无法转成Date类型,HTML上会有400报错,需要用注解进行类型转换
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date intime;
    
    //get()  set()  toString()
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public String[] getHobby() {
        return hobby;
    }

    public void setHobby(String[] hobby) {
        this.hobby = hobby;
    }

    public Integer getEdu() {
        return edu;
    }

    public void setEdu(Integer edu) {
        this.edu = edu;
    }

    public Date getIntime() {
        return intime;
    }

    public void setIntime(Date intime) {
        this.intime = intime;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex=" + sex +
                ", hobby=" + Arrays.toString(hobby) +
                ", edu=" + edu +
                ", intime=" + intime +
                '}';
    }
}

准备RunApp类

package cn.tedu;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

//注意存放位置:要在所有资源所在的文件夹的外面
@SpringBootApplication
public class RunApp {
    public static void main(String[] args) {
        SpringApplication.run(RunApp.class);
    }
}

准备StuController类

package cn.tedu.controller;

import cn.tedu.pojo.Student;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

//作为MVC的C层,用来接受请求给出响应
@RestController
@RequestMapping("stu")
public class StuController {
    //解析post方式提交的数据
    @RequestMapping("add")
    public void add(Student s){
        System.out.println(s);
    }
}

测试

在这里插入图片描述

  • 作者:黄金龙666
  • 原文链接:https://blog.csdn.net/weixin_58276266/article/details/117825681
    更新时间:2022-07-16 10:39:48