• springmvc16


    虽然网址上传递了参数,但name和age取不到参数,因为重定向是两次请求,参数在第一次请求的作用域里面,无法直接传递到第二个作用域。此时修改hello.jsp,直接访问第一次请求作用域里面的参数。


    hello.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
    <title>Title</title>
    </head>
    <body>
    <h3>show.jsp</h3><br/>
    <h3>name数据:${param.name}</h3>
    <h3>age数据:${param.age}</h3>

    <!--使用request对象中的getParameter方法,可以访问到第一次request作用域-->
    <h3>取参数数据:<%=request.getParameter("name")%></h3>
    </body>
    </html>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    成功取到参数,如下图

    异常处理

    springmvc框架采用的是统一,全局的异常处理。把controller中的所有异常处理都集中到一个地方,采用的是aop思想,把业务逻辑和异常处理代码分开。也叫解耦(ou)合。
    使用两个注解:1、ExceptionHandler 2、ControllerAdvice


    异常处理主要步骤:

    1 新建一个自定义异常类 MyUserException,再定义它的子类 NameException,AgeException
    2 在 controller 抛出 NameException,AgeException
    3 创建一个普通类,作为 全局异常处理类
    1> 类上面加上 @ControllerAdvice
    2> 类中方法上面加上 @ExceptionHandler
    4 创建对应视图。创建组件扫描器扫描,扫描全局变量处理程序。创建注解驱动。
    1
    2
    3
    4
    5
    6
    7
    8

    项目结构如下


    springmvc.xml,加入组件扫描器和注解驱动

    <!--处理异常两个步骤-->

    <!--1、组件扫描器:扫描全局异常处理程序-->
    <context:component-scan base-package="com.zh.handler"/>

    <!--2、注解驱动-->
    <mvc:annotation-driven/>
    1
    2
    3
    4
    5
    6
    7

    MyController.java,控制器方法,向 MyUserException 抛出异常

    @Controller
    public class MyController {

    @RequestMapping(value = "/some.do")
    public ModelAndView doSome(String name,Integer age) throws MyUserException {
    ModelAndView mv = new ModelAndView();

    //根据请求抛出异常
    if (!"zs".equals(name)){
    throw new NameException("姓名不正确");
    }

    if (age <= 0 || age >= 99){
    throw new AgeException("年龄输入有误");
    }

    mv.addObject("name",name);
    mv.addObject("age",age);
    mv.setViewName("show");
    return mv;
    }
    }


    自定义异常类 MyUserException.java,继承 Exception

    public class MyUserException extends Exception{

    public MyUserException() {
    super();
    }
    public MyUserException(String message) {
    super(message);
    }
    }

    子类 NameException.java

    //表示当前用户姓名有异常,抛出NameException
    public class NameException extends MyUserException {

    public NameException() {
    super();
    }
    public NameException(String message) {
    super(message);
    }
    }

  • 相关阅读:
    一个机智的数组去重方法
    gets(),fgets()的作用机制探究
    性能优化之布局优化
    android 中theme和style的语法相关
    可以一直滚动的跑马灯
    ExpandableListView的OnitemLongclickListener事件
    关于 edittext 软键盘退出监听解决办法
    Android 开发之拦截EditText的输入内容,定制输入内容
    decimalFormat(小数格式)
    oracle常用
  • 原文地址:https://www.cnblogs.com/huaobin/p/14908575.html
Copyright © 2020-2023  润新知