SpringMVC的请求
获取请求参数
请求数据乱码问题
运行测试中文乱码问题
配置全局乱码过滤器
编写web.xml
<!-- 配置全局过滤的filter-->
<filter>
<filter-name>CharterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
成功解决乱码问题
@RequestParam参数绑定注解
遇到问题
形参为username时可以返回username的参数taotao
接收name时,返回值为null
编写UserController
package com.taotao.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* create by 刘鸿涛
* 2022/4/16 18:19
*/
@SuppressWarnings({"all"})
@RequestMapping("/user")
@Controller
public class UserController {
@RequestMapping(value = "/quick16")
@ResponseBody //告知SpringMVC框架 不进行视图跳转 直接进行数据响应
public void save16(@RequestParam (value = "name") String username ) {
System.out.println(username);
}
}
成功测试
name参数
username参数
@RequestParam注解其他参数
不再测试,随便看下
Restful风格参数获取
编写UserController
package com.taotao.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* create by 刘鸿涛
* 2022/4/16 18:19
*/
@SuppressWarnings({"all"})
@RequestMapping("/user")
@Controller
public class UserController {
//localhost:8080/user/quick17/taotao
@RequestMapping(value = "/quick17/{username}")
@ResponseBody //告知SpringMVC框架 不进行视图跳转 直接进行数据响应
public void save17(@PathVariable(value = "username") String username ) {
System.out.println(username);
}
@RequestMapping(value = "/quick16")
@ResponseBody //告知SpringMVC框架 不进行视图跳转 直接进行数据响应
public void save16(@RequestParam (value = "name") String username ) {
System.out.println(username);
}
}
成功测试
自定义类型转换器
编写UserController
package com.taotao.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.Date;
/**
* create by 刘鸿涛
* 2022/4/16 18:19
*/
@SuppressWarnings({"all"})
@RequestMapping("/user")
@Controller
public class UserController {
@RequestMapping(value = "/quick18")
@ResponseBody
public void save18(Date date) {
System.out.println(date);
}
}
成功测试
date=2022/1/2
测试遇到问题
date=2022-1-2
编写类DateConverter
package com.taotao.converter;
import org.springframework.core.convert.converter.Converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* create by 刘鸿涛
* 2022/4/19 21:41
*/
@SuppressWarnings({"all"})
public class DateConverter implements Converter<String, Date> {
public Date convert(String dateStr) {
//将日期字符串转换成日期对象 返回
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = format.parse(dateStr);
}catch (ParseException e){
e.printStackTrace();
}
return date;
}
}
编写Spring-mvc
<!-- 声明转换器-->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="com.taotao.converter.DateConverter"></bean>
</list>
</property>
</bean>
<!-- mvc的注解驱动-->
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
成功测试
date=2022-1-2
获取Servlet相关API
编写UserController
package com.taotao.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* create by 刘鸿涛
* 2022/4/16 18:19
*/
@SuppressWarnings({"all"})
@RequestMapping("/user")
@Controller
public class UserController {
@RequestMapping(value = "/quick19")
@ResponseBody
public void save19(HttpServletRequest req, HttpServletResponse resp, HttpSession session) {
System.out.println(req);
System.out.println(resp);
System.out.println(session);
}
}
成功测试
获取请求头
@RequstHeader
编写UserController
package com.taotao.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* create by 刘鸿涛
* 2022/4/16 18:19
*/
@SuppressWarnings({"all"})
@RequestMapping("/user")
@Controller
public class UserController {
@RequestMapping(value = "/quick20")
@ResponseBody
public void save20() {
}
}
测试运行
编写UserController
package com.taotao.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* create by 刘鸿涛
* 2022/4/16 18:19
*/
@SuppressWarnings({"all"})
@RequestMapping("/user")
@Controller
public class UserController {
@RequestMapping(value = "/quick20")
@ResponseBody
public void save20(@RequestHeader(value = "User-Agent",required = false) String user_agent) {
System.out.println(user_agent);
}
}
成功测试
@CookieValue
编写UserController
package com.taotao.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* create by 刘鸿涛
* 2022/4/16 18:19
*/
@SuppressWarnings({"all"})
@RequestMapping("/user")
@Controller
public class UserController {
@RequestMapping(value = "/quick20")
@ResponseBody
public void save20(@CookieValue(value = "JSESSIONID",required = false) String jsessionId) {
System.out.println(jsessionId);
}
}