JSP向Servlet传递数据以及与STM32、ESP8266通信过程

发布者:chuyifei最新更新时间:2020-03-29 来源: eefocus关键字:JSP  Servlet  传递数据  STM32  ESP8266  通信过程 手机看文章 扫描二维码
随时随地手机看文章

工作流程:

login.jsp->ValidateTest.java->ControlTest.jsp和SocketTest.java->Control.java->8266->STM32


以上文件中后缀名为.jsp的就是JSP文件,Control.java和ValidateTest.java就是所谓的Servlet文件,SocketTest.java就是普通的Java Class文件。即只要是和JSP文件有数据传递关系的都得创建Servlet文件,而不是创建Class文件,当然了,你创建Class文件也行,只不过里面还是都得有Servlet文件所必须的doPost之类的方法。


Servlet是用来和JSP进行通信的文件,Servelt与JSP关系


工作流程文字描述:

第一步:进入登录页面login.jsp,输入账号和密码

第二步:进入账号密码验证程序ValidateTest.java,验证成功后进入第三步,验证失败返回第一步

第三步:先进入控制系统页面ControlTest.jsp,然后再进入创建服务器并等待客户端的连接请求SocketTest.java,若有客户端连接成功,则进入第四步,若一直没有客户端连接请求,则一直在这里等待客户端的连接,直至人为终止程序

第四步:点击控制按钮,向客户端发送数据

第五步:客户端即工作在透传模式下的ESP8266把收到的数据传递给STM32

第六步:STM32解析并处理数据


首先运行第一个登录页面:

login.jsp


<%@ page language="java" contentType="text/html; charset=utf-8"

    pageEncoding="utf-8"%>

登录

   

Login

   

   

   

   

   

   

   

   

   

   

   

   

   

   



运行结果:

在这里插入图片描述

输入账号密码之后,数据会通过

这句话来进行相应的跳转,action后面的参数就是指的是要把用户输入的账号和密码传输到哪一个程序中执行,method后面的参数是指采用哪种传输方式,传输方式有post和get。

ValidateTest.java


package servlet;


import java.io.IOException;

import java.io.PrintWriter;


import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


/**

 * Servlet implementation class LoginServlet

 */

//@WebServlet是采用注入的方式表示这是一个Servlet类,采用此方法比较方便,因为此方法不用再去配置web.xml文件

@WebServlet("/ValidateTest")

public class ValidateTest extends HttpServlet {

private static final long serialVersionUID = 1L;

       

    /**

     * @see HttpServlet#HttpServlet()

     */

    public ValidateTest() {

        super();

        // TODO Auto-generated constructor stub

    }


/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

    //doGet响应get请求,doPost响应post请求,为了保证不管在login.jsp中选择post方法还是get方法,在这里都能有所回应,所以

    //这里只在doPost中写相应的代码,而在doGet中直接调用doPost函数即可

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request, response);

// response.getWriter().append(info);

}


private void alert(String string) {

// TODO Auto-generated method stub

}


/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

//从login页面中获取用户名和密码

String name = request.getParameter("Username");

String password = request.getParameter("password");

response.setCharacterEncoding("utf-8");

response.setContentType("text/html");

if(name == null || password == null || name.equals("") || password.equals("")) {

response.getWriter().append("账号/密码不能为空");

return;

}else {

if(name.equals("asddssdf") && password.equals("sdjfhjhffjshbfgk")) {

RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/ControlTest.jsp");//这句话的意思是当验证账号密码都正确后,要继续跳转到哪一个页面,这里是跳转到ControlTest页面

dispatcher.forward(request, response);

SocketTest.getSocket();//这句话是用来创建一个服务器等待客户端(连接在STM32上的8266)的连接,连接成功后生成一个Socket用来双方的通信。注意创建Socket以及等待客户端连接一定要在页面跳转到控制页面之后进行,因为等待客户端连接是一个阻塞函数,程序会一直死在那里等待客户端的连接

}else {

//response.sendRedirect("login.jsp");//直接重定向到登录页面,无任何提示信息

//有登录失败的提示信息,但是跳到了一个新页面,点击确定之后重新回到登录页面回到指定页面

PrintWriter out = response.getWriter();

out.print("");

}

}

}

}


ControlTest.jsp


<%@ page language="java" contentType="text/html; charset=utf-8"

    pageEncoding="utf-8"%>

控制系统

这里是控制系统

   

 

上一篇:STM32F103C8T6引脚功能分布
下一篇:STM32 ESP8266和Java服务器透传模式下的双向通信

推荐阅读最新更新时间:2024-11-06 10:47

