文章目录
一、配置视图解析器
在springmvc.xml中配置视图解析器:
<!-- 配置视图解析器-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
login.jsp页面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
Login...
</body>
</html>
PageController.java页面:
@Controller
@RequestMapping("/page")
public class PageController {
@RequestMapping("/login")
public String showLogin(){
return "login";
}
}
二、SpringMVC 作用域传值
1、Request作用域传值
1.1、使用原生的HttpServletRequest
PageController.java页面:
@Controller
@RequestMapping("/page")
public class PageController {
@RequestMapping("/login")
public String showLogin(HttpServletRequest request){
request.setAttribute("msg","Hello Corey");
return "login";
}
}
1.2、使用Map集合
@Controller
@RequestMapping("/page")
public class PageController {
@RequestMapping("/login")
public String showLogin(HttpServletRequest request, Map<String,String >map){
map.put("msg","Hello kk");
return "login";
}
}
1.3、使用Model接口
在SpringMVC中提供了一个Model类型的接口,该接口定义了传递数据的基本行为。如果在处理请求的方法中指定了Model类型的参数,那么SpringMVC会注入一个BindingAwareModelMap对象,并通过该对象把数据放入到HttpServletRequest对象中。
@Controller
@RequestMapping("/page")
public class PageController {
@RequestMapping("/login")
public String showLogin(HttpServletRequest request, Map<String,String >map, Model model){
model.addAttribute("msg","Hello Corey");
return "login";
}
}
2、Session作用域传值
@Controller
@RequestMapping("/page")
public class PageController {
@RequestMapping("/login")
public String showLogin(HttpServletRequest request, Map<String,String >map, Model model,HttpSession session){
//HttpSession session = request.getSession();
session.setAttribute("msg","Hello Corey");
return "login";
}
}
3、Application作用域传值
@Controller
@RequestMapping("/page")
public class PageController {
@RequestMapping("/login")
public String showLogin(HttpServletRequest request, Map<String,String >map, Model model,HttpSession session){
//方法一:
//ServletContext servletContext = request.getSession().getServletContext();
//方法二:
ServletContext servletContext = session.getServletContext();
servletContext.setAttribute("msg","Hello kk");
return "login";
}
}
三、SpringMVC的响应方式
1、请求转发
1.1、使用Servlet API
在SpringMVC中可以使用HttpServletRequest对象实现请求转发
@RequestMapping("/login2")
public void showLogin2(HttpServletRequest request, HttpServletResponse response)throws Exception{
request.setAttribute("msg","SpringMVC");
request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request,response);
}
1.2、使用视图解析器实现请求转发跳转
@RequestMapping("/login3")
public String showLogin3(Model model){
model.addAttribute("msg","Hello");
return "login";
}
2、重定向
在SpringMVC需要使用redirect关键字实现重定向的跳转,在重定向跳转中是不经过视图解析器的。
@RequestMapping("/login3")
public String showLogin3(Model model){
model.addAttribute("msg","Hello");
return "login";
}
@RequestMapping("/redirectLogin")
public String redirectLogin(){
return "redirect:/page/login3";
}