小程序+servlet+mysql进行前后台交互

小程序+servlet+mysql进行前后台交互

1、小程序前端工具:微信开发者工具(主要完成小程序前端的开发,主要包括页面、按钮、事件等)

2、小程序使用vant组件,在美观的基础上极大的提高了开发的便意程度

3、小程序后台主要是java语言编写,通过servlet以及数据库mysql对小程序进行后台的相应管理(数据库可视化软件使用的是navicat)

微信开发工具

1、首先,打开开发者工具,写一个按钮并绑定一个事件houduanRequest
在这里插入图片描述在这里插入图片描述

2、在js文件中定义事件houduanRequest并对事件进行配置



//index.js

const app = getApp()     //通过getApp获取全局对象,然后进行全局变量和全局方法的使用。

 

Page({

  data: {

    list:[],

    goodsID:1,

    username:'admin',

    password:'123456'

  },                     //data主要是定义值

  houduanRequest:function(){

    var that = this;

    wx.request({

      url: 'http://localhost:8888/putong/test2',

      data: {

        GoodsID:
that.data.goodsID,

        username: that.data.username,

        password: that.data.password

      },    


       method: 'GET',

      header: {

        'content-type': 'application/json' // 默认值

      },

      success: function (req) {

        var list2= req.data;

        if (list2 == null) {

          wx.showToast({

            title: 'ErrorMessage',

            icon: 'false',   //图标

            duration: 1500  //提示的延迟的时间

          })

        }
else {

          that.setData({

            list: list2

          })

        }

      }

    })

  },

 

  onLoad: function() {

    

  }, 

 

})


3、打开eclipse并新建工程(动态工程),主要使用的doGet方法进行值的传递

在这里插入图片描述

在src下建立新的package以及相应的servlet文件

新建一个DBTools包,并新建class文件tools 作为调用数据库的工具类
在这里插入图片描述

4、工具类代码(有些多余代码,没有删除,分享给大家,主要是数据库增删改查),配置时注意相应的DRIVER、URL、USER、PWD相应的修改。



package tools;

 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

 

public class DBTools {

       

       privatestatic Connection conn=null;        //数据库连接对象

       private Statement stmt=null;                           //数据库语句对象

       private ResultSet rs=null;                                 //数据库结果集对象

       private static final String DRIVER="com.mysql.jdbc.Driver";

       private static final String
URL="jdbc:mysql://localhost:3306/ty45?characterEncoding=utf8&useSSL=true";

       private
static final String USER="root";

       private
static final String PWD="shxt";

       

       private
static DBTools db=null;

       

       //单例模式(保障内存中只有一个db对象存在)

       public
static DBTools getDB() {

              if(db
== null) {

                     db
= new DBTools();

              }

              return
db;

       }

       

       //构造方法

       private
DBTools() {

              //什么也不用写

       }

       

       

       

       //加载驱动,获得连接方法

       public
static Connection getConn() {

              try
{

                     Class.forName(DRIVER);

                     try
{

                            conn=DriverManager.getConnection(URL,
USER, PWD);

                     }
catch (SQLException e) {

                            e.printStackTrace();

                     }

              }
catch (ClassNotFoundException e) {

                     e.printStackTrace();

              }

              return
conn;

       }

       

       //处理增删改操作的方法

       public
int update(String sql) {

              int
num=0;

              conn=getConn();

              try
{

                     stmt=conn.createStatement();

                     num=stmt.executeUpdate(sql);

              }
catch (SQLException e) {

                     e.printStackTrace();

              }

              return
num;

       }

       

       //处理查询操作的方法

       public
ResultSet query(String sql) {

              conn=getConn();

              try
{

                     stmt=conn.createStatement();

                     rs=stmt.executeQuery(sql);

              }
catch (SQLException e) {

                     e.printStackTrace();

              }

              return
rs;

       }

       

       //释放资源方法

       public
void close() {

              if(rs
!= null) {

                     try
{

                            rs.close();

                     }
catch (SQLException e) {

                            e.printStackTrace();

                     }

              }

              if(stmt
!= null) {

                     try
{

                            stmt.close();

                     }
catch (SQLException e) {

                            e.printStackTrace();

                     }

              }

              if(conn
!= null) {

                     try
{

                            conn.close();

                     }
catch (SQLException e) {

                            e.printStackTrace();

                     }

              }

       }

}

5、jar包的导入,主要应用到的jar包有:
在这里插入图片描述

数据库jar包网上就可下载。

6、tomcat服务器的配置:

下载tomcat并配置部署,具体百度就可,再次不做赘述。

在这里插入图片描述

7、小程序主要是通过API连接eclipse中的servlet然后调用数据库,并把数据库的表中的数据显示在开发者平台中,实现小程序前后端的互连。

Servlet代码:



protected 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 username = request.getParameter("username");

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

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

           
System.out.println("username="+username+" ,password="+password);

           
System.out.println("GoodsID="+GoodsID);

           
String sql="SELECT id,stuname,stusex,stuage FROM
student ";

           DBTools db=DBTools.getDB();

           ResultSet rs=db.query(sql);

            

           

           try {

               Writer out = response.getWriter(); 

                out.write(a(rs));

                out.flush();

           } catch (Exception e) {

               // TODO: handle exception

           }

           db.close();

           


    }

把resultset结果集转换成json文件并回传给小程序,我试验了很多方法,最后确认了这个函数:

public
String a(ResultSet rs) throws SQLException {

 

           


             
//   ResultSet rs = st.executeQuery(sql);

 

                
ResultSetMetaData rsmd = rs.getMetaData();

 

                
int colnum = rsmd.getColumnCount();

 

                
String val = "";

 

                
String colName = "";

 

               


 

                
JSONArray jArr = new JSONArray();

 

                


 

                
while(rs.next()) {

 

                     for(int i = 1; i<= colnum; i++) {

 

                       JSONObject jobj = new JSONObject();

 

                         colName = rsmd.getColumnLabel(i);

 

                         if(1==i) {

 

                             val = new Integer(rs.getInt(colName)).toString();

 

                         }else {

 

                             val = rs.getString(colName);

 

                         }

 

                         

 

                         try {

 

                             jobj.put(colName, val);

 

                             

 

                         } catch (JSONException e) {

 

                             // TODO Auto-generated catch block

 

                             e.printStackTrace();

 

                         }   

 

                         jArr.add(jobj);    

 

                     }

 

                    

 

                
}

 

             


 

             
return 
jArr.toString();

 

                


 

          

 

         }

函数的使用会伴随着很多jar包的调用,通过不断尝试,纠正bug,最终确定了使用resultset结果集转换json文件的必备六个jar包,只要导入就可以使用:
在这里插入图片描述

使用这些jar包便不用其他的json相关包,可以有效避免相关错误,相关的很多错误都是因为包的原因,最主要的就是包的冲突问题,使用这六个jar包,可以有效避免相关错误(ps:放在web-inf目录的lib文件夹下,并buind
path 添加到tomcat中)

8、打开navicat并选择事先准备的表(前边的sql语句中的表就是我们要调用的数据库表,下边是结果)

在这里插入图片描述

只调用三个字段:

在这里插入图片描述
在这里插入图片描述

尝试在.wxss中对显示的样式布局进行配置,但是时间匆忙,没有修改完善。

第一次发文章,希望大家以后多多支持,如果过段时间可以发网盘,我把那六个jar包发给大家,如果有急需的也可以戳我。

发布了4 篇原创文章 · 获赞 4 · 访问量 145

猜你喜欢

转载自blog.csdn.net/jordan_wzg/article/details/104111066