SpringMVC的数据响应方式
代码参考上一篇博客:https://blog.csdn.net/GLOAL_COOK/article/details/112759926
页面跳转:
第一种方式:直接返回字符串:
第二种方式:通过ModelAndView对象返回
test1.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored ="false" %><html>
<html>
<head>
<title>成功页面</title>
</head>
<body>
<h1>test1.jsp成功,欢迎${username}! </h1>
</body>
</html>
spring-mvc.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!--context:include-filter代表只扫cn.itcast的org.springframework.stereotype.Controller的注解-->
<context:component-scan base-package="cn.itcast">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"></context:include-filter>
</context:component-scan>
<!--配置内部资源视图解析器,viewResolver是随便起的id-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--简化/view/test1.jsp-->
<property name="prefix" value="/view/"></property> <!--改前缀,view是你项目webapp下的一个目录,可以改为其他的目录-->
<property name="suffix" value=".jsp"></property> <!--改后缀-->
</bean>
</beans>
QuickController :
package cn.itcast.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
/**
* @author QLBF
* @version 1.0
* @date 2021/1/17 21:10
*/
@Controller
@RequestMapping("/user") //一级访问目录
public class QuickController {
//加了类RequestMapping一级,在方法加二级的话就要localhost:8080/user/quick1访问了,而且下面跳转的suceess.jsp前面要加/
//value只有一个才能省,多个method之后就不能省了,params代表是你请求时一定要携带{}里面的字符串来请求
@RequestMapping(value = "/quick1",method = RequestMethod.GET/*,params = {"username"}*/)
public String save(){
System.out.println("Controller save running...");
return "test1"; //会转发访问test1.jsp
}
@RequestMapping(value = "/quick2") //value只有一个可省
public ModelAndView save2(){
/*
Model:模型 作用封装数据,就是类似setattribute,然后你就可以在jsp通过el表达式获取值
View:视图 作用展示数据,就是设置跳转或重定向到哪个jsp
*/
ModelAndView modelAndView=new ModelAndView();
//设置模型数据
modelAndView.addObject("username","zhangsan");
//设置视图名称
modelAndView.setViewName("test1"); //省略就是默认是转发,还是通过前后缀访问view里面的test1.jsp
return modelAndView;
}
@RequestMapping(value = "/quick3")
public ModelAndView save3(ModelAndView modelAndView){
/*
Model:模型 作用封装数据,就是类似setattribute,然后你就可以在jsp通过el表达式获取值
View:视图 作用展示数据,就是设置跳转或重定向到哪个jsp
*/
//设置模型数据
modelAndView.addObject("username","lisi3");
//设置视图名称
modelAndView.setViewName("test1"); //省略就是默认是转发,还是通过前后缀访问view里面的test1.jsp
return modelAndView;
}
@RequestMapping(value = "/quick4")
public String save4(Model model){
/*
Model:模型 作用封装数据,就是类似setattribute,然后你就可以在jsp通过el表达式获取值
View:视图 作用展示数据,就是设置跳转或重定向到哪个jsp
*/
//设置模型数据,可以分开模型和视图的
model.addAttribute("username","lisi4");
//设置视图
return "test1";
}
@RequestMapping(value = "/quick5") //少用,都用框架了还用老东西干嘛
public String save5(HttpServletRequest request){
request.setAttribute("username","旧东西5");
return "test1";
}
}
save2~4用的多点,下面只演示save2():
访问http://localhost:8080/user/quick2(就改最后的quick数字就测试对应的方法了):