使用Servlet实现表白墙网站(前后端互联)小项目,Mac的M1(没有setting)在哪里找到Setting页面,下载smart tomcat及smart tomcat的配置。(一)

简介: 使用Servlet实现表白墙网站(前后端互联)小项目,Mac的M1(没有setting)在哪里找到Setting页面,下载smart tomcat及smart tomcat的配置。

引言

首先我认为,最清楚的就是了解了前后端进行的初步作用,前端是布置画面,制作用户的交互,后端相当于,保存你的每一步操作,每一步进行的操作,历史搜索记录,保存一些数据,以及和前端相互连接,当然这个也是针对这个小项目,要是更大的则也需要更加细化。

目录

引言

一、准备工作💖

二、编写后端代码😍

三、编写前端代码 💫

一、准备工作💖

(一)引入依赖

pom.xml,提前下载好的依赖(假如说你是第一次下载会耗费点时间。)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>messageWall</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
            <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.14.2</version>
            </dependency>
    </dependencies>
</project>

(二)

web.xml

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
    <display-name>Archetype Created Web Application</display-name>
</web-app>

(三)静态页面(html,css)需要放到webapp目录下面(不是WEB-INF)

(四)下载SMART-TOMCAT

这个是mac系统下的setting,假如是windows就可以直接点击file->setting,其余操作一致

下载成功会,对smart-tomcat进行配置,点击那个add,然后先找到下载的smart-TOMCAT

第一个是tomcat的路径需要选择好。其余的可以不动,我改的一个context path 是java,那么后续请求,要和这个路径一致

二、编写后端代码😍

此处的表白墙页面,可以输入内容,点击提交后,也可以显示内容

所以此处后端需要的工作,主要就两个内容

1.用户点击提交的时候,把刚才输入的内容通过网络传输给服务器,由服务器来保存这个数据

2.后续有页面加载的时候,此时通过网络,从服务器获取到之前保存好的内容

需要进行前后端交互接口的约定,约定好,前端会给后端发一个什么样子的http请求,后端又回返回一个什么样的http响应

1.针对存档操作来说

前端发起一个HTTP请求

POST/messageWall/message->这里的路径怎么约定都可以,但是务必保证前后端一致

此处约定使用json格式,把数据传输到后端,前后端数据交互的时候,格式具体什么样子,随意约定。(实际上,json确实是当下最流行的一种方式)

{
from:"黑猫"
to:"白猫“
message"喵"}

服务器返回一个HTTP响应

HTTP/1.1 200 ok

2.针对读档操作(前端页面加载的时候,需要从服务器拿到之前已经提交的数据)

请求:

GET/messageWall/message

响应:

HTTP/1.1 200 ok
(响应的json应该是数组,使用[]表示,返回的数据会有多条)
[{
from:"黑猫"
to:"白猫"
message:"喵"
}
{
from:"白猫"
to:"黑猫"
message:"喵"
}
]

编写servlet的时候,每次修改代码,都要记得重新启动服务器(修改java代码,必然要重启,需要重新编译),修改前端代码建议也需要重启,这些静态页面可能会被tomcat给提前加载并缓存在内存中,此时修改代码,不一定会同步到内存里。

通过抓包可以确定是前端问题,还是后端的问题

如果抓包发现,ajax的http请求没发出来,大概率前端问题,假如是前端的代码问题,我们就更应该关注浏览器JS调试,可以使用F12,苹果就是点击开发,显示JS控制台

如果发现ajax的http请求发送了,内容符合要求,那么就是后端的问题

import com.fasterxml.jackson.databind.ObjectMapper;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
class  Message{
    public String from;
    public String to;
    public String message;
    @Override
    public String toString() {
        return "Message{" +
                "from='" + from + '\'' +
                ", to='" + to + '\'' +
                ", message='" + message + '\'' +
                '}';
    }
}
@WebServlet("/message")
public class MessageServlet extends HttpServlet {
    //首先要把一个json转化为java对象
    private ObjectMapper objectMapper=new ObjectMapper();
    //此处把消息保存到内存中(一旦重启服务器,内存数据就会消失了。更科学的做法,应该是保存到数据库里面)
    private List<Message> messageList=new ArrayList<>();
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       //1.需要能够读取请求body,转换成java对象
        Message message=objectMapper.readValue(req.getInputStream(),Message.class);
        //2.得到message之后,需要把message保存到服务器中
        messageList.add(message);
        System.out.println("服务器收到message:"+message.toString());
        //3.返回响应,(其实没啥大必要,主要是返回一个200ok就行,body可以没有)
        resp.setStatus(200);                          //设置成功状态码,会更加清晰
        resp.getWriter().write("ok");
    }
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      //1.把内存中的这些Message,组织成json格式,返回到响应中
       String respJson=objectMapper.writeValueAsString(messageList);
       //这个代码十分关键,告诉浏览器,返回的响应的body是json格式(utf8编码)
       resp.setContentType("application/json; charset=utf8");
       resp.getWriter().write(respJson);
        // 2.针对List/数组这种,jackon会自动把数据整理成json数组,里面每个对象,又会被jsckon转换成{}json对象(json对象属性名字,也是和Message类的成员名字对应的)
    }
}


相关文章
|
Oracle Java 关系型数据库
Mac电脑上安装和配置Flutter开发环境
Mac电脑上安装和配置Flutter开发环境
1170 158
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
10774 2
|
开发工具 git 开发者
「Mac畅玩鸿蒙与硬件3」鸿蒙开发环境配置篇3 - DevEco Studio插件安装与配置
本篇将专注于如何在 DevEco Studio 中安装和配置必要的插件,以增强开发功能和提升效率。通过正确配置插件,开发流程能够得到简化,开发体验也会更加顺畅。
760 1
「Mac畅玩鸿蒙与硬件3」鸿蒙开发环境配置篇3 - DevEco Studio插件安装与配置
|
Java Shell 应用服务中间件
Mac系统下配置环境变量:Javajdk、maven、tomcat 环境变量配置及对应配置文件
这篇文章介绍了如何在Mac系统下配置Java JDK、Maven和Tomcat的环境变量,包括配置文件的选择、解决环境变量在zsh shell中无效的问题、查看和设置系统环境变量的方法,以及JDK和Maven的下载、配置和测试步骤。
7366 1
Mac系统下配置环境变量:Javajdk、maven、tomcat 环境变量配置及对应配置文件
|
Web App开发 开发工具 Android开发
【Flutter】Flutter安装和配置(mac)
【Flutter】Flutter安装和配置(mac)
|
前端开发 安全 Java
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
252 1
|
应用服务中间件 Java
|
网络协议 Java 应用服务中间件
框架源码私享笔记(01)Tomcat核心架构功能 | 配置详解
本文首先分享了《活出意义来》一书序言中的感悟,强调成功如同幸福,不是刻意追求就能得到,而是全心投入时的副产品。接着探讨了Tomcat的核心功能与架构解析,包括网络连接器(Connector)和Servlet容器(Container),并介绍了其处理HTTP请求的工作流程。文章还详细解释了Tomcat的server.xml配置文件,涵盖了从顶级容器Server到子组件Connector、Engine、Host、Context等的配置参数及作用,帮助读者理解Tomcat的内部机制和配置方法。
|
Java 应用服务中间件 Linux
在Java 12环境中配置和部署Apache Tomcat的步骤。
这段部署Tomcat的冒险旅程充满技术挑战,但同时也像游戏一样充满乐趣。它需要你提前准备,仔细执行,并随时准备解决意外情况。成功后,你就可以在这匹强壮的网络野马上,带着你的Java应用,冲向Web开发的璀璨星空。
353 56