1. 页面跳转
1) 直接返回字符串
@Controller
@RequesttMapping("/user")
public class UserController{
@RequesttMapping("/qucik")
public String jump(){
return "/jsp/success.jsp";
}
}
@RequestMapping 这个注解我们是需要用xml去配置,我们在前面用spring的时候知道Context中的扫描组件,因此我们在此时也需要去用SpringMVC的扫描组件:
<context:component-scan base-package="com.itheima">
<context:include-filter type="annotation" include="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!--expression 是排除一些包的扫描-->
<!--include 是只扫描这些包-->
我们在这为什么用include是因为我 们要和Spring的组件扫描避免重复
注解中的value代表:http://localhost:8080/user/quick
我们返回的是一个字符串,里面是一个地址,我给的就是跳转到jsp文件下的jindex.jsp这个页面。
2)ModelAndView
@RequetMapping("/quick2")
public ModelAndView jump(){
/*
Model:模型 作用封装数据
View:视图 作用展示数据
*/
ModelAndView mav = new ModelAndView();
mav.setViewName("sucess");
mav.addObject("userName","zx");
return mav;
}
//往request域中添加数据
@RequetMapping("/quick2")
public String save4(Model model){
model.addAttribute("username","博学谷");
return "success";
}
//往request域中添加数据
@RequestMapping(value="/quick5")
public String save5(HttpServletRequest request){
request.setAttribute("username","酷丁鱼");
return "success";
}
setViewName()中可以添加redirect和forward,可以表示重定向和请求转发 。 两者区别
如果我们直接这样写的话,mvc是无法去解析的,因此我们需要在spring-mvc.xml的文件去配置视图资源。
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- /jsp/success.jsp -->
<property name="prefix" value="/jsp/"></property><!--前缀-->
<property name="suffix" value=".jsp"></property>
</bean><!--后缀-->
2.回写数据
1)在写servlet中会有HttpServletRequest,直接返回字符串
@RequestMapping(value="/quick6")
public void save6(HttpServletResponse response) throws IOException {
response.getWriter().print("hello itcast");
}
2)通过注解@RespoenseBody告诉springmvc框架不进行跳转
@RequestMapping(value="/quick7")
@ResponseBody //告知SpringMVC框架 不进行视图跳转 直接进行数据响应
public String save7() throws IOException {
return "hello itheima";
}