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("服务器关闭时调用");
    }
}
 

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

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

提交后的结果

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

提交后的结果

后端测试输出

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

服务器关闭时

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

  • 14
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Black—slience

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值