小程序JAVA後臺配置[完整]

這裏先明確幾點:

  1. 小程序前後臺是分離的,前臺用微信開發者工具開發,後臺使用自己的技術開發;我這裏用的是JAVA
  2. 剛瞭解到上面那一點的時候,很奇怪,這不是跨域訪問麼?怎麼可以?後來查詢了資料,知道是小程序前臺 —>微信後臺—>你的後臺。
  3. 基於上一點,必然要保證訪問的安全性,所有服務都需要驗證身份,這裏微信提供了用戶登錄機制和驗證機制。

一、微信前臺AJAX

  • 微信封裝了AJAX,官方API文檔有,照樣畫葫蘆就可以了。

/**
   * 生命週期函數--監聽頁面初次渲染完成
   */
  onReady: function () {
    wx.request({
      url: 'http://localhost:8080/wxCode/wx_getDB',
      data: {
        phoneNum: '13738042310'
      },
      method: 'GET',
      header: {
        'content-type': 'application/json' // 默認值
      },
      success: function (res) {
        var data = res.data;
        console.log(data)
      },
      fail: function (res) {
        console.log(".....fail.....");
      }
    })
  },
  • 設置本地測試時,不驗證https和域名,這樣才能先在本地測試(設置——項目設置)。


二、後臺JAVA配置

  • 這裏使用的是struts2框架,myeclipse 2017
  • 需要配置fastjson(阿里json包),sqljdbc4(SQLSERVER JDBC包) ,struts Action映射,tomcat 數據連接池。
  • 測試完成。
  1. 創建一個web項目,直接在項目中右鍵加入struts框架。


      2.網上下載fastjson,sqljdbc4包,導入項目中。

      3.新建一個包與類,最後形成如下目錄,名字自取。


4.配置Action映射,將方法映射成可以訪問的servlet,需要操作struts.xml文件。

     如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<package name="default" namespace="/" extends="struts-default,json-default">
		<action name="wx_*" class="com.rx.action.HelloWorld" method="{1}">
			<result name="success" type="json">
                     <param name="root">data</param>
            </result>
		</action>
	</package>
</struts>    
<package>裏就是配置,這裏直接配置的json數據作爲返回對象,和小程序交流你也用不到界面。繼承struts-default,json-default

<action>中  name就是外部鏈接地址的訪問對象: http://localhost:8080/項目名/wx_方法名,這裏用了映射,wx_加上方法名就可以直接訪問指定的方法。配置這一條就夠用了。

<action>中  class指定包;

<result>內部如上就行了,data是參數名。

5.配置tomcat數據連接池。

  • 打開項目空間內,tomcat服務配置。

  • 配置context.xml,尾行前加入

 <Resource 
	name="jdbc/DBNAME" 
	auth="Container" 
	type="javax.sql.DataSource" 
	driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
	url="jdbc:sqlserver://localhost:1533;DatabaseName=DBNAME" 
	username="sa" 
	password="123456" 
	maxActive="10" 
	maxIdle="5"/>
  • 配置web.xml

<resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/DBNAME(與context中name相對應)</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>
  • 編寫後臺文件HelloWord

	public String data="";  //返回參數data,與context中配置名相同
	
	@Override
	public String execute () throws Exception{
			System.out.println("正在執行Action!");
			return SUCCESS;
	}
	
	
	public String getDB() throws SQLException{
		 Connection dbConn=null;
		 String username="";
		 try {
			      HttpServletRequest request = ServletActionContext.getRequest();  //獲取請求頭
				 String phoneNum=(String)request.getParameter("phoneNum");   //獲取參數phoneNum與微信前臺傳入參數
          System.out.println("獲取參數手機號:"+phoneNum);
         Context ctx=new InitialContext();
				 DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/DNAME");
				 dbConn=ds.getConnection();
                                 //以上獲取context中配置的數據庫連接
           System.out.println("成功連接數據庫");
           String sql="select * from app_user where sjh= ?";
				 PreparedStatement pstmt = dbConn.prepareStatement(sql);
				 pstmt.setString(1, phoneNum);
				 ResultSet rs =  pstmt.executeQuery();
				 while(rs.next()){
					 username=rs.getString("yhm");
				 }
                                 //以上根據手機號獲取姓名 (JDBC)
               } catch (Exception e) {

		 e.printStackTrace();

		 }finally{
			 dbConn.close();
		 }

		 JSONObject obj=new JSONObject(); 
		 obj.put("name", username);
		 data=obj.toString();
               //以上將值賦予data,返回成功。
                return SUCCESS;
	}
	
6.測試

     前臺成功根據手機號讀出用戶名:

     後臺成功獲取參數,並連接數據庫

7.總結

主要就是配置了servlet和數據庫連接池,還有針對小程序的一些特殊點;

如果是自己本來就做java web項目,這種後臺估計都不用配了。這部分內容對於前端比較陌生,所以這裏寫一下。

如有錯誤和改進,請提出,謝了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章