使用bootstrap+express-art-template实现一个简单的留言板

结果展示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
项目结构:
在这里插入图片描述
404.html页面:

<!DOCTYPE html>
<html lang="ch">
    <head>
        <meta charset="UTF-8">
        <title>留言本</title>
    </head>
    <body>
        <h1>404 not found</h1>
    </body>
</html>

index.html页面:

<!DOCTYPE html>
<html lang="ch">
    <head>
        <meta charset="UTF-8">
        <title>留言本</title>
        <link rel="stylesheet" href="/public/css/bootstrap.css">
    </head>
    <body>
        <div class="header container">
            <div class="page-header">
                <h1>留言板</h1>
                <a class="btn btn-success" href="/post">发表留言</a>
            </div>
        </div>
        <div class="comments container">
            <ul class="list-group">
                {{each comments}}
                <li class="list-group-item">{{ $value.name }}留言了:{{ $value.message }}
                    <span class="pull-right">{{ $value.dateTime }}</span>
                </li>
                {{/each}}
            </ul>
        </div>
    </body>
</html>

post.html页面:

<!DOCTYPE html>
<html lang="ch">
    <head>
        <meta charset="UTF-8">
        <title>留言本</title>
        <link rel="stylesheet" href="/public/css/bootstrap.css">
    </head>
    <body>
        <div class="header container">
            <div class="page-header">
                <h1><a href="/">首页</a> <small>发表评论</small></h1>
            </div>
        </div>
        <div class="comments container">
            <form action="/post" method="post">
                <div class="form-group">
                    <label for="input_name">您的名字</label>
                    <input type="text" class="form-control" required minlength="2" maxlength="10" id="input_name"
                           name="name" placeholder="请写入你的姓名" autocomplete="off">
                </div>
                <div class="form-group">
                    <label for="textarea_message">留言内容</label>
                    <textarea class="form-control" name="message" id="textarea_message" cols="30" rows="10" required
                              minlength="5" maxlength="20" placeholder="请在这里输入您的评论"></textarea>
                </div>
                <button type="submit" class="btn btn-default">发表</button>
            </form>
        </div>
    </body>
</html>

app.js页面:

const express = require('express')
const bodyParser = require('body-parser')
const favicon = require('serve-favicon')
const port = 9090
const app = express()

//设置收藏夹图标
app.use(favicon('./public/img/qisui.ico'))
app.engine('html', require('express-art-template'))
// 开放静态资源 让bootstrap.css可以被加载
app.use('/public',express.static('./public'))
app.use(bodyParser.urlencoded({extended: false}))
app.use(bodyParser.json())

const comments = [
    {
        name: '丁七岁',
        message: '生命太短,没留时间给遗憾。若不是终点,请微笑一直向前。',
        dateTime: '2020-10-14 20:46:08'
    },
    {
        name: '丁七岁',
        message: '生命太短,没留时间给遗憾。若不是终点,请微笑一直向前。',
        dateTime: '2020-10-14 20:46:08'
    },
    {
        name: '丁七岁',
        message: '生命太短,没留时间给遗憾。若不是终点,请微笑一直向前。',
        dateTime: '2020-10-14 20:46:08'
    },
    {
        name: '丁七岁',
        message: '生命太短,没留时间给遗憾。若不是终点,请微笑一直向前。',
        dateTime: '2020-10-14 20:46:08'
    },
    {
        name: '丁七岁',
        message: '生命太短,没留时间给遗憾。若不是终点,请微笑一直向前。',
        dateTime: '2020-10-14 20:46:08'
    }
]

app.get('/',(req,res)=>{
    res.render('index.html',{
        comments:comments
    })
})

app.get('/post',(req,res)=>{
    res.render('post.html')
})

app.post('/post',(req,res) =>{
    let comment = req.body //拿到用户输入的姓名还有留言信息
    // console.log(comment)
    comment.dateTime = createTime
    comments.unshift(comment)
    res.redirect('/')
})

app.listen(port, () => console.log(`message book app listening on port ${port},written by dingqisui~~~`))

const createTime = function createTime() {
    let date = new Date();
    let arr = [date.getFullYear() + "-",
        date.getMonth() + 1 + "-",
        date.getDate() + " ",
        date.getHours() + ":",
        date.getMinutes() + ":",
        date.getSeconds()];
    return arr.join("");
}

创建项目的时候,你先找一个目录:npm init下,生成一个package.json文件,这样你下载的什么包,什么版本的都一目了然。
比如我的这个:
在这里插入图片描述

