web开发

在读本篇文章之前,读者应具备javaSE的基础知识,前端网页的基本知识(能制作简单样式即可)。

所谓web开发,指的就是从网页向后端程序发送请求,后端做出响应,即前端与后端程序进行交互。

那么前端程序如何才能够访问到后端程序?通过web服务器解决,后端程序为了能让前端能够远程访问到,需要将后端的程序部署在服务器上,这样就可以远程访问,并且向前端做出响应。

什么是服务器?Web服务器是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览; 它是一个容器,是一个连接用户与程序之间的中间件。 WEB服务器有很多,流行的WEB服务器有Tomcat 、 WebSphere 、 WebLogic、Jboss等。

本篇文章所使用的服务器为Tomcat, 在小型的应用系统或者有特殊需要的系统中,该服务器支持全部JSP以及Servlet规范。Tomcat由Apache所创造,作为一个程序员,Apache是必须了解的内容之一,Apache(Apache Software Foundation)是一个软件基金会,是专门为运作一个开源软件项目的Apache的团体提供支持的非盈利性组织。

后端开发准备工作

1.安装jdk 配置JAVA_HOME path,注意:配置到jdk的根目录,即bin目录的上一级

2.下载安装Tomcat服务器,进入到bin目录,双击startup.bat启动tomcat服务器,启动后不要关闭,

Tomcat下载

3.在浏览器中访问ip+端口,127.0.0.1:8080(8080是默认端口号),如看到如图所示,则说明服务器可以正常使用。

4.修改服务器默认端口号,vue项目的默认端口号也是8080,与Tomcat服务器端口号冲突

Tomcat目录层次结构

将默认的8080端口号改为其他的端口号,如8088,8090,不冲突即可。

上述做了那么多的准备工作,那么前端与后端的交互的到底是怎么实现的,大致流程图如下图所示

上手操作:

1.创建一个web后端项目

项目创建完成后,再按照如图所示完成配置

至此基本的准备工作已经完成,现在已经将项目部署到了Tomcat服务器中。

在后端编写实现指定业务逻辑的代码,然后启动程序即可。

既然要接收前端发送的请求,那就必须先了解一下前端发送请求的方式(get请求和post请求)。

客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个http请求。一次请求中包含三个部分:请求行,请求头,请求体

请求行:包含请求方式(get/post),请求的资源(地址)等,由浏览器自动发送

请求头:包含客户端的一些环境信息(浏览器版本,客户端ip 等),由浏览器自动发送

请求体:包含的是post请求向后端发送的数据

两种请求方式:get和post

get请求:超链接发送的默认是get请求,表单中method="get"发送的是get请求,主要用于从后端获取数据,也可以向后端发送少量数据,发送的数据再请求地址中包含,不在请求体重,发送的数量会有限制,也不安全。

post请求:表单method="post"发送的是post请求,主要是从前端像后端发送数据,数据不在地址栏,在请求体中,可以发送大量数据,且相对于get请求能安全一些。

前端基本html表单形式发送post请求示例

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <form action="http://127.0.0.1:8090/demo/test" method="post">
            账号:<input type="text" name="account" placeholder="请输入账号" />
             <br />
            密码:<input type="password" name="password" /><br />
            <input type="submit" value="登录" />
        </form>
    </body>
</html>

后端处理请求类

1.创建一个类继承javax.servlet.http包下的HttpServlet,对于servlet的生命周期放入了代码,读者阅读代码对应的注释即可

重写的方法的说明

除上述所示,还有一个重要的方法,就是当前servlet类的构造方法

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.io.PrintWriter;
​
/**
 * 功能描述:后端接受请求
 * 1.创建一个类,并继承HttpServlet,这样我们的类也就遵守了javaEE规范
 * 2.重写父类中的方法
 * 3.在web.xml文件中配置Servlet
 */
// 注解的方式配置servlet服务,也可以在web.xml文件中配置
@WebServlet(urlPatterns = "/test")
public class Test extends HttpServlet {
    /*
     * 服务器启动后,进入网页调用(创建)一次后不再重复创建对象
     * 什么时候调用:
     *  1.第一次向"/test"发送请求
     *  2.服务器启动时,web.xml中配置<load-on-startup>1</load-on-startup>
     * */
    public Test() {
        System.out.println("我是构造器");
    }
​
    /*
     * 服务器启动后,进入网页调用(创建)一次后不再重复创建对象,同构造器
     * 初始化
     * 是servlet规范中必须要调用的方法
     * 如果没有可以初始化执行的,可以不重写,默认的构造方法
     */
    @Override
    public void init() throws ServletException {
        System.out.println("初始化,只执行一次");
    }
​
    /*
        HttpServletRequest 表示请求对象, 服务器将请求到的数据封装到HttpServletRequest对象中
        通过HttpServletRequest对象, 就可以获得请求中任意的数据
     */
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("处理post请求");
        String account = req.getParameter("account");
        String password = req.getParameter("password");
        System.out.println("account = " + account);
        System.out.println("password = " + password);
​
        resp.setContentType("text/html;charset=utf-8");// 设置响应字符集
        PrintWriter writer = resp.getWriter();
        writer.print("Test成功");
    }
​
    
    /*
     * 服务器关闭时调用
     * 最终要执行的代码写在此方法中
     * 如果没有需要执行的的操作,可以不重写,默认调用父类中的此方法
     */
    @Override
    public void destroy() {
        System.out.println("服务器关闭时调用");
    }
}

  

通过前端向后端发送请求测试

前端网页中进行第一次提交

提交后的结果

前端网页中进行第二次提交

提交后的结果

后端测试输出

由上图测试结果可知,构造器和初始化均只执行一次,第二次请求时不在调用这两个方法

服务器关闭时

对于其他的信息,读者可自行测试,此处只对部分进行说明

相关推荐

  1. <span style='color:red;'>web</span><span style='color:red;'>开发</span>

    web开发

    2024-04-22 11:36:01      13 阅读
  2. python web开发过程

    2024-04-22 11:36:01       23 阅读
  3. web开发模式

    2024-04-22 11:36:01       24 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-22 11:36:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-22 11:36:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-22 11:36:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-22 11:36:01       18 阅读

热门阅读

  1. 【数学建模】建筑工地开工问题

    2024-04-22 11:36:01       13 阅读
  2. 速盾:cdn都能防御哪些攻击?

    2024-04-22 11:36:01       12 阅读
  3. 【每日一题】补档 CF371 D. Vessels | 并查集 | 简单

    2024-04-22 11:36:01       11 阅读
  4. 什么是深度学习?

    2024-04-22 11:36:01       12 阅读
  5. C#中检查一个矩阵是否可逆

    2024-04-22 11:36:01       14 阅读
  6. 金融领域思考-前言

    2024-04-22 11:36:01       10 阅读
  7. hadoop

    hadoop

    2024-04-22 11:36:01      9 阅读