SSM——SpringMVC的请求和响应

一. SpringMVC的数据响应方式

在这里插入图片描述

1. 页面跳转

1.1 返回字符串形式

在这里插入图片描述
重定向:表示客户端再次请求

<!--配置内部资源视图解析器-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <!--  /jsp/success.jsp  -->
    <property name="prefix" value="/jsp/"></property>
    <property name="suffix" value=".jsp"></property>
</bean>

1.2 返回ModelAndView对象

在这里插入图片描述
Model:模型 作用封装数据
View:视图 作用展示数据
在这里插入图片描述

package com.itheima.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;

@Controller
@RequestMapping("/user")
public class UserController {

    // 请求地址  http://localhost:8080/user/quick
    @RequestMapping(value="/quick",method = RequestMethod.GET,params = {"username"})
    public String save(){
        System.out.println("Controller save running....");
        return "success";
    }

    @RequestMapping(value="/quick2")
    public ModelAndView save2(){
        ModelAndView modelAndView = new ModelAndView();
        //设置模型数据
        modelAndView.addObject("username","pudding");
        //设置视图名称
        modelAndView.setViewName("success");

        return modelAndView;
    }

    @RequestMapping(value="/quick3")
    public ModelAndView save3(ModelAndView modelAndView){
        //设置模型数据
        modelAndView.addObject("username","pudding");
        //设置视图名称
        modelAndView.setViewName("success");

        return modelAndView;
    }

    @RequestMapping(value="/quick4")
    public String save4(Model model){
        model.addAttribute("username","阿强");
        return "success";
    }

    @RequestMapping(value="/quick5")
    public String save5(HttpServletRequest request){
        request.setAttribute("username","阿飞");
        return "success";
    }
}

1.3 向request域存储数据

在这里插入图片描述
在这里插入图片描述

2. 回写数据

2.1. 直接返回字符串

在这里插入图片描述
在这里插入图片描述
@ResponseBody //告知SpringMVC框架 不进行视图跳转 直接进行数据响应
在这里插入图片描述

在这里插入图片描述

上述方式手动拼接json格式字符串的方式很麻烦,开发中往往要将复杂的java对象转换成json格式的字符串,我们可以使用web阶段学习过的json转换工具jackson进行转换,导入jackson坐标。

<!--jackson-->
<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>

在这里插入图片描述

@RequestMapping(value="/quick9")
@ResponseBody
public String save9() throws IOException {
    User user = new User();
    user.setUsername("lisi");
    user.setAge(30);
    //使用json的转换工具将对象转换成json格式字符串在返回
    ObjectMapper objectMapper = new ObjectMapper();
    String json = objectMapper.writeValueAsString(user);

    return json;
}

2.2. 返回对象或集合

在这里插入图片描述

<!--配置处理器映射器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
  	<property name="messageConverters">
        <list>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
        </list>
    </property>
</bean>

在这里插入图片描述

@RequestMapping(value="/quick10")
@ResponseBody
//期望SpringMVC自动将User转换成json格式的字符串
public User save10() throws IOException {
    User user = new User();
    user.setUsername("lisi2");
    user.setAge(32);

    return user;
}

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
                        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
                        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">


	<!--mvc的注解驱动-->
	<mvc:annotation-driven conversion-service="conversionService"/>

</beans>

二. SpringMVC 获得请求数据

1. 获得请求参数

在这里插入图片描述

1.1 获得基本类型参数

在这里插入图片描述
在这里插入图片描述

1.2 获得POJO类型参数

在这里插入图片描述
底层通过反射调用set方法进行匹配
在这里插入图片描述

1.3 获得数组类型参数

在这里插入图片描述
在这里插入图片描述

1.4 获得集合类型参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果不写上面这句话,springmvc进行虚拟路径匹配,会把jquer也当成一个requestMapping进行匹配,而匹配不上。我们进行开放资源,让客户端直接能够访问到。
或者使用如下方法:交给原始容器Tomcat帮我们找静态资源
在这里插入图片描述

2. 请求数据乱码问题

在这里插入图片描述
在这里插入图片描述

3. 参数绑定注解@requestParam

在这里插入图片描述

@RequestMapping(value="/quick16")
@ResponseBody
//@RequestParam将name映射到username
public void save16(@RequestParam(value="name",required = false,defaultValue = "itcast") String username) throws IOException {
    System.out.println(username);
}

在这里插入图片描述

4. 获得Restful风格的参数

在这里插入图片描述

在这里插入图片描述

三. 自定义类型转换器

在这里插入图片描述

1. 定义转换器类实现Converter接口

在这里插入图片描述
在这里插入图片描述

@RequestMapping(value="/quick18")
@ResponseBody
public void save18(Date date) throws IOException {
    System.out.println(date);
}

2. 在配置文件中声明转换器

在这里插入图片描述

<bean id="converterService" 
	class="org.springframework.context.support.ConversionServiceFactoryBean">
	<property name="converters">
		<list>
			<bean class="com.itheima.converter.DateConverter"/>
		</list>
	</property>
</bean>

3. 在< annotation-driven >中引用转换器

<mvc:annotation-driven conversion-service="converterService"/>

四. 获得Servlet相关API

在这里插入图片描述

五. 获得请求头

1. @RequestHeader

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. @CookieValue

在这里插入图片描述
在这里插入图片描述

六. 文件上传

1. 文件上传客户端三要素

在这里插入图片描述

2. 文件上传原理

在这里插入图片描述

3. 单文件上传步骤

在这里插入图片描述

3.1 导入fileupload和io坐标

<dependency>
	<groupId>commons-fileupload</groupId>
	<artifactId>commons-fileupload</artifactId>
	<version>1.2.2</version>
</dependency>
<dependency>
	<groupId>commons-io</groupId>
	<artifactId>commons-io</artifactId>
	<version>2.4</version>
</dependency>

3.2 配置文件上传解析器

在这里插入图片描述

<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	<!--上传文件总大小-->
	<property name="maxUploadSize" value="5242800"/>
	<!--上传单个文件的大小-->
	<property name="maxUploadSizePerFile" value="5242800"/>
	<!--上传文件的编码类型-->
	<property name="defaultEncoding" value="UTF-8"/>
</bean>

3.3 编写文件上传代码

@RequestMapping("/quick20")
@ResponseBody
public void quickMethod20(String name,MultipartFile uploadFile) throws IOException {
	//获得文件名称
	String originalFilename = uploadFile.getOriginalFilename();
	//保存文件
	uploadFile.transferTo(new File("C:\\upload\\"+originalFilename));
}

4. 多文件上传实现

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值