cnpm install express --save
cnpm install bootstrap --save
cnpm install --save art-template
cnpm install --save express-art-template
cnpm install --save body-parser # 用来解析表单 POST 请求体
cnpm install --save serve-favicon # 设置收藏夹图标

用淘宝的镜像快一点~

 npm install cnpm -g --registry=https://registry.npm.taobao.org
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,下面我将为你展示如何实现一个基于Spring Boot、Mybatis-Plus、Thymeleaf和Bootstrap留言。 1. 创建Spring Boot项目 首先,我们需要创建一个Spring Boot项目。你可以直接在IDE中创建,也可以使用Spring Boot CLI。这里我使用IDEA创建一个Maven项目。 2. 配置pom.xml 在pom.xml文件中添加以下依赖: ``` <dependencies> <!-- Spring Boot Starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Thymeleaf --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <!-- MyBatis-Plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.1</version> </dependency> <!-- MySQL Connector --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.21</version> </dependency> <!-- Bootstrap --> <dependency> <groupId>org.webjars</groupId> <artifactId>bootstrap</artifactId> <version>4.5.0</version> </dependency> <!-- Webjars Locator --> <dependency> <groupId>org.webjars</groupId> <artifactId>webjars-locator</artifactId> <version>0.40</version> </dependency> </dependencies> ``` 这里使用了Spring Boot、Thymeleaf、Mybatis-Plus、MySQL Connector、Bootstrap以及Webjars Locator。 3. 配置数据库 我们需要在application.properties文件中配置数据库连接信息。 ``` spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ``` 这里使用MySQL作为数据库,数据库名为test,用户名和密码均为root。 4. 创建留言实体类 我们需要创建一个留言实体类,用于映射数据库中的留言表。 ``` public class Message { private Long id; private String username; private String content; private Date createTime; // 省略getter和setter方法 } ``` 5. 创建Mapper 我们需要创建一个Mapper接口,用于操作留言表。 ``` @Mapper public interface MessageMapper extends BaseMapper<Message> { List<Message> selectAll(); } ``` 这里使用了Mybatis-Plus提供的BaseMapper作为父接口,简化了Mapper的编写。 6. 创建Controller 我们需要创建一个Controller,用于处理请求。 ``` @Controller public class MessageController { @Autowired private MessageMapper messageMapper; @GetMapping("/") public String index(Model model) { List<Message> messages = messageMapper.selectAll(); model.addAttribute("messages", messages); return "index"; } @PostMapping("/") public String addMessage(Message message) { message.setCreateTime(new Date()); messageMapper.insert(message); return "redirect:/"; } } ``` 这里使用了@Autowired注解注入了MessageMapper。在index方法中,我们查询了所有留言,并将其存入Model中,然后返回index视图。在addMessage方法中,我们添加了一条留言,并重定向到首页。 7. 创建视图 我们需要创建一个视图,用于显示留言列表和添加留言。 ``` <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org" xmlns:webjars="http://www.thymeleaf.org/extras/webjar"> <head> <title>留言</title> <!-- Bootstrap --> <link rel="stylesheet" href="/webjars/bootstrap/4.5.0/css/bootstrap.min.css" /> </head> <body> <div class="container"> <h1>留言</h1> <hr/> <form method="post"> <div class="form-group"> <label for="username">用户名:</label> <input type="text" class="form-control" id="username" name="username" required="required" /> </div> <div class="form-group"> <label for="content">留言内容:</label> <textarea class="form-control" id="content" name="content" required="required"></textarea> </div> <button type="submit" class="btn btn-primary">提交留言</button> </form> <hr/> <table class="table table-striped"> <thead> <tr> <th>用户名</th> <th>留言内容</th> <th>留言时间</th> </tr> </thead> <tbody> <tr th:each="message : ${messages}"> <td th:text="${message.username}"></td> <td th:text="${message.content}"></td> <td th:text="${#dates.format(message.createTime, 'yyyy-MM-dd HH:mm:ss')}"></td> </tr> </tbody> </table> </div> <!-- Bootstrap --> <script src="/webjars/bootstrap/4.5.0/js/bootstrap.min.js"></script> </body> </html> ``` 这里使用了Thymeleaf模引擎,使用Bootstrap样式。在表格中,我们使用了th:each指令循环遍历留言列表,使用了#dates.format方法格式化留言时间。 8. 运行项目 现在,我们可以运行项目并访问http://localhost:8080来查看留言了。 以上就是一个简单的Spring Boot、Mybatis-Plus、Thymeleaf和Bootstrap留言实现过程。希望对你有帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值