基于Servlet的博客系统

本文介绍了使用Servlet和Thymeleaf实现博客系统的全过程。从设计思路、接口介绍到功能实现,包括用户注册、登录、博客列表、详情、发布及删除功能。通过对HttpServlet和Thymeleaf的运用,加深了对HTTP协议和服务器端渲染的理解。
摘要由CSDN通过智能技术生成

一、设计思路

  1. 需求分析:根据整体的需求,设计数据库,然后建立数据表;首先建立一个数据库,根据需求见了了User表和Blog表。
  2. 实现数据库代码,并进行封装;首先创建实现了数据库的初始化,然后建立了两个实体类,然后分别对User表进行了插入和查找功能和Blog表的插入、查找和删除功能。
  3. 通过Servlet 设计并实现具体功能,包括注册、登录,浏览,发表,删除。

二、用到的接口

1、Servlet

Servlet是其实是Tomcat提供给用户的一组API,它可以帮助用户去实现Web程序的开发,其中主要的类有HttpServlet、HttpServletRequest、HttpServletResponds,其分别对应Http协议中的服务器部分和请求和响应。Servlet更偏向于业务代码,请求和响应的解析它基本不负责,它只需要接收Tomcat处理好的信息,然后进行整理,构造两个类,提供给用户使用。
在这里插入图片描述

2、Thymeleaf

Thymeleaf称为模板引擎,主要用于渲染前端页面。我们在构造一个动态页面的时候有两种方式,一种是前端渲染(也称为前后端分离),还有一种是服务器端渲染,Thymeleaf是一种服务器端渲染方式,我们从前端接收到数据后,通过在后端调用Thymeleaf的方法,实时渲染一个前端页面,最后返回给浏览器。

@WebListener
public class ThymeleafConfig implements ServletContextListener {
   
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
   
        //这个方法会在当前webapp的ServletContext初始化之前立即执行
        //初始化Thymeleaf
        //创建一个engine,负责把java中的数据替换到模板中
        TemplateEngine engine = new TemplateEngine();
        //创建一个resolvr对象,负责找到html模板在哪
        //供engine对象来使用
        ServletContextTemplateResolver resolver = new ServletContextTemplateResolver(servletContextEvent.getServletContext());
        //Context中文原意就是“上下文”  Servlet中的上下文,就是一个对象,这个对象里面就包含了这个Webapp的一些相关属性。
        //每个webapp都有自己的Context对象,同一个webapp里的若干个Servlet对象之间共享一个Context对象
        //给resolver设置一些属性,让他能够找到html文件
        resolver.setCharacterEncoding("utf-8");
        //Prefix表示“前缀”,设定了满足什么条件的文件可以加载
        resolver.setPrefix("/WEB-INF/template/");
        //设置”后缀“
        resolver.setSuffix(".html");
        engine.setTemplateResolver(resolver);
        //接下来把初始化好的engine对象通过键值对的方式用Context对象保存起来,便于后面使用
        ServletContext context = servletContextEvent.getServletContext();
        context.setAttribute("engine",engine);
    }
}
Thymeleaf的初始化

三、功能实现

1、注册功能

(1)代码实现

注册的实现很简单,我们只需要通过前端的from表单提交用户名和密码,然后判断是否合法,如果合法的话就把数据插入数据库中。(这里只是简单的实现注册功能,没有一些复杂的判断,比如对用户名中特殊字符的要求之类的)

@WebServlet("/register")
public class RegisterServle extends HttpServlet {
   
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        if (username == null || "".equals(username)
        || password == null || "".equals(password)){
   
            resp.sendError(404,"不能提交空的同户名或密码");
            return;
        }
        UserDao userDao = new UserDao();
        User user = userDao.selectByname(username);
        if (user != null){
   
            resp.sendError(404,"用户名已经存在");
            return;
        }
        User newuser = new User();
        newuser.setUsername(username);
        newuser.setPassword(password);
        userDao.insert(newuser);
        resp.setContentType("text/html ; charset = utf-8 ");
        resp.getWriter().write("<h3>注册成功</h3>");
    }
}

(2)测试功能

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、登录功能

登录只需要把用户输入的用户名和密码跟数据库中储存的用户信息进行比较,如果不匹配就登录失败,否则就登录成功。

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
   
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        req
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值