`
wx1568908808
  • 浏览: 31394 次
文章分类
社区版块
存档分类
最新评论

SpringMVC-数据回写和异常处理及JSON操作

 
阅读更多

@[toc]

一、 数据回写

数据回写:在做数据更新的时候服务端查询的数据自动填充到表单中。

1.1 、默认方式

controlller

@RequestMapping("/fun")
	public String fun(String bookName,String author,Integer publicYear,Model model){
		if ("xx".equals(bookName)&&"qw".equals(author)&&"2019".equals(publicYear)) {
			return "/book.jsp";
		}	
		model.addAttribute("bookName", bookName);
		model.addAttribute("author", author);
		model.addAttribute("publicYear", publicYear);
		return "forward:/book.jsp";
	}

页面中的回写

<form action="add" method="post">
		书名:<input type="text" name="bookName" value="${book.bookName}"><br>
		作者:<input type="text" name="author" value="${book.author}"><br>
		出版年份<input type="text" name="publicYear" value="${book.publicYear}"><br>
		<input type="submit" value="提交">
	</form>

model

/**
	 * 
	 * @param book
	 *        会自动保存在Model对象中 key是 book 
	 *            m.addAttribute("book", book);
	 * @return
	 */
	@RequestMapping("/update")
	public String update(Book book) {
		System.out.println(book);
		book.setBookName("ps");
		return "/book.jsp";
	}

3.@ModelAttribute注解实现

3.1 修改参数回显变量名
@RequestMapping("/add")
	public String add(@ModelAttribute("bk")Book book) {
		System.out.println(book);
		book.setBookName("abc");
		return "/book.jsp";
	}
页面
<form action="add" method="post">
		书名:<input type="text" name="bookName" value="${bk.bookName}"><br>
		作者:<input type="text" name="author" value="${bk.author}"><br>
		出版年份<input type="text" name="publicYear" value="${bk.publicYear}"><br>
		<input type="submit" value="提交">
	</form>

配置全局变量名

@RequestMapping("/add")
	public String add(@ModelAttribute("bk")Book book) {
		System.out.println(book);
		book.setBookName("abc");
		return "/book.jsp";
	}
/**
	 * 每个方法都会方法的数据
	 * 
	 * @return
	 */
	@ModelAttribute("list")
	public List<String> getList() {
		return Arrays.asList("aa", "bb", "cc");
	}	
${list}<br>
	<form action="add" method="post">
		书名:<input type="text" name="bookName" value="${bk.bookName}"><br>
		作者:<input type="text" name="author" value="${bk.author}"><br>
		出版年份<input type="text" name="publicYear" value="${bk.publicYear}"><br>
		<input type="submit" value="提交">
	</form>

在这里插入图片描述

异常处理

项目中的异常需要统一处理,正常情况下,需要提前准备好一个错误页面,当项目出错了,将该页面展示给用户。 步骤:

定义异常处理器

package com.sxt.resolver;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;


/**
 * 全局异常处理器
 * @author Administrator
 *
 */
@Component
public class GlobalExecptionResolver implements HandlerExceptionResolver {

	
	/**
	 * 全局异常处理的方法
	 *   return 返回null不执行,按照没有拦截的方式处理
	 */
	@Override
	public ModelAndView resolveException(HttpServletRequest request, 
			HttpServletResponse response,Object handler,
		Exception ex) {
		System.out.println("异常发生了");
		ModelAndView m=new ModelAndView();
		m.setViewName("/error.jsp");
		return m;
	}

	

}

需要处理的异常的地方抛出异常

在这里插入图片描述

测试

在这里插入图片描述

JSON数据交互

jackson处理

jar包 在这里插入图片描述


@Controller
public class SpringController {
	
	@RequestMapping("/fun1")
	@ResponseBody
	public Book fun1(){
		Book b=new Book();
		b.setBookId(1001);
		b.setBookName("ps");
		b.setAuthor("sp");
		return b;
	}
	
	@RequestMapping("/fun2")
	@ResponseBody
	public String[] fun2(){
		return new String[]{"a","b","c"};
	}
	
	@RequestMapping("/fun3")
	@ResponseBody
	public List<String> fun3(){
		return Arrays.asList("bb","aa","cc");
	}
	
	@RequestMapping("/fun4")
	@ResponseBody
	public Map<String, Object> fun4(){
		Map<String, Object>map=new HashMap<>();
		Book b=new Book();
		b.setBookId(1001);
		b.setBookName("ps");
		b.setAuthor("sp");
		map.put("b1", b);
		Book b2=new Book();
		b2.setBookId(1001);
		b2.setBookName("ps");
		b2.setAuthor("sp");
		map.put("b2", b2);
		map.put("total", 2);
		return map;
		
	}
	
}

接收JSON数据

导入juery文件

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/juery.min.js"></script>
</head>
<body>
	<input type="button" value="提交JSON数据" οnclick="fun1();">
	<script type="text/javascript">
		function fun1() {
			$.ajax({
				type : 'POST',
				url : "test2",
				contentType : "application/json",//如果想以json格式把数据提交到后台的话,这个必须有,否则只会当做表单提交
				data : JSON.stringify({
					"bookId" : "2019",
					"bookName" : "ps"
				}),//JSON.stringify()必须有,否则只会当做表单的格式提交
				dataType : "json",//期待返回的数据类型
				success : function(data) {
					alert("success:" + data);
				},
				error : function(data) {
					alert("error" + data);
				}
			});
		}
	</script>
</body>
</html>

在这里插入图片描述

fastjson数据交互

在这里插入图片描述

配置文件(注册fastjson)

<!-- 开启扫描 -->
	<context:component-scan base-package="com.sxt.*"/>
	
	<!-- 开启SpringMVC注解的方式 -->
	<mvc:annotation-driven>
		<mvc:message-converters>
			<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"></bean>
		</mvc:message-converters>
	</mvc:annotation-driven>

在这里插入图片描述

处理中文乱码

在web.xml文件中配置

 <!-- spring框架提供的字符集过滤器 -->
	<!-- spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用于解决POST方式造成的中文乱码问题 -->
	<filter>
		<filter-name>encodingFilter</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>
		<init-param>
			<param-name>forceRequestEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>
			<param-name>forceResponseEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>

在这里插入图片描述

转载于:https://my.oschina.net/u/4116634/blog/3041475

分享到:
评论

相关推荐

    springmvc-json-view需要的jar

    标题提到的"springmvc-json-view需要的jar"是指为了实现Spring MVC中JSON视图支持,开发者需要在项目中引入特定的Java库(JAR文件)。下面我们将详细探讨这些JAR文件及其在JSON处理中的作用。 首先,`json-lib-2.4-...

    springmvc-jackson-jar包集合

    3. 错误处理:通过`@ExceptionHandler`处理JSON序列化时可能出现的异常,提供友好的错误反馈。 总结,Spring MVC与Jackson的结合,使JSON处理变得简单而高效。理解并熟练掌握这两者的配合,对于开发高质量的Web应用...

    springmvc-json_v2.zip

    考虑到JSON-P(JSON with Padding)和XSS(跨站脚本攻击)的安全风险,我们需要确保在处理JSON数据时进行适当的输入验证和输出编码。 综上所述,"springmvc-json_v2.zip"可能包含了Spring MVC项目中JSON处理的各种...

    springmvc-base-input-02.rar

    总之,"springmvc-base-input-02" 项目涵盖了 Spring MVC 的基本输入处理,包括依赖管理、请求分发、模型绑定、数据验证和异常处理等关键概念。通过深入研究这个项目,开发者可以进一步理解如何构建一个健壮的、处理...

    springmvc-high-other-05.rar

    6. **异常处理**:SpringMVC提供了一种优雅的异常处理方式,允许我们在全局或特定Controller级别定义异常处理器。这有助于统一错误页面展示,提高用户体验。 7. **上传下载支持**:SpringMVC内置了处理文件上传和...

    springMVC-jar包

    1. **模型-视图-控制器(MVC)架构**:SpringMVC遵循MVC设计模式,将业务逻辑、数据处理和用户界面分离,提高代码的可读性和可维护性。模型处理业务逻辑,视图负责渲染数据,控制器作为两者之间的桥梁,接收请求并...

    springmvc-struts

    可以构建一个功能强大的Java Web应用,通过SpringMVC处理请求,Struts(尤其是Struts2)提供额外的MVC功能,MyBatis作为数据访问层处理数据库操作,而JUnit则帮助进行单元测试,确保整个系统的稳定性和正确性。...

    springmvc-easyui-tree增删改

    9. **错误处理**:确保在前后端都有适当的错误处理机制,例如前端的表单验证和后端的异常处理,以提供良好的用户体验。 综上所述,"springmvc-easyui-tree增删改"涵盖了SpringMVC后端处理和EasyUI前端展示的多个...

    springmvc JSON解析全局异常处理

    通过aop拦截获取json请求数据,对数据进行处理判断,如果不合法则抛出异常,配置全局异常处理类,在异常处理类中直接将处理结果返回调用处,减少每次在方法中解析json数据然后在判断,减少代码冗余

    springmvc-demo.zip

    16. **JSON 支持**:通过 Jackson 或 Gson 等库,Spring MVC 可以方便地处理 JSON 格式的数据交换。 在 "springmvc-demo" 项目中,开发者可能已经创建了一个简单的 Controller,处理一个或多个 HTTP 请求,并展示了...

    springmvc-demo06-ResultFul.zip

    Spring MVC 是一个强大的...此外,项目可能还涵盖了Spring MVC的其他高级特性,如拦截器和全局异常处理,以及与数据库的交互。通过学习这个项目,开发者能够深入理解并掌握Spring MVC框架在构建RESTful服务中的应用。

    SpringMVC-02教案1

    - **发送和接收JSON数据**:SpringMVC支持通过配置处理器适配器和消息转换器来处理JSON格式的数据。这通常涉及到Ajax请求,利用jQuery或其他库向服务器发送异步请求,并接收JSON响应数据。 6. **异常处理**: ...

    springmvc-swagger.zip

    - **目标**:Swagger致力于提供一套标准的、人可读的JSON格式来描述API,并提供了工具集用于生成、测试和使用这些API。 - **核心概念**:Swagger的核心是OpenAPI Specification(之前称为Swagger Specification)...

    springmvc-mybatis整合例子

    9. **日志和异常处理**:配置日志框架(如Log4j或Logback),并设置全局的异常处理器,提供友好的错误信息。 10. **部署运行**:将项目打包成WAR文件,部署到Tomcat或其他应用服务器上运行。 通过这个整合过程,...

    springmvc对json支持

    总结起来,Spring MVC对JSON的支持主要依赖于Jackson库,通过`@ResponseBody`和`@RequestBody`注解实现数据交换,配合注解进行类型转换控制,同时允许开发者自定义序列化和反序列化行为,以及配置错误处理机制。...

    springmvc-mongodb

    综上所述,"springmvc-mongodb"项目展示了如何在SpringMVC环境中利用MongoDB进行数据存储和检索,为开发者提供了一个基础但全面的参考实现,便于进一步学习和扩展。在实际开发中,还可以根据需求增加更多的功能,如...

    springmvc3+json参数传递后台接收json参数

    综上所述,"springmvc3+json参数传递后台接收json参数"涵盖了Spring MVC 3中处理JSON数据的核心概念和实践方法,包括JSON数据格式、`@RequestBody`注解、前端JSON数据封装、批量处理、错误处理和配置支持等方面的...

    springMVC学习--基本的几个例子

    通过以上例子,你可以了解到SpringMVC的基本工作流程,包括接收请求、处理逻辑、数据绑定、异常处理和视图渲染等核心概念。随着深入学习,你会发现SpringMVC的灵活性和可扩展性,使其成为现代Java Web开发的首选框架...

    springmvc_hibernate+json lib包

    Spring MVC提供了诸如请求映射、视图解析、数据绑定和异常处理等功能,使得Web应用的开发更为高效和灵活。 Hibernate则是一个对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互。通过Hibernate,...

Global site tag (gtag.js) - Google Analytics