数据处理
目录SpringMVC 结果跳转方式
设置ModelAndView对象,根据view名称,和视图解析器跳转到指定页面
页面:视图解析器前缀 + viewName + 视图解析器后缀
1、利用SpringMVC实现
1.1 无需视图解析器
@Controller
public class GoController {
@RequestMapping("/res1")
public String test1(HttpServletRequest req, HttpServletResponse resp) throws IOException {
// 转发
return "/WEB-INF/jsp/hello.jsp";
}
@RequestMapping("/res2")
public String test2(HttpServletRequest req, HttpServletResponse resp) throws IOException {
return "forward:/WEB-INF/jsp/hello.jsp";
}
@RequestMapping("/res3")
public String test3(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
// 重定向
return "redirect:/WEB-INF/jsp/hello.jsp";
}
}
1.2 配置了视图解析器
@Controller
public class GoController {
@RequestMapping("/res1")
public String test1(HttpServletRequest req, HttpServletResponse resp) throws IOException {
// 转发
return "hello";
}
@RequestMapping("/res2")
public String test2(HttpServletRequest req, HttpServletResponse resp) throws IOException {
return "forward:hello";
}
@RequestMapping("/res3")
public String test3(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
// 重定向
return "redirect:hello";
}
}
2、SpringMVC处理参数
2.1 处理提交数据
接收参数,匹配实体类对象的字段名,一致则匹配成功
2.1.1 提交的名称和处理方法的参数名一致
@RequestMapping("/hello")
public String hi(String name){
return "hello";
}
// 我实体类的字段名为name
2.1.1 提交的名称和处理方法的参数名不一致
- 添加注解 @RequestParam ,推荐写上,表示从前端接收的
@RequestMapping("/hello")
public String hi(@RequestParam("username") String name){
return "hello";
}
2.2 提交的是对象
用 ModelMap也可
3、乱码问题
springMVC自带的字符集过滤器, 在web.xml中配置
<!-- springMVC自带的字符集过滤器 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4、JSON(重点)
方括号保存数组,大括号保存对象
JSON: JavaScript Object Notation(JavaScript 对象标记法)。
JSON 是一种存储和交换数据的语法。
JSON 是通过 JavaScript 对象标记法书写的文本。
交换数据
当数据在浏览器与服务器之间进行交换时,这些数据只能是文本。
JSON 属于文本,并且我们能够把任何 JavaScript 对象转换为 JSON,然后将 JSON 发送到服务器。
我们也能把从服务器接收到的任何 JSON 转换为 JavaScript 对象。
以这样的方式,我们能够把数据作为 JavaScript 对象来处理,无需复杂的解析和转译。
4.1 JSON的使用
用jackson处理 json数据
4.1.1 引入jackson依赖
<!-- jackson依赖 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.11.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.11.4</version>
</dependency>
4.1.2 web.xml配置和之前一样
另外,SpringMVC的配置文件也和之前的一样
4.1.3 写Controller
User实体类已写好
@Controller
public class JsonController {
@RequestMapping(value = "/json1")
@ResponseBody // 不会走视图解析器,会直接返回一个字符串
public String json1() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
// 造一个对象
User user = new User(1,"张三");
// 返回字符串
String str = mapper.writeValueAsString(user);
return str;
}
}
@RestController
4.1.4 当以集合形式返回JSON时
/**
* 返回集合时的JSON
* @return
* @throws JsonProcessingException
*/
@RequestMapping(value = "/json2")
public String json2() throws JsonProcessingException {
List<User> list = new ArrayList<>();
// 造对象
User user1 = new User(1,"张一");
User user2 = new User(2,"张二");
User user3 = new User(3,"张三");
list.add(user1);
list.add(user2);
list.add(user3);
// 返回字符串
return new ObjectMapper().writeValueAsString(list);
// [{"id":1,"name":"张一"},{"id":2,"name":"张二"},{"id":3,"name":"张三"}]
}
4.2 JSON工具类
public class JsonUtil {
/**
* 自定义日期 json 输出
* @param object date对象
* @param dateFormat 自定义的格式
* @return
*/
public static String getJson(Object object,String dateFormat){
ObjectMapper mapper = new ObjectMapper();
// 不使用时间戳的方式
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
// 自定义日期格式
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
mapper.setDateFormat(sdf);
try {
return mapper.writeValueAsString(object);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
public static String getJson(Object object){
return getJson(object,"yyyy-MM-dd HH:mm:ss");
}
4.3 fastjson的使用
4.3.1 maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.14</version>
</dependency>
4.3.2 在SpringMVC配置文件中
要springMVC知道返回值是fastjson
注意,还要在配置文件 app-context.xml中配置:
用 fastjson传输数据不常用,
4.3.3 Controller
// Java对象转JSON字符串
String str = JSON.toJSONString(list);
// JSON字符串转Java对象
User user = JSON.parseObject(str,User.class);
// Java对象转JSON对象
JSONObject jsonObject = (JSONObject) JSON.toJSON(user);
// JSON对象转Java对象
User user4 = JSON.toJavaObject(jsonObject,User.class);
标签:return,String,SpringMVC,JSON,User,数据处理,public
From: https://www.cnblogs.com/fulfill/p/16739602.html