这篇文章介绍如何在基于 JavaWeb 和 SpringMVC 搭建的框架中使用 JSP。
1.准备工作
先按照
是我创建好的示例项目。
项目中有以下几个目录:
-
/resources/static
,存放静态资源,比如 html/css/js 等。 -
/webapp
,存放 jsp。
现在可以直接访问 JSP 相关页面,比如:http://localhost/jsp/user/login.jsp
2.请求转发
也可以使用 Controller 处理请求,并加载 JSP 页面:
"/user")
(public class UserController {
"/loadLoginPage")
( public String loadLoginPage(){
return "/jsp/user/login.jsp";
}
}
这里直接返回相应的 JSP url 即可,相当于 Servlet 中的请求转发。
3.重定向
如果要重定向到 JSP 页面而非请求转发,可以:
"/redirect")
(public String redirect(){
return "redirect:/jsp/user/login.jsp";
}
请求 http://localhost/user/redirect 会发现浏览器收到 302 重定向的响应,并跳转到 http://localhost/jsp/user/login.jsp
4.附加数据
在使用 Servlet 的时候,我们会使用HttpServletRequest.addAttribute
附加数据,然后在 JSP 中使用 处理数据。
4.1.Model
使用 SpringMVC 时可以使用Model
附加数据:
"/loadLoginPageAndData")
(public String loadLoginPageAndData(Model model) {
String time = LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
String message = "今天天气不错,现在的时间是:" + time;
model.addAttribute("helloMessage", message);
return "/jsp/user/login.jsp";
}
注意,这里的 Model 通过注入获取,并不需要手动创建。SpringMVC 会为每次请求创建一个 Model。
同样可以用 EL 和 JSTL 在 JSP 中获取并处理数据:
<%taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:if test="${helloMessage!=null}">
<h2>${helloMessage}</h2>
</c:if>
4.2.ModelAndView
除了使用 Model
,SpringMVC 还提供另一种方式:
"/loadLoginPageAndData2")
(public ModelAndView loadLoginPageAndData2() {
String time = LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
String message = "今天天气不错,现在的时间是:" + time;
ModelAndView modelAndView = new ModelAndView("/jsp/user/login.jsp");
modelAndView.addObject("helloMessage", message);
return modelAndView;
}
与Model
不同的是,使用ModelAndView
需要手动创建并返回。且需要在 ModelAndView
中设置 JSP 的 url 以及附加的数据。
The End,谢谢阅读。
可以从获取本文的完整示例代码。
5.参考资料
文章评论