首页 > 其他分享 >Spring MVC(看这一篇就够了)

Spring MVC(看这一篇就够了)

时间:2024-09-27 09:55:06浏览次数:8  
标签:value return name Spring 就够 MVC user ModelAndView public

导入 jar

<!--JSON依赖-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.3</version>
</dependency>

Spring MVC 常用注解 使用注解前应扫包并开启注解
<!--自动扫描的包名,只扫描@Controller -->
<context:component-scan base-package="com.hz.controller" >
<!--开启注解-->
<mvc:annotation-driven/>

@Controller 标注一个普通的 JavaBean 成为可以处理请求的控制器 @RequestMapping 通过请求 URL 进行映射
//标识在类上
@RequestMapping("/index")
public class IndexController{
//在方法上
@RequestMapping(value="/ts",method = RequestMethod.GET)
public ModelAndView index(){
.....
}
method:
RequestMethod.GET 必须以GET方式进入 @GetMapping
RequestMethod.POST 必须以POST方式进入 @PostMapping
params:
{ "param1=value1" , "param2" , "!param3" }
请求参数的映射条件,指定请求的URL地址需要带那些参数
@RequestParam 参数传递
public ModelAndView index(@RequestParam(value = "name1",required = false)
String user_name)
{
.......
}
value:属性名,如:xxxx?name1=...
required:是否必须 false为否
defaultValue:默认值

通过实体类接收参数 传入参数名必须与实体类对应 , 一般用于添加,修改类中多个属性时
@RequestMapping(value="/ts1")
public String index1(User user)
{
System.out.println(user.getUser_name());
return "user";
}

参数传递 ModelAndView 包含视图信息和模型数据信息
public ModelAndView index1(){
//返回页面 转发
ModelAndView mav = new ModelAndView("视图名");
或
ModelAndView mav = new ModelAndView();
mav.setViewName("视图名");
//存入值 Request作用域
mav.addObject("键","值");
return mav;
}

Model 以 Map 方式进行存储,用于向作用域中存值
public String index1(Model model)
{
model.addAttribute("user_name","张三");
return "user"; //返回user.jsp页面
}
注意:在Model中增加模型数据,若不指定key,则默认使用对象的类型作为key
Map 以 Map 方式进行存储,用于向作用域中存值
public String index1(Map<String ,Object> map)
{
map.put("user_name","123");
return "user";
}

@ModelAttribute
@RequestMapping(value="/ts1")
public String index1(@ModelAttribute("user") User user)
{
user.setUser_name("张三");
System.out.println(user.getUser_name());
return "user";
}

@SessionAttributes 只能定义在类上 , 作用是将指定的 Model 中的键值对添加至 session 中
//类中定义user_name存入session作用域
@SessionAttributes(value = {"user_name"})
public class IndexController {
@RequestMapping("/ts")
public ModelAndView index(){
ModelAndView mav = new ModelAndView("user");
//存入Request作用域和Session作用域
mav.addObject("user_name",user_name);
....
}
}
@SessionAttributes(types=User.class)会将model中所有类型为 User的属性添加到会话中。
@SessionAttributes(value={“user1”, “user2”}) 会将model中属性名为user1和user2的属性添
加到会话中。
@SessionAttributes(types={User.class, Dept.class}) 会将model中所有类型为 User和Dept
的属性添加到会话中。
@SessionAttributes(value={“user1”,“user2”},types={Dept.class})会将model中属性名为
user1和user2以及类型为Dept的属性添加到会话中。

servlet 方式 引入 servlet-api.jar
<!--servlet-api-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
public String cs(HttpServletRequest request, HttpServletResponse response,
HttpSession session){
session.setAttribute("username","123");
return "user";
}

重定向与转发
public String index1(User user)
{
.....
return "redirect:/user.jsp";//重定向
return "forward:页面";//转发
}

@ResponseBody 返回 JSON 数据 一般用于方法上
引入JSON依赖包
<!--JSON依赖-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.3</version>
</dependency>
​
@ResponseBody
@RequestMapping("/testjson")
public User jsons(@RequestParam long user_id){
User user = this.userService.getUserById(user_id);
return user;//直接返回对象
}

​对象中添加:
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
表示属性为null不返回

@RestController

标注该类中所有的方法都返回 JSON 用于类中。无须在写 @Controller @DateTimeFormat 用户对象属性,控制入参时日期类型转换
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date user_login_endtime;

@RequestHeader 获取请求头中的参数
@ResponseBody
@RequestMapping(value = "/index",method = RequestMethod.POST)
public User index(@RequestHeader(value = "token",defaultValue = "1",required =
false) int tokenid){
......
}

@JsonFormat 返回 JSON 数据时日期类型处理
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date user_login_endtime;

REST 风格
@RequestMapping(value="/ts1/{user_id}.html")
public String index1(@PathVariable("user_id") Long user_id)
{
System.out.println("id======"+user_id);
return "user";
}
请求路径为:.../ts1/参数.html
如:..../ts1/1.html或..../ts1/10.html

Spring MVC 框架特点 清晰地角色划分 灵活的配置功能 提供了大量的控制器接口和实现类 真正做到与 View 层的实现无关( JSP 、 Velocity 、 Xslt 等) 国际化支持 面向接口编程 Spring 提供了 Web 应用开发的一整套流程,不仅仅是 MVC ,他们之间可以很方便的结合一起

标签:value,return,name,Spring,就够,MVC,user,ModelAndView,public
From: https://blog.csdn.net/m0_63233901/article/details/142584441

相关文章

