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.png1.修改 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 页面;
网友评论