3.SpringMVC响应配置

三.响应配置

1.直接访问视图

<!--
    配置直接访问视图
    path属性:访问命令
    view-name属性:访问的视图名
            该视图名同样经过viewResolver处理
            最终访问的视图为:prefix+view-name+suffix
-->
<mvc:view-controller path="/showLogin" view-name="login"/>

2.Handler方法返回值类型

  • ModelAndView
    • 返回模型与视图
    • 可以两者均返回,也可以只返回自重任意一种
  • String
    • 使用字符串作为返回值的时候,其返回值的格式有三种情况
    • 直接写字符串
      • 返回的是视图名
      • 将当前的方法的返回值作为视图名来处理
      • 会经过viewResolver处理
    • redirect:命令
      • 使用重定向的方式访问指定的命令
    • forward:命令
      • 使用转发的方式访问指定的命令
  • void
    • 响应结果与方法的参数有关
    • 当方法的参数中包含响应对象的时候
      • 将当前的响应交给对应的参数去实现
    • 当方法的参数中不包含响应对象的时候
      • 将当前的请求名作为视图名返回响应
      • 会通过viewResolver进行处理
  • @ResponseBody Object
    • 当方法或者方法的返回值类型被@ResponseBody进行标注的时候
    • 表示当前方法的返回值是作为数据模型返回
    • 不会返回视图,只返回数据模型
    • 一般用于Ajax操作
    • 如果当前Controller中所有的方法都是返回数据模型的时候
      • 可以在当前类上使用@RestController代替原有的@Controller
      • 当类使用@RestController进行标注之后
      • 其效果相当于为当前类中的每一个方法都自动添加@ResponseBody注解
//@Controller
@RestController
@RequestMapping("/resp")
public class ResponseController {

    @RequestMapping("/f1")
    public String f1(){
        return "login";
    }

    @RequestMapping("/f2")
    public ModelAndView f2(){
        ModelAndView mav = new ModelAndView();
        mav.setViewName("login");
        return mav;
    }

    @RequestMapping("/f3")
    public void f3(){
        System.out.println("ResponseController.f3");
        String s = "/WEB-INF/pages/"+"resp/f3"+".jsp";
    }

    @RequestMapping("/f4")
    public void f4(HttpServletResponse response) throws IOException {
        System.out.println("ResponseController.f4");
        PrintWriter out = response.getWriter();
        out.print("<h1 style='color:green;'>Hello World</h1>");
    }

    @ResponseBody
    @RequestMapping("/f5")
    public String f5(){
        return "<h1>hello</h1>";
    }

    @RequestMapping("/f6")
    public @ResponseBody String f6(){
        return "<h1>hello f6</h1>";
    }
}

3.POST请求字符编码过滤器

<filter>
    <filter-name>characterEncodingFilter</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>
</filter>

<filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

4.访问静态资源

默认情况下,所有的SpringMVC工程均无法直接访问静态资源

静态资源:HTML、CSS、JavaScript、image…

必须通过配置实现访问静态资源的目的

有两种方式进行配置

  • 方式一

    • 配置访问非WEB-INF下的资源
    <mvc:default-servlet-handler/>
    
  • 方式二

    • 通过配置访问命令进行访问
    • 该方式可以访问任意位置的资源
    • 可以是非WEB-INF下的,也可以是WEB-INF中的
    • 通过mvc:resources标签进行配置
    • 该配置与其他命令的配置存在区别
    • 不是配置一个命令指向一个资源,而是通过通配符进行配置
    • 该标签存在两个属性
      • mapping属性
        • 配置访问静态资源的命令
        • 该命令访问是以目录为基准进行配置
        • 一般需要与/*或者/**联合使用
        • /*表示只匹配一层目录
        • /**表示匹配0或多层目录
        • 最终访问资源的命令为:mapping属性值+[资源所在的子目录]+资源的名字
      • location属性
        • 访问的资源位置
        • 值对应的是一个目录的命令,而不是一个具体的静态资源的名字
        • 表示访问该目录下的所有的静态资源
<mvc:resources mapping="/hm/*" location="/WEB-INF/html/"/>
<mvc:resources mapping="/img/**" location="/WEB-INF/images/"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值