红茶的个人站点

  • 首页
  • 专栏
  • 开发工具
  • 其它
  • 隐私政策
Awalon
Talk is cheap,show me the code.
  1. 首页
  2. SpringMVC 学习笔记
  3. 正文

SpringMVC 学习笔记5:JSP

2023年9月21日 918点热度 0人点赞 0条评论

这篇文章介绍如何在基于 JavaWeb 和 SpringMVC 搭建的框架中使用 JSP。

1.准备工作

先按照之前文章说的方式,创建一个 Mave Web 项目,并添加 Spring MVC 依赖,并添加相关的 SpringMVC 容器初始化代码。

这里是我创建好的示例项目。

项目中有以下几个目录:

  • /resources/static,存放静态资源,比如 html/css/js 等。

  • /webapp,存放 jsp。

现在可以直接访问 JSP 相关页面,比如:http://localhost/jsp/user/login.jsp

2.请求转发

也可以使用 Controller 处理请求,并加载 JSP 页面:

@Controller
@RequestMapping("/user")
public class UserController {
    @GetMapping("/loadLoginPage")
    public String loadLoginPage(){
        return "/jsp/user/login.jsp";
    }
}

这里直接返回相应的 JSP url 即可,相当于 Servlet 中的请求转发。

3.重定向

如果要重定向到 JSP 页面而非请求转发,可以:

@GetMapping("/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 中使用 EL 处理数据。

4.1.Model

使用 SpringMVC 时可以使用Model附加数据:

@GetMapping("/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 还提供另一种方式:

@GetMapping("/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.参考资料

  • Web on Servlet Stack (spring.io)

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: jsp spring springMVC
最后更新:2023年9月21日

魔芋红茶

加一点PHP,加一点Go,加一点Python......

点赞
< 上一篇

文章评论

取消回复

*

code

COPYRIGHT © 2021 icexmoon.cn. ALL RIGHTS RESERVED.
本网站由提供CDN加速/云存储服务

Theme Kratos Made By Seaton Jiang

宁ICP备2021001508号

宁公网安备64040202000141号