1、直接页面转发
如果想不经过控制器类的处理方法直接转发到页面,可以通过使用mvc:view-controller元素来实现。在SpringMVC配置文件springmvc.xml中,添加mvc:view-contreller元素,配置如下:
<mvc:view-controller path="/success" view-name="success" />
<mvc:view-controller path="/index" view-name="index" />
2、自定义视图
通过使用BeanNameViewResolver类可以实现用户自定义的视图。创建一个类MyView,实现View接口,存放在新建的com.springmvc.view包中,实现一个简单的自定义视图。
2-1:MyView类的代码:
package com.springmvc.view;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.View;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
@Component // 添加该注解,Spring会为该类创建Bean实例
public class MyView implements View {
@Override
public String getContentType() {
return "text/html";
}
@Override
public void render(Map<String, ?> map, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
httpServletResponse.getWriter().println("你好,这是一个自定义视图");
}
}
2-2:springmvc.xml文件新增的代码:
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
<property name="order" value="50"/>
</bean>
2-3:UserController类的代码:
package com.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* UserController是一个基于注解的控制器,可同时处理多个请求,
* 并无需实现任何接口
* org.springframework.stereotype.Controller注解用于知识该类是一个指示器
*/
@Controller
/**
* @RequestMapping注解标注在类上时,
* 该类的所有方法都将映射为相对于类级别的请求
*/
@RequestMapping(value = "/user")
public class UserController {
/**
* @RequestMapping注解标注在方法上时,该方法将成为一个请求处理方法, 它会在程序接收到对应的URL请求时被调用。
*/
/**
* 自定义视图
*/
@RequestMapping(value = "beanNameViewResolver")
public String beanNameViewResolver() {
return "myView";
}
}
2-4:index.jsp的代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>SpringMVC的入门程序</title>
</head>
<body>
<h3>SpringMVC的入门程序</h3>
<div>
<h5>自定义视图</h5>
<div>
<ul>
<li><a href="/user/beanNameViewResolver">beanNameViewResolver</a></li>
</ul>
</div>
</div>
</body>
</html>
3、页面重定向