VRD項目
- 准备工作:
- 创建工程 名字VRD 把jar改成war
- 改错 右键最长的点击最长的 , 替换工程中的web.xml 从苍老师文档服务器下载Servlet3.0 里面的web.xml 替换掉工程中自动生成的web.xml
- 关联Tomcat 工程上右键 Properties 找到TargetedRuntimes 打钩
- 把之前工程中用到的jar包坐标复制到新工程 检查奶瓶是否出现
- 配置文件jdbc.properties 复制到新工程
- 创建四个包 复制两个工具类到工程中
- 在终端中创建vrd数据库 create database vrd character set utf8; use vrd;
- 下载code.zip 解压 把三个文件夹放到工程webapp下面, 把两个页面放到工程的resources目录下面 和jdbc.properties同级
- 实现登录功能
- 在vrd数据库中创建 user表 并且插入测试数据 create table user (id int primary key auto_increment, username varchar(20), password varchar(20))charset=utf8; insert into user values(null,‘admin’,‘admin’);
- 创建ShowLoginServlet ,留下doGet方法 ,在里面通过THUtils 把login.html页面返回给浏览器
- 创建LoginServlet,留下doPost方法,在方法里面先设置字符集,再获取传递过来的用户名和密码, 把用户名和密码封装到User实体类中(此时需要先创建User实体类和UserDao), 创建UserDao 并调用login方法,把封装好的user对象传递到方法中,返回值为User对象 通过User对象是否为null来判断是否登录成功,如果登录成功重定向到/HomeServlet(还没写), 如果登录失败 重定向到/ShowLoginServlet
- 在登录成功的时候用Session保存登录成功的User对象
- 实现记住用户名和密码, 在登录成功时并且判断是记住用户名和密码的时候把用户名和密码保存在cookie中并下发到浏览器
- 在ShowLoginServlet里面 取出Cookie中保存的用户名和密码 放到Context容器里面并显示到login.html页面中
Cookie和Session
- 为什么使用Cookie和Session? 浏览器和服务器之间数据传输遵循的是HTTP数据传输协议,此协议属于无状态协议(一次请求对应一次响应,服务器无法跟踪客户端的请求),通过Cookie服务器可以给客户端设置一个标识,设置完之后客户端之后的请求都会带着这个标识,从而识别客户端. 但是Cookie由于是明文保存在客户端的数据,可以被客户端伪造造成安全隐患, 这时Session的产生解决了此问题,Session基于Cookie实现,但是数据保存在了服务器端,这样保存的数据就不能被伪造从而提高了安全性
- 作用: Cookie和Session都是为了实现多个Servlet之间共享数据而存在的
- Cookie:数据保存在客户端,类似于打孔式的会员卡,
- 保存时间: 默认保存在内存中浏览器关闭时就会被删除,如果设置了保存时间,数据会保存到磁盘中,时间到了后再销毁
- 保存数据大小: cookie保存的数据不能超过4k
- 只能保存字符串数据
- 应用场景: 长时间保存的数据
- Session:数据保存在服务器,类似于银行卡
- Session保存时间为半个小时, 这个时间可以修改但不建议,因为Session对象保存在服务器中会占用资源,Session不建议数据存储时间太久,而且Session的工作原理基于Cookie,在Cookie中保存了sessionId,并且是在内存中保存,浏览器关闭时sessionId就删除.
- 保存数据大小:没有限制
- 可以保存任意对象
- 应用场景: 记录登录状态
3. 实现首页页面显示
- 创建home.html页面 创建HomeServlet 留下doGet方法 方法中 显示home.html页面
- 在终端中创建tag表并添加数据 create table tag(id int primary key auto_increment,name varchar(10))charset=utf8; insert into tag(name) values(‘手绘’),(‘次时代’),(‘雕刻’),(‘室内设计’),(‘产品设计’),(‘地图编辑’);
- 创建Tag实体类 有id和name属性 生成各种方法 , 创建TagDao ,在HomeServlet的doGet方法中创建TagDao 并调用里面的findAll方法 返回值是名为tags的List集合里面装的是Tag对象,把tags装进Context中
- 在home.html页面中 取出Context中的数据显示到页面中
- 添加搜索框并且添加各种样式
- 搜索框右侧超链接, 需要和是否登录建立关系 再次使用了th:if属性