SpringMVC笔记(2)
一、SpringMVC的数据响应
1.1 数据响应方式
1.1.1 页面跳转
直接返回字符串
将返回的字符串与内部资源视图解析器的前后缀拼接 进行访问(默认为转发)
通过ModelAndView对象返回
<%@ page isELIgnored="false" %>
@RequestMapping("/save2")
//注入思想由Spring提供参数的创建
public ModelAndView save2(ModelAndView modelAndView){
//设置视图名称
modelAndView.setViewName("success");
//添加模型数据,相当于存储于域中
modelAndView.addObject("username","gyb");
System.out.println("ModelAndView..");
return modelAndView;
}
1.1.2 回写数据
- 直接返回字符串
通过写形参注入Response对象,然后调用getWriter.print()
加入@ResponseBody,告诉Spring是直接返回字符串(消息体)
/**
* 返回字符串
*/
@RequestMapping("/save3")
@ResponseBody
public String save3(){
return "saving..";
}
返回json格式字符串,导入坐标,
<!-- json-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
添加mvc注解驱动
<!--mvc注解驱动-->
<mvc:annotation-driven/>
/**
* 返回json格式
*/
@RequestMapping("/save4")
@ResponseBody
public User save4(){
User user = new User();
user.setUsername("gyb");
user.setPassword("123");
//返回json格式的字符串
return user;
}
- 返回对象或集合
二、SpringMVC的请求
2.1 请求参数类型
基本类型参数
Controller中业务方法中的参数名与请求参数名字一致,参数会自动映射匹配
/**
* 获取基本请求参数
*/
@RequestMapping("/save5")
@ResponseBody
public void save5(String username, String age){
System.out.println(username);
System.out.println(age);
}
POJO类型参数
Controller中业务方法中的POJO参数的属性名与请求参数名字一致,参数会自动映射匹配
/**
* 获取POJO类型参数
*/
@RequestMapping("/save6")
@ResponseBody
public void save6(User user){
System.out.println(user);
}
数组类型参数
/**
* 获取数组类型参数
*/
@RequestMapping("/save7")
@ResponseBody
public void save7(String str[]){
System.out.println(Arrays.asList(str));
}
集合类型参数
请求体的数据是json格式的,并且为application/json,才可以进行自动映射封装
/**
* 集合类型参数
*/
@RequestMapping("save8")
@ResponseBody
//在参数前添加请求体注解
public void save8(@RequestBody List<User> userList){
System.out.println(userList);
}
2.2 参数绑定注解@requestParam
value:与客户端的请求参数名相同即可接受任意请求参数
required:次在指定的请求参数是否必须存在,默认为true
defaultValue:客户端没有请求参数时,默认值
/**
* 参数绑定注解
*/
@RequestMapping("save9")
@ResponseBody
//注解中的username为请求参数名,与前台对应
public void save9(@RequestParam(value = "username" ,defaultValue = "123") String name){
System.out.println(name);
}
2.3 Restful风格的参数获取
在Restful风格中,现有规定如下:
- GET(SELECT):从服务器查询,可以在服务器通过请求的参数区分查询的方式。
- POST(CREATE):在服务器新建一个资源,调用insert操作。
- PUT(UPDATE):在服务器更新资源,调用update操作。
- DELETE(DELETE):从服务器删除资源,调用delete语句
2.4 获取请求信息
获取请求头的参数和cookie的参数
/**
* 获取请求信息
* 获取请求头信息(userAgent)
*/
@RequestMapping("save10")
@ResponseBody
public void save10(@RequestHeader("User-Agent") String userAgent){
System.out.println(userAgent);
}
/**
* 获取请求信息
* 获取cookie的JSESSIONID
*/
@RequestMapping("save11")
@ResponseBody
public void save11(@CookieValue ("JSESSIONID") String JSESSIONID){
System.out.println(JSESSIONID);
}
2.5 文件上传
2.5.1 文件上传客户端三要素
- 表单项 type="file"
- 表单的提交方式是 post
- 表单的enctype属性是多部分表单形式,及enctype="multipart/form-date"
2.5.2 单文件上传步骤
- 导入fileupload和io坐标
<!-- fileupload-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<!-- io-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
- 配置文件上传解析器
<!-- 配置文件上传解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<property name="maxUploadSize" value="500000"/>
</bean>
- 编写文件上传代码
/**
* 文件上传
*/
@RequestMapping("fileUpload")
@ResponseBody
public void fileUpload(String username, MultipartFile uploadFile){
System.out.println(username);
System.out.println(uploadFile);
}
2.6 注意:
静态资源无法找到映射,需要配置spring-mvc.xml
<!-- 开放资源访问-->
<!-- 1.交给默认处理-->
<mvc:default-servlet-handler/>
<!-- 2.开放js资源-->
<mvc:resources mapping="/js/**" location="/js/"/>
el表达式在jsp中放行
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
SpringMVC笔记(2)的更多相关文章
- SpringMVC笔记——SSM框架搭建简单实例
落叶枫桥 博客园 首页 新随笔 联系 订阅 管理 SpringMVC笔记——SSM框架搭建简单实例 简介 Spring+SpringMVC+MyBatis框架(SSM)是比较热门的中小型企业级项目开发 ...
- SpringMvc 笔记
整理出来是 SpringMvc 笔记 方便以后查询 框架太多了 不经常使用 忘记的可能性很大 自己整理一套笔记 一看就明白了 1 对比 原始请求响应流程 1 发送请求 --> 2 控制层 --& ...
- 初学者的springmvc笔记02
springmvc笔记 springmvc拦截器,spring类型转换,spring实现文件上传/下载 1.SpringMVC标准配置 导入jar包:core contaner 在web.xml文件中 ...
- SpringMVC笔记
Struts1是采用单例模式的,在并发访问中出来资源混乱,于是出现Struts2被设计为多例的解决并发产生的 数据混乱由于Struts2引入了值栈,拦截器,OGNL等,,,是访问速度下降在原生的JSP ...
- 框架SpringMVC笔记系列 二 传值
主题:SpringMVC(第一节中再回顾复习一次) 学习资料参考网址: 1.http://www.icoolxue.com 2.http://haohaoxuexi.iteye.com/blog/13 ...
- 框架SpringMVC笔记系列 一 基础
主题:SpringMVC 学习资料参考网址: 1.http://www.icoolxue.com 2.http://aokunsang.iteye.com/blog/1279322 1.SpringM ...
- 传智springMVC笔记
springmvc 第一天 springmvc的基础知识 课程安排: 第一天:springmvc的基础知识 什么是springmvc? springmvc框架原理(掌握) 前端控制器.处理器映射器.处 ...
- springmvc笔记(来自慕课网)
1.准备工作:springmvc相关的jar包. 2.这里我们先用eclipse来操作. 首先看一个接口编程,后面的所有知识点都是通过这个接口编程引出的. OneInterface.java pack ...
- springmvc笔记(基本配置,核心文件,路径,参数,文件上传,json整合)
首先导入jar包 大家注意一下我的springmvc,jackson,common-up的jar包版本.其他版本有可能出现不兼容. src文件: webroot目录: web.xml <?xml ...
- SpringMvc笔记-对RESTFUL风格的配置
1.@RequestMapping注解可以使用如下参数: 1,params:例如params={'username',"age!=100"}表示需要usernmame并且age 属 ...
随机推荐
- 一台电脑安装两个不同版本的MySQL
背景: 本人电脑上已有mysql-8.0.12-winx64,并且可以使用.但由于工作需要,得使用mysql-5.5.59-winx64,已有mysql-5.5.59-winx64的解压好的安装包 参 ...
- Python开发篇——如何在Flask下编写JWT登录
首先,HTTP 是无状态的协议(对于事务处理没有记忆能力,每次客户端和服务端会话完成时,服务端不会保存任何会话信息)--每个请求都是完全独立的,服务端无法确认当前访问者的身份信息,无法分辨上一次的请求 ...
- [WinError 10013]以一种访问权限不允许的方式做了一个访问套接字的尝试
Django报错截图如下: 原因分析:出现这种情况在Windows中很常见,就是端口被占用 解决步骤: 1:进入windows中的命令行窗口(win+R之后输入cmd就可以进去) 2:输入 net ...
- Spring Cloud Alibaba基础教程:Nacos+Dubbo
Spring Cloud Alibaba为分布式应用程序开发提供了一站式解决方案. 它包含开发分布式应用程序所需的所有组件,使您可以轻松地使用Spring Cloud开发应用程序.Dubbo是Alib ...
- intouch制作历史趋势公用弹窗
在先前项目中,历史趋势都是作为一个总体的画面,然后添加下拉菜单选择来配合使用.在新项目中,业主要求在相应的仪表上直接添加历史趋势,这就需要利用公用弹窗来制作历史趋势了. 1.窗体建立 窗体建立是比较简 ...
- js学习笔记之正则
() 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串.(\s*)表示连续空格的字符串.[]是定义匹配的字符范围.比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字 ...
- tp phpexcel 导入后台访问方法
public function addall(){ $Water = M('Waterrate'); $config = array( 'maxSize' => 0, 'rootPath' =& ...
- noip模拟测试22
考试总结:这次考试题,有好多部分分,导致了我在考试过程中一心想拿到这些部分分,对于正解没有留出时间进行思考,这是一个教训,在以后的考试中我一定要留出足够的思考时间,不要被部分分限制.还有,我的部分分也 ...
- [Ynoi2011]初始化 题解
第一道Ynoi,纪念一下. 众所周知,Ynoi会进行惨无人道的卡常操作,所以我们可以使用暴力去做Ynoi. 于是乎,我们考虑分块+暴力. 对于操作2,不难发现是道裸的分块,可以抄P3372的代码. 对 ...
- Spring Boot自动配置原理与实践(二)
前言 在之前的博文(Spring Boot自动配置原理与实践(一))中,已经介绍了Spring boot的自动配置的相关原理与概念,本篇主要是对自动配置的实践,即自定义Starter,对原理与概念加深 ...