1.分析流程
    在影片列表中,发起详情页的请求跳转(携带film_Id), 通过查询数据库,找到详细信息,将信息封装成vo,vo通过model传输给页面,页面通过${}的表达式展示出来。
    2.在影片列表页中增加跳转 (4、9两行)

    1. <c:forEach var="filmVo" items="${filmVoList}" begin="0" end="3">
    2. <td>
    3. <div style="width: 250px; margin: 10px;">
    4. <a href="filmInfo?film_id=${filmVo.filmId}">
    5. <img src="${pageContext.request.contextPath}${filmVo.poster_path}"
    6. style="width: 250px;height: 380px"/>
    7. </a>
    8. <div class="piao">
    9. <a href="filmInfo?film_id=${filmVo.filmId}" >
    10. <p style="color: white;top:50px">${filmVo.fname}</p>
    11. <p style="color: #fff;top: 50px">导演:${filmVo.director}</p>
    12. </a>
    13. </div>
    14. </div>
    15. </td>
    16. </c:forEach>

    FilmController.java

    1. @RequestMapping("filmInfo")
    2. public String filmInfo(String filmId,Model model){
    3. // 定义⼀个FilmDetailVo来将数据渲染到⻚⾯中
    4. FilmDetailVo filmDetailVo= filmService.findFilmById(filmId);
    5. model.addAttribute("filmDetailVo",filmDetailVo);
    6. return "detail";
    7. }

    FilmDetailVo.java

    1. package com.duyi.vo;
    2. import java.util.Date;
    3. public class FilmDetailVo {
    4. private String filmId; // filmId 驼峰也可 需要额外配置
    5. private String fname;
    6. private String director;
    7. private String role;
    8. private String ftype;
    9. private String country;
    10. private int length;
    11. private String synopsis;
    12. private Date releaseTime;
    13. private String posterPath;
    14. //构造函数、set、get函数省略
    15. }

    FilmService.java

    1. //返回影片详情
    2. public FilmDetailVo findFilmById(String filmId){
    3. Film film=filmDao.findFilmById(filmId);
    4. FilmDetailVo filmDetailVo=new FilmDetailVo();
    5. filmDetailVo.setFilmId(film.getFilm_id());
    6. filmDetailVo.setFname(film.getFname());
    7. filmDetailVo.setCountry(film.getCountry());
    8. filmDetailVo.setDirector(film.getDirector());
    9. // 剧情 爱情等 可以存储到额外的类型表中
    10. // 剧情-1 爱情-2 film - type [1,2] 再去type表中取具体的描述
    11. filmDetailVo.setFtype(film.getFtype());
    12. filmDetailVo.setLength(film.getLength());
    13. filmDetailVo.setPosterPath(film.getPoster_path());
    14. filmDetailVo.setReleaseTime(film.getRelease_time());
    15. filmDetailVo.setRole(film.getRole());
    16. filmDetailVo.setSynopsis(film.getSynopsis());
    17. return filmDetailVo;
    18. }

    FilmDao.java

    1. //根据film_id查找对应影片信息
    2. @Select("select id,film_id,fname,director,role,ftype,country,length,synopsis,release_time,poster_path from film where film_id = #{filmId}")
    3. public Film findFilmById(String filmId);

    detail.jsp
    核心代码(不加样式)

    1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    3. <html>
    4. <head>
    5. <title>影片详情</title>
    6. </head>
    7. <body>
    8. <div>
    9. <img src="${pageContext.request.contextPath}${filmDetailVo.posterPath}"/>
    10. <p>导演: ${filmDetailVo.director}</p>
    11. <p>主演: ${filmDetailVo.role}</p>
    12. <p>类型: ${filmDetailVo.ftype}</p>
    13. <p>片长: ${filmDetailVo.length}分钟</p>
    14. <p>国家: ${filmDetailVo.country}</p>
    15. <p>剧情简介: ${filmDetailVo.synopsis}</p>
    16. </div>
    17. </body>
    18. </html>

    加样式

    1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    3. <html>
    4. <head>
    5. <title>影片详情</title>
    6. </head>
    7. <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/bootstrap.css"/>
    8. <style type="text/css">
    9. body {
    10. background: #2E323B;
    11. }
    12. #register table tr {
    13. height: 50px;
    14. }
    15. .detailed {
    16. background: white;
    17. border-radius: 20px;
    18. padding-bottom: 50px;
    19. margin-top: 20px;
    20. }
    21. </style>
    22. <body>
    23. <div class="container">
    24. <div class="container detailed">
    25. <div class="container" style="margin-top: 20px;">
    26. <div>
    27. <strong id="biaoti" style="font-size: 26px;">${film.name}</strong>
    28. </div>
    29. <img style="float: left; display: block; height: 350px; width: 250px; margin-right: 20px;"
    30. src="${pageContext.request.contextPath}${filmDetailVo.posterPath}"/>
    31. <div>
    32. <div style="padding-top: 15px;padding-right: 20px;line-height: 25px;">
    33. <p>导演: ${filmDetailVo.director}</p>
    34. <p>主演: ${filmDetailVo.role}</p>
    35. <p>类型: ${filmDetailVo.ftype}</p>
    36. <p>片长: ${filmDetailVo.length}分钟</p>
    37. <p>国家: ${filmDetailVo.country}</p>
    38. <p>剧情简介: ${filmDetailVo.synopsis}</p>
    39. <strong>
    40. <a href="play?filmId=${vo.filmId}">查看排片信息</a>
    41. </strong>
    42. </div>
    43. </div>
    44. </div>
    45. </div>
    46. </div>
    47. </body>
    48. </html>

    此版本引入了bootstrap.css,需要在webapp/css⽂件夹下拷贝此文件
    bootstrap.css