在读本篇文章之前,读者应具备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服务器,启动后不要关闭,
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请求:超链接发送的默认是get请求,表单中method="get"发送的是get请求,主要用于从后端获取数据,也可以向后端发送少量数据,发送的数据再请求地址中包含,不在请求体重,发送的数量会有限制,也不安全。
post请求:表单method="post"发送的是post请求,主要是从前端像后端发送数据,数据不在地址栏,在请求体中,可以发送大量数据,且相对于get请求能安全一些。
- 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中配置
1 - * */
- 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("服务器关闭时调用");
- }
- }
前端网页中进行第一次提交
提交后的结果
前端网页中进行第二次提交
提交后的结果
后端测试输出
由上图测试结果可知,构造器和初始化均只执行一次,第二次请求时不在调用这两个方法
服务器关闭时
对于其他的信息,读者可自行测试,此处只对部分进行说明