  • SpringBoot+Activiti7工作流入门实例
    目录文章目录目录准备Activiti建模工具1、BPMN-js在线设计器1.1安装1.2使用说明1.3运行截图2、IDEA安装ActivitiDesigner插件2.1安装插件2.2设置编码格式防止中文乱码2.3截图简单工作流入门实例1.新建SpringBoot工程2.引入Activiti相关依赖添加版本属性指定......
  • Spring Boot起步,CRUD、错误处理与宝塔部署
    新建一个SpringBoot项目这里使用的idea编辑器。快速生成java项目。生成项目目录java代码解读复制代码java-app:项目的根目录。.idea:IntelliJIDEA的项目配置文件夹。.mvn:Maven的相关配置。src:源代码目录。main:主代码部分。java:Java源代码文件夹。......
  • es基础操作,看这篇就够了
    本节课讲解es的基本操作ElasticSearch简称es,开源的分布式的全文搜索引擎,可以近乎实时的存储检索数据es安装建议大家直接使用docker安装es拉取镜像dockerpullelasticsearch:7.12.0创建docker容器挂在的目录:#linux的命令mkdir-p/opt/es/config&mkdir-p/opt/es......
  • [附源码]在线音乐系统+SpringBoot+Vue前后端分离
    今天带来一款优秀的项目:在线音乐系统源码 。系统采用的流行的前后端分离结构,内含功能包括"管理后台",“用户端”,“评论系统”,“歌手,歌曲管理”,“用户系统”,"统计"等功能。如果您有任何问题,也请联系小编,小编是经验丰富的程序员!一.系统演示视频 https://githubs.xy......
  • springboot+vue青年大学习数据分析系统的设计与实现5ek29
    目录功能和技术介绍系统实现截图开发核心技术介绍:使用说明开发步骤编译运行需求分析系统设计软件测试核心代码部分展示详细视频演示源码获取功能和技术介绍本项目包含程序源码和MySql脚本和文档,idea开发,支持Eclipse。对项目进行分阶段,分模块的开发,对项目进行黑盒......
  • 基于Node.js+vue基于springboot的模拟面试平台7tch0(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和互联网应用的广泛普及,传统的招聘模式正逐步向数字化、智能化转型。面试作为招聘流程中的关键环节,其效率与效果直接影响到企业的人......
  • spring程序员前置知识-ApplicationContext执行过程分析-其一
    1.前置知识一个bean在加入spring容器之前,首先要读取class文件生成BeanDefinition,然后通过BeanDefinition实例化bean,BeanDefinition就是一个用来描述bean如何被创建出来的对象,最后执行bean的初始化。在spring中有两种Processor,一种是BeanFactoryPostProcessor,另一种是BeanP......
  • Spring ioc&DI
    (一)认识 IOC和DI1.IOC  认识IOC之前我们先来说一下spring是什么,我们说spring就是一个框架,可以让我们开发更加简单,他内部有很多集成好的一些类,所以我们用一句更简单的话来概括spring:Spring就是一个包含了众多工具方法的IOC容器  那什么是IOC呢?简单来说他的核心就是......
  • 如何打造Java SpringBoot民宿山庄农家乐系统?2025最新毕业设计攻略
    ✍✍计算机毕业编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、小程序、大数据实战项目集⚡⚡文末获取......
  • 如何打造流浪天使乐园管理系统?Java SpringBoot+Vue技术解析
    ✍✍计算机毕业编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、小程序、大数据实战项目集⚡⚡文末获取......