目录
3.1.1 使用参数为原生的HttpServletRequest
一、配置视图解析器
添加如下标签就算配置视图解析器了
<!-- 视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 视图前缀 -->
<property name="prefix" value="/"/>
<!-- 视图后缀 -->
<property name="suffix" value=".jsp"/>
</bean>
二、控制器方法的返回值
2.1 返回值为void
2.1.1 控制器方法
/**
* SpringMVC处理响应——控制器方法(根据返回值)
*/
// 路径是helloMVC,方法执行完后会跳转到/helloMVC.jsp
@RequestMapping("helloMVC")
public void helloMVC(){
System.out.println("hello SpringMVC!");
}
2.1.2 jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>MVC</title>
</head>
<body>
<h1>欢迎来到SpringMVC!</h1>
</body>
</html>
2.1.3 测试结果
2.2 返回值为String
2.2.1 控制器方法
// 返回值是String,此时会跳转到名字是 前缀+返回值+后缀 的jsp页面
@RequestMapping("c2/hello1")
public String helloMVC1(){
System.out.println("Hello SpringMVC!");
return "helloMVC";
}
2.2.2 测试结果
2.3 返回值为ModelAndView
2.3.1 控制器方法
// 返回值为ModelAndView
@RequestMapping("/c2/hello2")
public ModelAndView useMAV(){
System.out.println("返回值类型为ModelAndView");
// 1.创建ModelAndView对象
ModelAndView modelAndView = new ModelAndView();
// 2.获取Model对象,本质是一个Map
Map<String,Object> model = modelAndView.getModel();
// 3.使用Model对象向request域设置数据
model.put("username","黄庆禧");
// 4.使用view对象设置跳转的路径
modelAndView.setViewName("lyl-HQX");
return modelAndView;
}
2.3.2 JSP页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>lyl-HQX</title>
</head>
<body>
<h1>name: 你好!${requestScope.name}</h1>
<h1>username: 你好!${requestScope.username}</h1>
<h1>request-Map 你好!${requestScope.usernameMap}</h1>
<h1>session 地址是:${sessionScope.address}</h1>
<h1>context 年龄是:${applicationScope.age}</h1>
</body>
</html>
2.3.3 测试结果
三、某些会话对象设置数据
3.1 request域设置数据
3.1.1 使用参数为原生的HttpServletRequest
控制器方法
/**
* SpringMVC处理响应-request域
*/
// 使用原生的HttpServletRequest
@RequestMapping("/c2/hello3")
public String setRequestModel(HttpServletRequest request){
request.setAttribute("username","会洗碗的CV工程师");
return "lyl-HQX";
}
测试结果
3.1.2 使用参数为Model和ModelMap
控制器方法
//使用Model、ModelMap
@RequestMapping("/c2/hello4")
public String setRequestModel2(Model model, ModelMap modelMap){
// 使用Model将数据存入request域
model.addAttribute("username","LYL");
// 使用ModelMap将数据传入request域
modelMap.addAttribute("usernameMap","HQX");
return "lyl-HQX";
}
测试结果
3.1.3 使用参数为Map集合
控制器方法
// 使用Map集合
@RequestMapping("/c2/hello5")
public String setRequestModel3(Map map){
map.put("username","程序员");
map.put("usernameMap","程序员");
return "lyl-HQX";
}
测试结果
3.2 session域设置数据
3.2.1 控制器方法
/**
* SpringMVC处理响应-session域设置数据
*/
@RequestMapping("/c2/hello6")
public String setSessionModel(HttpSession session){
session.setAttribute("address","北京");
return "lyl-HQX";
}
3.2.2 测试结果
3.3 context域设置数据
3.2.1 控制器方法
/**
* SpringMVC处理响应-context域设置数据
*/
@RequestMapping("/c2/hello7")
public String setContextModel(HttpSession session){
ServletContext servletContext = session.getServletContext();
servletContext.setAttribute("age",10);
return "lyl-HQX";
}
3.2.2 测试结果
四、请求转发&重定向
4.1 原生请求转发重定向写法
4.1.1 重定向控制器方法
/**
* SpringMVC处理响应-请求转发&重定向
*/
@RequestMapping("/c2/hello8")
public void myForward1(HttpServletRequest request, HttpServletResponse response) throws Exception{
request.setAttribute("name","程序员");
// 请求转发
//request.getRequestDispatcher("/c2/hello9").forward(request,response);
// 原生重定向
response.sendRedirect("/c2/hello9");
}
@RequestMapping("/c2/hello9")
public void myForward2(HttpServletRequest request){
System.out.println("hello");
System.out.println(request.getAttribute("name"));
}
4.1.2 重定向测试结果
4.1.3 请求转发测试结果
4.2 springmvc提供的请求转发重定向写法
// SpringMVC提供一种关于重定向和请求转发更为简单的写法
@RequestMapping("/c2/hello10")
public String myForward3(HttpServletRequest request){
request.setAttribute("name","程序员");
// 请求转发
return "forward:/c2/hello9";
// 重定向
//return "redirect:/c2/hello9";
}
往期专栏&文章相关导读
1. Maven系列专栏文章
Maven系列专栏 | Maven工程开发 |
Maven聚合开发【实例详解---5555字】 |
2. Mybatis系列专栏文章
Mybatis系列专栏 | MyBatis入门配置 |
Mybatis入门案例【超详细】 | |
MyBatis配置文件 —— 相关标签详解 | |
Mybatis模糊查询——三种定义参数方法和聚合查询、主键回填 | |
Mybatis动态SQL查询 --(附实战案例--8888个字--88质量分) | |
Mybatis分页查询——四种传参方式 | |
Mybatis一级缓存和二级缓存(带测试方法) | |
Mybatis分解式查询 | |
Mybatis关联查询【附实战案例】 | |
MyBatis注解开发---实现增删查改和动态SQL | |
MyBatis注解开发---实现自定义映射关系和关联查询 |
3. Spring系列专栏文章
Spring系列专栏 | Spring IOC 入门简介【自定义容器实例】 |
IOC使用Spring实现附实例详解 | |
Spring IOC之对象的创建方式、策略及销毁时机和生命周期且获取方式 | |
Spring DI简介及依赖注入方式和依赖注入类型 | |
Spring IOC相关注解运用——上篇 | |
Spring IOC相关注解运用——下篇 | |
Spring AOP简介及相关案例 | |
注解、原生Spring、SchemaBased三种方式实现AOP【附详细案例】 | |
Spring事务简介及相关案例 | |
Spring 事务管理方案和事务管理器及事务控制的API | |
Spring 事务的相关配置、传播行为、隔离级别及注解配置声明式事务 |
4. Spring MVC系列专栏文章
SpringMVC系列专栏 | Spring MVC简介附入门案例 |
Spring MVC各种参数获取及获取方式自定义类型转换器和编码过滤器 | |
Spring MVC获取参数和自定义参数类型转换器及编码过滤器 | |
Spring MVC处理响应附案例详解 | |
Spring MVC相关注解运用 —— 上篇 | |
Spring MVC相关注解运用 —— 中篇 | |
Spring MVC相关注解运用 —— 下篇 | |
Spring MVC多种情况下的文件上传 | |
Spring MVC异步上传、跨服务器上传和文件下载 | |
Spring MVC异常处理【单个控制异常处理器、全局异常处理器、自定义异常处理器】 | |
Spring MVC拦截器和跨域请求 | |
SSM整合案例【C站讲解最详细流程的案例】 |