关于微信小程序Tomcat服务器后端程序搭建

关于Tomcat服务器小程序Java后端搭建

微信小程序采用的向服务器发送请求的api可以先看一下
wx.request(OBJECT)
发起网络请求。
这里重点关注data和url以及datatype

参数名类型必填 默认值说明
urlString开发者服务器接口地址
dataObject/String请求的参数
headerObject设置请求的 header,header 中不能设置 Referer。
methodStringGET
dataTypeStringjson
successFunction收到开发者服务成功返回的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

- 先写小程序的向服务器请求的js

// pages/message/message.js



Page({//主要是测试服务器通信的request
  Buttonrequest: function () {
    wx.request({
      url: 'https://xxxxxxxxxxxx',//先不写
      data: {
        message: 'ty is the The most handsome man in the ESTA',
      },
      method: 'GET',
      header: {
        'content-type': 'application/json' // 默认值
      },
      success: function (res) {
        console.log(res.data);//回调函数中的携带服务器响应数据
      },
      fail: function (res) {
        console.log("fail to connect");
      }
    })
  }
})

关于页面的代码没有进行布局重点不在这看代码哈

<!--pages/message/message.wxml-->
<text>我用按钮绑定了一个向服务器发起请求的时间</text>

  <view>
  <button bindtap='Buttonrequest'>CClickme</button>
  </view>

这里写图片描述

然后开始部署服务器端,主要是写一个容器来接受小程序向服务器端的请求和返回服务器对其请求的响应,编写Servlet:

import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Servlet_test extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //这里代码一般是固定
        response.setContentType("text/html;charset=utf-8");          
        // 设置响应头允许ajax跨域访问  
        response.setHeader("Access-Control-Allow-Origin", "*");  
        // 星号表示所有的异域请求都可以接受  
        response.setHeader("Access-Control-Allow-Methods", "GET,POST");  

        //获取微信小程序get的参数值并打印
        String message = request.getParameter("message");
        System.out.println("message="+message);


        //返回值给微信小程序
        Writer out = response.getWriter(); 
        out.write("你说的很对"+"message="+message);
        out.flush();   
    }

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

    }

}

我们先小小的测试下
这里写图片描述
服务器打在控制台是乱码
我们再看看那个小程序的console工作台的状况发现是下面这样
这里写图片描述
Emmm

接下来我们冷静分析一波

一般来说Servlet编写的程序出现乱码
需要我们从请求来到响应来捋一下
比如说从小程序发来的请求
对于get请求方式,Tomcat服器一般用ISO解码,然而我们的请求内容包含有中文的,这就对这种编码很不友好。

理论上,我们也只需要告诉服务器以UTF-8的方式解码即可,但不幸的是,它不允许我们以编写代码的方式来更改服务器的解码方式,只能通过修改服务器的配置文件,具体操作就是,在服务器的conf目录下的server.xml文件中找到
但是我没有采用这种方法,我个人喜欢通过程序来解决问题,我将编码部分改成了:

 String Ustr = new String(request.getParameter("message").getBytes("ISO-8859-1"), "UTF-8");
 //获取微信小程序get的参数值并打印
 System.out.println("message="+Ustr);  
 //返回值给微信小程序
 Writer out = response.getWriter(); 
 out.write("你说的很对"+"message="+Ustr);
 out.flush();   

通过程序来告诉服务器,你,对我的请求,就应该这样解码按照utf-8的来

结果我们的中文乱码问题的到解决
eclipse工作台
小程序控制台
这样我们完成了服务器端与客户端的一次小通信
大体思路是
js 通过url向Servlet访问并请求然后servlet处理请求,返回给小程序中success/fail回调函数

关于云服务器配置调试:

大家如果想在公网上使用自己的服务器来作为请求对象,需要先将自己的域名访问配成https
具体,我试了一下,没有坑,腾讯云官网上配制方法,只要乖就能配置成功的。

  • 11
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值