STM32 can 实例代码
#include sysdef.h #define MAX_MAIL_NUM 3 //CAN总线调试:0=运行 1=自环调试 #define CAN_DEBUG 0 //CAN总线波特率:0=250kbps,1=500kbps,2=1Mbps #define CAN1_BPS 0 unsigned char can1_addr = 0; unsigned short Can1_Tx_Count =0; unsigned short Can1_Rx_Count =0; unsigned short Can1_Send_Delay =0; unsigned char Can1_Send_Buf ={0xe
[单片机]
STM32 SYSTICK寄存器详解、描述
********************************************************************************************************/ #include stm32f10x_lib.h /*************************************函数声明**********************************/ void SysTick_Config(void);//SysTick定时器配置 void Delay_Ms(u32);//定时时间配置 void TimingDelay_Decrement(void);//中断定时时
[单片机]
基于STM32的便携式人机界面系统
在全站仪应用于飞机的测量过程中,常会涉及到计算,以满足不同的应用环境与测量要求,以往的方式是测量后期编辑软件在计算机上实现,现代测量迫切需要一种便携式手持计算系统,来完成实时的测量要求,而这一系统中中文人机界面成为一种事实上的行业标准。实现显示汉字的TFT液晶和可输入数字的小键盘已成为智能设备必不可少的组成部分。同时作为便携式设备基本要求的低功耗特性也贯穿于中文人机界面的设计始终。这种低功耗中文人机交互界面需要在选取处理器和具体元器件上有特殊考虑。微功耗、高性能应作为选择相关器件的首要要求。本文选用了意法半导体公司基于ARM最新Cortex—M3内核的STM32F103RB作为主控芯片,通过选择合适的液晶模块,构建了一个高性能低
[单片机]
基于<font color='red'>STM32</font>的便携式人机界面系统
DS18B20温度模块驱动(STM32
一、前期准备 单片机:STM32F103C8T6 开发环境:MDK5.14 库函数:标准库V3.5 DS18B20模块:淘宝有售 二、实验效果 三、驱动原理 看数据手册。 需要完整工程或者有问题的请加QQ:1002521871,验证:呵呵。 四、驱动代码 ds18b20.h #ifndef __DS18B20_H__ #define __DS18B20_H__ #include stm32f10x.h #include gpio.h #include delay.h #define DS18B20_Direction_I {GPIOA- CRL &= 0XFFFFFFF0; GPIOA- CRL |=
[单片机]
DS18B20温度模块驱动(<font color='red'>STM32</font>)
STM32的ETR引脚计数功能
1. 基本介绍 1.1. 开发环境 开发板:WarShip STM32 BOARD V2.1 CPU:STM32F103ZET6 1.2. ETR引脚配置 由上可知,使用STM32的ETR引脚计脉冲数,需将定时器的时钟源选择为外部时钟模式2 选定此模式的方法:令TIMx_SMCR寄存器中的ECE=1 计数器能够在外部触发ETR的每一个上升沿或下降沿计数 例如,要配置在ETR引脚上,每2个上升沿计数一次的向上计数器,使用下列步骤: 1. 本例中不需要滤波器,置TIMx_SMCR寄存器中的ETF =0000 2. 设置预分频器,置TIMx_SMCR寄存器中的ETPS =01 3. 设置在ETR的上升沿检测,
[单片机]
<font color='red'>STM32</font>的ETR引脚计数功能
基于STM32单片机的DLP驱动电路研究
DLP投影技术是应用美国德州仪器公司开发的数字微镜元件--DMD(Digital Micromirror Device)作为主要关键处理元件以实现数字光学处理过程的技术。DLP显示的色彩清晰度高、艳丽、细腻、逼真,且为全数字显示即可靠性极高,能在各类产品(如大屏幕数字电视、公司/家庭/专业会议投影机和数码相机(DLP Cinema))中提供最佳图像效果。目前,大部分的家用或商用DLP投影机都采用了单片结构,使得其便于移动携带,因而得到越来越广泛的应用。在目前应用发展的基础上,又对其结构的精简性、携带的方便性提出了更高的要求。传统的DLP投影仪是通过DVI接口接收外部信号,并且经过信号转换传送给DLP控制器来控制DLP的显示,占用的
[单片机]
基于<font color='red'>STM32</font>单片机的DLP驱动电路研究
STM32接口FSMC/FMC难点详解
STM32F767的FMC将外部存储器划分为6个固定大小的256M的存储区域,如下图 STM32F767的FMC 存储块 1(Bank1 )被分为 4个区,每个区管理64M 字节空间,每个 区都有独立的寄存器对所连接储进行配置。Bank1 的 256M 字节空间由 28 根地址线 根地址线(HADDR )寻址。 这里 HADDR 是内部AHB地址总线,其中地址总线HADDR 来自外部存储器地址FMC_A (FMC_A 会接到外部存储器的地址线上,也就是HADDR内部总线的 来自外部存储器地址线), 而 HADDR 对4个区进行寻址。如表 18.1.2.1所示: 比如外部存储器接到FMC_
[单片机]
<font color='red'>STM32</font>接口FSMC/FMC难点详解
STM32的I2S接口只支持单工模式,使用时要小心
刚开始设计硬件的时候没仔细看手册,想当然,把I2S_SD连接到PCM CODEC输入,MISO连接到CODEC输出,结果做软件的时候遇到麻烦才回头看手册,傻眼了,STM32的I2S数据线只有一根I2S_SD,要么输入,要么输出,跟全双工CODEC没法通讯,这一点跟NXP LPC和比是个很大的败笔。 解决方法(PCM接口模式):将STM32工作在SPI SLAVE方式,MOSI接CODEC输出,MISO接CODEC输入,SCK接BCLK,任意一个PIO作为中断输入与FRAME SYNC连接。 如果想使用DMA,需要将帧频率(采样频率)设置为BCLK的字长倍,比如16bit字长,采样频率8K,则Fsync设置为8K*16=12
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved