SpringMVC数据回写与异常处理

数据回写

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

1.默认方式

通过 Map Mode ModelMap绑定数据
//数据回写
	@RequestMapping("/userUpdate")
	public String userUpdate(User user,Model m){
		user = new User();
		user.setId(1);
		user.setName("张三");
		user.setAddress("蓬莱东路");
		m.addAttribute("user",user);
		return "/user.jsp";
	}

页面中回写

<h1>hello</h1>
<form action="">
		id:<input type="text" value="${user.id}"><br>
		姓名:<input type="text" value="${user.name}"><br>
		地址:<input type="text" value="${user.address}"><br>
		<input type="submit" value="提交"><br>
	</form>

2.通过Model方式

如果使用对象去接收客户端传来的数据,那么对象默认会被自动放到model中,在前端页面可以直接使用对象中的数据。

表单代码如下:

/**	形参  默认会被 处理器适配器 添加到Model对象中
*	执行model.addAttribute("user",user)的操作
*/
@RequestMapping("/add1")
	public String add1(Book book) {
		System.out.println(book);
		return "/user.jsp";
	}

3.@ModelAttribute注解实现
3.1 修改参数回显变量名

在需要回传的对象前添加@ModelAttribute(“aa”)注解,在界面中就可以通过bb前缀来获取回写信息
	/**
	 *  形参  默认会被 处理器适配器 添加到Model对象中
	 *  执行model.addAttribute("user",user)的操作
	 * 	@ModelAttribute("a") 指定保存到Model中的信息的key值
	 */
	@RequestMapping("/userUpdate2")
	public String userUpdate2(@ModelAttribute("aa")User user){
		user.setName("张三");
		return "/user.jsp";
	}
<h1>hello</h1>
<form action="">
		id:<input type="text" value="${aa.id}"><br>
		姓名:<input type="text" value="${aa.name}"><br>
		地址:<input type="text" value="${aa.address}"><br>
		<input type="submit" value="提交"><br>
	</form>

3.2.配置全局变量名

给接口中的每个方法统一返回一份数据
/**
	 * @ModelAttribute
	 *  被这个注解所标注的方法  
	 * 	会在当期类中的任意方法执行的时候 都会触发该方法 并把结果保存到Model中
	 * 	在页面中可以通过 "list" 作为 key 获取
	 */
	@ModelAttribute("list")
	public List<String> userUpdate(){
		return Arrays.asList("1","2","3");
	}

页面中获取

<h1>hello ${list}</h1>
<form action="">
		id:<input type="text" value="${aa.id}"><br>
		姓名:<input type="text" value="${aa.name}"><br>
		地址:<input type="text" value="${aa.address}"><br>
		<input type="submit" value="提交"><br>
	</form>

异常处理

方式一:SpringMVC.xml中配置指定异常跳转bean

   <!-- 配置指定异常跳转bean -->
        <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
            <property name="exceptionMappings">
                <props>
                    <!-- 根据servlet报的错,作为键名来匹配,找上了就跳对应的资源 -->
                     <prop key="java.lang.NullPointerException">error.jsp</prop>
                    <prop key="org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException">error.jsp</prop>
                </props>
            </property>
        </bean>

方式二:定义异常处理器

@Component 	//注意该类需要交给Spring容器管理
public class MyExceptionResolver implements HandlerExceptionResolver{

	@Override
	public ModelAndView resolveException(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2,
			Exception ex) {
		System.out.println(ex.getClass().getName());
		ModelAndView mv = new ModelAndView();
		if(ex instanceof NullPointerException){
			System.out.println("空指针...");
			mv.addObject("msg","空指针异常");
		}else if(ex instanceof ArithmeticException){
			System.out.println("算术异常...");
			mv.addObject("msg","算术异常");
		}else{
			System.out.println("其他异常...");
			mv.addObject("msg","其他异常");
		}
		mv.setViewName("/error");
		return mv;
	}
}

方式三:单元方法里定义

@Controller
public class UserController {

	@RequestMapping("/demo1")
	public String demo1(){
		String str = null;
		str.toString();
		return "/user";
	}
	
	//出现空指针,由本方法处理
	@ExceptionHandler(value=NullPointerException.class)
	public ModelAndView handleNullPointerException(){
		System.out.println("空指针异常...");
		ModelAndView mv = new ModelAndView();
		mv.setViewName("/error");
		mv.addObject("msg","空指针异常...");
		return mv;
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值