SpringMVC-2-响应数据与视图、文件上传、异常处理、拦截器

# 内容1.响应数据和结果视图* 返回值的分类* ResponseBody响应数据2.SpringMVC实现文件上传3.SpringMVC的异常处理4.SpringMVC框架的拦截器## 响应数据和结果视图1.返回值分类1.字符串:Controller方法返回字符串可以指定逻辑视图...
摘要由CSDN通过智能技术生成

# 内容
    1. 响应数据和结果视图
        * 返回值的分类
        * ResponseBody响应数据
    2. SpringMVC实现文件上传
    3. SpringMVC的异常处理
    4. SpringMVC框架的拦截器


## 响应数据和结果视图
    1. 返回值分类
        1. 字符串:Controller方法返回字符串可以指定逻辑视图的名称,根据视图解析器为物理视图的地址。
        2. void:使用request或response响应结果
            1. 使用 request 转向页面

request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request, response); 

            2. 使用 response 页面重定向

response.sendRedirect("testRetrunString")

            3. 使用 response 指定响应结果,例如响应 json 数据

response.setCharacterEncoding("utf-8"); 
response.setContentType("application/json;charset=utf-8"); 
response.getWriter().write("json串"); 

        3. ModelAndView:
            * ModelAndView 是 SpringMVC 为我们提供的一个对象,可以用来调整具体的JSP视图 
            * ModeAndView 对象的两个方法如下:

//作用:添加模型到该对象中
public ModelAndView addObject(String attributeName,Object attributeValue){
     getModelMap().addAttribute(attributeName,attributeValue);
     //我们可以在页面上使用EL表达式获取attribute的值,${attributeName}
     return this;
}
//作用:用于设置逻辑视图名称,视图解析器会根据名称前往指定的视图
public void setViewName(@Nullable String viewNaem){
    this.view=viewName;
}

    2. SpringMVC框架提供的重定向和转发
        1. forward转发
            * 使用请求转发,既可以转发到jsp,也可以转发到其他的控制器方法。 
            * controller方法在提供了 String 类型的返回值之后,默认就是请求转发。
            * 注意:如果用了 forward:则路径必须写成实际视图 url,不能写逻辑视图。 
                如:return "success" = return "forward:/WEB-INF/pages/success.jsp";

        2. Redirect重定向
            * 注意:如果是重定向到 jsp 页面,则 jsp 页面不能写在 WEB-INF 目录中,否则无法找到。 

    3. ResponseBody响应json数据
        1. 设置静态资源(img,css,js不被DispatcherServlet拦截,在SpringMVC配置文件中作如下配置
            * location元素表示webapp目录下的static包下的所有文件;
            * mapping元素表示以/static开头的所有请求路径,如/static/a 或者/static/a/b;
            * 该配置的作用是:DispatcherServlet不会拦截以/static开头的所有请求路径,并当作静态资源交由Servlet处理。
            代码如下:

<!-- 设置静态资源不过滤 -->    
<mvc:resources location="/css/" mapping="/css/**"/>  <!-- 样式 -->    
<mvc:resources location="/images/" mapping="/images/**"/>  <!-- 图片 -->    
<mvc:resources location="/js/" mapping="/js/**"/>  <!-- javascript --!>

        2. 使用@RequestBody获取请求体数据

            jsp代码:
            $(function(){        
                // 绑定点击事件        
                $("#btn").click(function(){            
                    $.ajax({                
                        url:"user/testJson",                
                        contentType:"application/json;charset=UTF-8",                
                        data:'{"addressName":"aa","addressNum":100}',                
                        dataType:"json",                
                        type:"post",                
                        success:function(data){                    
                            alert(data);                    
                            alert(data.addressName);                
                            }            
                        });       
                    });    
                });
            控制器中的代码:
            @RequestMapping("/testJson")    
            public void testJson(@RequestBody String body) {        
                System.out.println(body);    
            }

        3. json字符串与JavaBean对象的转换,需要加入jackson的依赖

             <dependency>            
                <groupId>com.fasterxml.jackson.core</groupId>            
                <artifactId>jackson-databind</artifactId>            
                <version>2.9.0</version>        
            </dependency>        
            <dependency>            
                <groupId>com.fasterxml.jackson.core</groupId>            
                <artifactId>jackson-core</artifactId>            
                <version>2.9.0</version>        
            </dependency>        
            <dependency>            
                <groupId>com.fasterxml.jackson.core</groupId>            
                <artifactId>jackson-annotations</artifactId>            
                <version>2.9.0</version>        
            </dependency>

        4. 使用@RequestBody注解把json的字符串转换成JavaBean的对象
            * 在控制器的方法的形参中使用@RequestBody,将请求的json对象转换为JavaBean对象

                 $(function(){        
                    // 绑定点击事件        
                    $("#btn").click(function(){           
                        $.ajax({                
                            url:"user
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值