-
创建表:
create database blog character set utf8;
use blog;
创建用户表
create table user(id int primary key auto_increment,username varchar(20),password varchar(20))charset=utf8;
创建博客表
create table blogs(id int primary key auto_increment,title varchar(100),content text,created bigint,user_id int)charset=utf8;
-
创建工程:
- 工程名 Blog jar改war
- 改错 最长的右键最长的
- 关联Tomcat
- pom.xml中的jar包信息
- 配置文件 jdbc.properties 把里面newdb3改成blog
- 创建四个包
- 把DBUtils和THUtils从之前工程中赋值到utils包下面
-
实现注册功能:
- 在webapp目录下创建reg.html页面 里面有form表单提交地址为RegServlet
- 创建RegServlet留下doPost 获取参数 把参数封装到User实体类中 创建UserDao并且调用dao里面的reg方法
- 实现reg方法
- 在Servlet中注册完之后重定向到login.html页面
-
实现登录功能:
- 创建login.html 类似reg.html form表单地址改成LoginServlet
- 创建LoginServlet,留下doPost方法,获取参数,封装到User对象中,创建UserDao并调用dao的login方法,方法返回值为true或false
- 实现login方法,如果登录成功返回true反之false
- 在Servlet中通过login的返回值决定重定向到什么位置 如果登录失败再次重定向到login登录页面,如果成功重定向到ListServlet.
-
实现发布博客
- 创建ListServlet 留下doGet方法 通过THUtils显示list.html
- 在resources目录下创建list.html页面,页面中添加发布博客超链接 href=send.html
- 创建send.html页面 表单提交地址为SendServlet
- 创建SendServlet,留下doGet方法 获取传递过来的参数, 为了获取登录的用户id,在LoginServlet中登录成功的时候将登录成功的用户信息保存到Session对象里面,获取完参数之后将session里面保存的用户信息取出, 将多个博客信息封装到Blog对象中创建BlogDao 并调用send方法, 最后重定向到ListServlet列表页面
- 实现send方法
-
在列表页面显示当前登录的用户名
- 在ListServlet里面获取session中保存的用户对象,判断是否登录过,如果没有登录 重定向到登录页面, 如果登录过将得到的user对象保存到context容器中
- 在list.html页面中取出容器里面的用户名并显示到页面中
-
实现退出登录功能
- 创建LogoutServlet,留下doGet方法 方法中删除session中的user对象 重定向到login.html页面
-
实现博客列表页面
-
在ListServlet中创建BlogDao并调用findAll方法,将返回的集合放进context容器中
-
实现findAll方法,需要同时查询blogs表和user表
select b.*,u.username from blogs b join user u on b.user_id=u.id;
-
在list.html页面把context里面的内容显示
-
-
实现删除功能
- 在list.html中添加删除的超链接, 在a标签里面添加th:if 属性 满足条件才能显示 连接地址为DelServlet 并且把博客id拼接在后面
- 实现DelServlet,留下doGet方法获取传递过来的id,创建BlogDao并调用deleteById的方法把id传递进去 , 最后重定向到列表页面
- 实现deleteById方法
文件上传
-
Servlet3.0新增功能, 目前所创建工程默认为Servlet2.5
-
如何把工程改成Servlet3.0:
从苍老师文档服务器下载Servlet 3.0 web.xml 得到里面的web.xml 替换掉工程中src/main/webapp/WEB-INF/里面的web.xml
-
在页面中 form表单里 需要把提交方式改成post 还需要修改编译方式
<form action="UploadServlet" method="post" enctype="multipart/form-data"> <input type="file" name="pic"> <input type="submit"> </form>
-
创建UploadServlet, 在类声明的位置添加@MultipartConfig注解
//为了实现文件上传
@MultipartConfig
public class UploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
//获取上传的文件对象
Part part = request.getPart("pic");
//获取文件名
String fileName = part.getSubmittedFileName();
//把文件保存到某个磁盘路径
part.write("D:/imgs/"+fileName);
}
}
Session会话
- 作用: 通过session对象可以让同一个浏览器发出的多个请求之间建立关系共享同一份数据
"+fileName);
}
}
### Session会话
- 作用: 通过session对象可以让同一个浏览器发出的多个请求之间建立关系共享同一份数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UTv06sFc-1594194973489)(C:\Users\pc\AppData\Roaming\Typora\typora-user-images\image-20200622115451150.png)]