image.png
写文件代码文件夹
写测试代码文件夹
写资源文件文件夹
写测试资源文件夹

注意事项

1、在web.xml中配置DispatcherServlet时,url-pattern的问题

  1. <!--声明 springmvc 中央调度器-->
  2. <servlet>
  3. <servlet-name>DispatcherServlet</servlet-name>
  4. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  5. <init-param>
  6. <param-name>contextConfigLocation</param-name>
  7. <param-value>classpath:/springmvc.xml</param-value>
  8. </init-param>
  9. <load-on-startup>1</load-on-startup>
  10. </servlet>
  11. <servlet-mapping>
  12. <servlet-name>DispatcherServlet</servlet-name>
  13. <url-pattern>/</url-pattern>
  14. </servlet-mapping>

1) / 匹配所有请求
会拦截所有资源,一般过滤器使用,而调度器不使用
2)
.do 匹配所有以 .do结尾的请求
不会匹配静态资源,所以能够直接访问
3)/ 匹配所有请求 (包含除 .jsp和.jspx 外的所有后缀)
/test.css -> /test 此时css和js等静态资源无法被访问 需要额外配置

2、web.xml中的版本号

web.xml version(版本) jdk Tomcat
2.4 1.4 5.5
2.5 5.0 6.0
3.0 6.0 7.0
3.1 7.0 8.0
4.0 8.0 9.0

可以向下兼容(支持更老的版本),不能向上兼容。

开发流程
设计库表
影片列表 影片详情 排片信息 选座购票
影院列表 影院详情(地区) 预售期(提前几天购票)
放映厅信息(座位排布 售票情况)

后天管理系统的内容
影片上架下架 影院新增删除 排片===

影片列表功能

1、设计数据库表结构

Film表

字段名 含义 类型
id 主键(自增) bigint
film_id 电影唯一id varchar
name 名字 varchar
director 导演 varchar
player 主演 varchar
type 类型 varchar
country 制片国家 varchar
length 片长(单位:分钟) int
synopsis 剧情介绍 varchar
play_time 上映时间 date
img_path 海报地址 varchar

对于entity类,需要实现序列化
生成序列化id

2、编写实体类、配置文件sql以及DAO

Film.java

  1. // 这是实体类 和数据库中的表映射
  2. public class Film implements Serializable {
  3. private static final long serialVersionUID = -4427069375523038931L;
  4. private long id;
  5. private String film_id; // filmId 驼峰也可 需要额外配置
  6. private String name;
  7. private String director;
  8. private String player;
  9. private String type;
  10. private String country;
  11. private int length;
  12. private String synopsis;
  13. private Date play_time;
  14. private String img_path;
  15. // ... getter和setter方法省略
  16. }

filmMapper.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.duing.dao.FilmDao">
  6. <!--`是转义字符 name是数据库的关键字 可以用转义字符改成普通颜色-->
  7. <select id="getList" resultType="com.duing.entity.Film">
  8. select id,film_id,`name`,director,player,`type`,country,`length`,synopsis,play_time,img_path
  9. from film
  10. </select>
  11. </mapper>

FilmDao.java

  1. public interface FilmDao {
  2. List<Film> getList();
  3. }

3、编写控制层和视图层

  1. // 视图层对象 用来展示给用户使用 view object
  2. public class FilmVo {
  3. private String filmId;
  4. private String name;
  5. private String director;
  6. private String imgPath;
  7. // ... getter和setter方法省略
  8. }
  1. public interface FilmService {
  2. List<FilmVo> selectAll();
  3. }
  1. @Service
  2. public class FilmServiceImpl implements FilmService {
  3. @Autowired
  4. private FilmDao filmDao;
  5. @Override
  6. public List<FilmVo> selectAll() {
  7. List<Film> films = filmDao.getList();
  8. System.out.println("数据库中影片数量:" + films.size());
  9. List<FilmVo> result = new ArrayList<>();
  10. for (Film film : films) {
  11. FilmVo vo = new FilmVo();
  12. vo.setFilmId(film.getFilm_id());
  13. vo.setName(film.getName());
  14. vo.setDirector(film.getDirector());
  15. vo.setImgPath(film.getImg_path());
  16. result.add(vo);
  17. }
  18. return result;
  19. }
  20. }
  1. @Controller
  2. public class FilmController {
  3. @Autowired
  4. private FilmService filmService;
  5. @RequestMapping("/filmList")
  6. @ResponseBody
  7. public List<FilmVo> selectAll() {
  8. List<FilmVo> filmVos = filmService.selectAll();
  9. return filmVos;
  10. }
  11. }