spring-mvc-4-视图

2018-01-22  本文已影响23人  liangxifeng833

SpringMVC如何解析视图

Paste_Image.png Paste_Image.png Paste_Image.png

常用的视图实现类

Paste_Image.png

视图解析器的作用

Paste_Image.png

常用的视图解析器实现类

Paste_Image.png Paste_Image.png Paste_Image.png

不经过控制器,直接响应页面

1.配置springmvc.xml配置文件

<bean>
    <!-- 配置直接转发的页面,不需要经过控制器 -->
    <mvc:view-controller path="/newSuccess" view-name="success"/>
</beans>

2.直接在浏览器访问:http://localhost:8081/spring-mvc-helloworld/newSuccess,就可以直接访问静态success.jsp页面

3.但是这样配置后,@RequestMapping()就会失效,所以如果配置mvc:view-controlle后想要@RequestMapping仍然起作用,应该加上

    <!-- 配置直接转发的页面,不需要经过控制器 -->
    <mvc:view-controller path="/newSuccess" view-name="success"/>
    <!-- 如果配置mvc:view-controlle后想要@RequestMapping仍然起作用, 在实际开发过程中通常都需配置 mvc:annotation-driven标签 -->
    <mvc:annotation-driven></mvc:annotation-driven>

自定义视图

1.首先自己实现一个View接口 HelloView.java

package lxf.springmvc.views;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.View;
/**
 * 自定义视图
 * @author lxf
 */
@Component
public class HelloView  implements View{
    /**
     * 视图输出类型
     */
    @Override
    public String getContentType() {
        // TODO Auto-generated method stub
        return "text/html"  ;
    }
    /**
     * 渲染视图
     */
    @Override
    public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        // TODO Auto-generated method stub
        response.getWriter().print("hello view , time " + new Date());   
    }
}

2.在 springmvc.xml中配置视图解析器并设置优先级

    <!-- 配置视图BeanNameViewResolver解析器:使用视图的名字来解析视图 -->
    <!-- 通过order属性来定义视图解析器的优先级,order值越小优先级越高 -->
    <bean  class="org.springframework.web.servlet.view.BeanNameViewResolver">
        <property name="order"  value="100"></property>
    </bean>

3.修改SpringMVCTest控制器

@RequestMapping("springmvc")
@Controller
public class SpringMVCTest {
    public static final String SUCCESS = "success";
    /**
     * 测试自定义视图
     */
    @RequestMapping("/testView")
    public String testView(){
        return "helloView";
    }
}

4.访问测试:http://localhost:8081/spring-mvc-helloworld/springmvc/testView
页面输出:hello view , time Wed Aug 09 19:12:55 CST 2017

关于重定向

Paste_Image.png

1.修改 SpringMVCTest 控制器

    /**
     *  测试重定向
     */
    @RequestMapping(value="testRedirect")
    public String testRedirect()
    {
        System.out.println("testRedirect");
        //重定向
        return "redirect:/index.jsp";
        //内部转发
        //return "forward:/index.jsp";
    }

2.访问:http://localhost:8081/spring-mvc-helloworld/springmvc/testRedirect会跳转到 index.jsp 页面;

点击查看演示代码

上一篇下一篇

猜你喜欢

热点阅读